You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2015/12/03 03:33:39 UTC
[07/51] [partial] ios commit: CB-9827 Implement and expose
PlatformApi for iOS
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/unorm/package.json
----------------------------------------------------------------------
diff --git a/bin/node_modules/unorm/package.json b/bin/node_modules/unorm/package.json
new file mode 100644
index 0000000..a39446a
--- /dev/null
+++ b/bin/node_modules/unorm/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "unorm",
+ "version": "1.4.1",
+ "description": "JavaScript Unicode 8.0 Normalization - NFC, NFD, NFKC, NFKD. Read <http://unicode.org/reports/tr15/> UAX #15 Unicode Normalization Forms.",
+ "author": {
+ "name": "Bjarke Walling",
+ "email": "bwp@bwp.dk"
+ },
+ "license": "MIT or GPL-2.0",
+ "contributors": [
+ {
+ "name": "Bjarke Walling",
+ "email": "bwp@bwp.dk"
+ },
+ {
+ "name": "Oleg Grenrus",
+ "email": "oleg.grenrus@iki.fi"
+ },
+ {
+ "name": "Matsuza",
+ "email": "matsuza@gmail.com"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "http://github.com/walling/unorm.git"
+ },
+ "main": "./lib/unorm.js",
+ "engines": {
+ "node": ">= 0.4.0"
+ },
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "benchmark": "~1.0.0",
+ "unorm": "1.4.1",
+ "grunt-contrib-jshint": "~0.8.0",
+ "grunt-contrib-watch": "~0.5.0",
+ "grunt-simple-mocha": "~0.4.0",
+ "grunt": "~0.4.1"
+ },
+ "gitHead": "e802d0d7844cf74b03742bce1147a82ace218396",
+ "bugs": {
+ "url": "https://github.com/walling/unorm/issues"
+ },
+ "homepage": "https://github.com/walling/unorm",
+ "_id": "unorm@1.4.1",
+ "_shasum": "364200d5f13646ca8bcd44490271335614792300",
+ "_from": "unorm@",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "walling",
+ "email": "bwp@bwp.dk"
+ },
+ "maintainers": [
+ {
+ "name": "walling",
+ "email": "bwp@bwp.dk"
+ }
+ ],
+ "dist": {
+ "shasum": "364200d5f13646ca8bcd44490271335614792300",
+ "tarball": "http://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/.npmignore
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/.npmignore b/bin/node_modules/xcode/.npmignore
new file mode 100644
index 0000000..65e3ba2
--- /dev/null
+++ b/bin/node_modules/xcode/.npmignore
@@ -0,0 +1 @@
+test/
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/AUTHORS
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/AUTHORS b/bin/node_modules/xcode/AUTHORS
new file mode 100644
index 0000000..dcef29f
--- /dev/null
+++ b/bin/node_modules/xcode/AUTHORS
@@ -0,0 +1,6 @@
+Andrew Lunny (@alunny)
+Anis Kadri (@imhotep)
+Mike Reinstein (@mreinstein)
+Filip Maj (@filmaj)
+Brett Rudd (@goya)
+Bob Easterday (@bobeast)
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/LICENSE
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/LICENSE b/bin/node_modules/xcode/LICENSE
new file mode 100644
index 0000000..45f03a3
--- /dev/null
+++ b/bin/node_modules/xcode/LICENSE
@@ -0,0 +1,14 @@
+ Copyright 2012 Andrew Lunny, Adobe Systems
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/Makefile
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/Makefile b/bin/node_modules/xcode/Makefile
new file mode 100644
index 0000000..f838310
--- /dev/null
+++ b/bin/node_modules/xcode/Makefile
@@ -0,0 +1,5 @@
+tests:
+ nodeunit test/* test/parser/*
+
+parser:
+ pegjs lib/parser/pbxproj.pegjs
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/README.md
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/README.md b/bin/node_modules/xcode/README.md
new file mode 100644
index 0000000..fe902ad
--- /dev/null
+++ b/bin/node_modules/xcode/README.md
@@ -0,0 +1,42 @@
+# node-xcode
+
+> parser/toolkit for xcodeproj project files
+
+Allows you to edit xcodeproject files and write them back out.
+
+## Example
+
+ // API is a bit wonky right now
+ var xcode = require('xcode'),
+ fs = require('fs'),
+ projectPath = 'myproject.xcodeproj/project.pbxproj',
+ myProj = xcode.project(projectPath);
+
+ // parsing is async, in a different process
+ myProj.parse(function (err) {
+ myProj.addHeaderFile('foo.h');
+ myProj.addSourceFile('foo.m');
+ myProj.addFramework('FooKit.framework');
+
+ fs.writeFileSync(projectPath, myProj.writeSync());
+ console.log('new project written');
+ });
+
+## Working on the parser
+
+If there's a problem parsing, you will want to edit the grammar under
+`lib/parser/pbxproj.pegjs`. You can test it online with the PEGjs online thingy
+at http://pegjs.majda.cz/online - I have had some mixed results though.
+
+Tests under the `test/parser` directory will compile the parser from the
+grammar. Other tests will use the prebuilt parser (`lib/parser/pbxproj.js`).
+
+To rebuild the parser js file after editing the grammar, run:
+
+ ./node_modules/.bin/pegjs lib/parser/pbxproj.pegjs
+
+(easier if `./node_modules/.bin` is in your path)
+
+## License
+
+MIT
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/index.js
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/index.js b/bin/node_modules/xcode/index.js
new file mode 100644
index 0000000..c593bb8
--- /dev/null
+++ b/bin/node_modules/xcode/index.js
@@ -0,0 +1 @@
+exports.project = require('./lib/pbxProject')
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/lib/parseJob.js
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/lib/parseJob.js b/bin/node_modules/xcode/lib/parseJob.js
new file mode 100644
index 0000000..9d6bffa
--- /dev/null
+++ b/bin/node_modules/xcode/lib/parseJob.js
@@ -0,0 +1,15 @@
+// parsing is slow and blocking right now
+// so we do it in a separate process
+var fs = require('fs'),
+ parser = require('./parser/pbxproj'),
+ path = process.argv[2],
+ fileContents, obj;
+
+try {
+ fileContents = fs.readFileSync(path, 'utf-8');
+ obj = parser.parse(fileContents);
+ process.send(obj);
+} catch (e) {
+ process.send(e);
+ process.exitCode = 1;
+}
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/lib/parser/pbxproj.js
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/lib/parser/pbxproj.js b/bin/node_modules/xcode/lib/parser/pbxproj.js
new file mode 100644
index 0000000..f574479
--- /dev/null
+++ b/bin/node_modules/xcode/lib/parser/pbxproj.js
@@ -0,0 +1,1843 @@
+module.exports = (function() {
+ /*
+ * Generated by PEG.js 0.8.0.
+ *
+ * http://pegjs.majda.cz/
+ */
+
+ function peg$subclass(child, parent) {
+ function ctor() { this.constructor = child; }
+ ctor.prototype = parent.prototype;
+ child.prototype = new ctor();
+ }
+
+ function SyntaxError(message, expected, found, offset, line, column) {
+ this.message = message;
+ this.expected = expected;
+ this.found = found;
+ this.offset = offset;
+ this.line = line;
+ this.column = column;
+
+ this.name = "SyntaxError";
+ }
+
+ peg$subclass(SyntaxError, Error);
+
+ function parse(input) {
+ var options = arguments.length > 1 ? arguments[1] : {},
+
+ peg$FAILED = {},
+
+ peg$startRuleFunctions = { Project: peg$parseProject },
+ peg$startRuleFunction = peg$parseProject,
+
+ peg$c0 = peg$FAILED,
+ peg$c1 = null,
+ peg$c2 = function(headComment, obj) {
+ var proj = Object.create(null)
+ proj.project = obj
+
+ if (headComment) {
+ proj.headComment = headComment
+ }
+
+ return proj;
+ },
+ peg$c3 = "{",
+ peg$c4 = { type: "literal", value: "{", description: "\"{\"" },
+ peg$c5 = "}",
+ peg$c6 = { type: "literal", value: "}", description: "\"}\"" },
+ peg$c7 = function(obj) { return obj },
+ peg$c8 = function() { return Object.create(null) },
+ peg$c9 = [],
+ peg$c10 = function(head, tail) {
+ if (tail) return merge(head,tail)
+ else return head
+ },
+ peg$c11 = function(head, tail) {
+ if (tail) return merge(head,tail)
+ else return head
+ },
+ peg$c12 = "=",
+ peg$c13 = { type: "literal", value: "=", description: "\"=\"" },
+ peg$c14 = ";",
+ peg$c15 = { type: "literal", value: ";", description: "\";\"" },
+ peg$c16 = function(id, val) {
+ var result = Object.create(null);
+ result[id] = val
+ return result
+ },
+ peg$c17 = function(commentedId, val) {
+ var result = Object.create(null),
+ commentKey = commentedId.id + '_comment';
+
+ result[commentedId.id] = val;
+ result[commentKey] = commentedId[commentKey];
+ return result;
+
+ },
+ peg$c18 = function(id, commentedVal) {
+ var result = Object.create(null);
+ result[id] = commentedVal.value;
+ result[id + "_comment"] = commentedVal.comment;
+ return result;
+ },
+ peg$c19 = function(id, comment) {
+ var result = Object.create(null);
+ result.id = id;
+ result[id + "_comment"] = comment.trim();
+ return result
+ },
+ peg$c20 = function(literal, comment) {
+ var result = Object.create(null)
+ result.comment = comment.trim();
+ result.value = literal.trim();
+ return result;
+ },
+ peg$c21 = /^[^*]/,
+ peg$c22 = { type: "class", value: "[^*]", description: "[^*]" },
+ peg$c23 = function(body) { return body.join('') },
+ peg$c24 = "/*",
+ peg$c25 = { type: "literal", value: "/*", description: "\"/*\"" },
+ peg$c26 = "*/",
+ peg$c27 = { type: "literal", value: "*/", description: "\"*/\"" },
+ peg$c28 = function(begin, fields) {
+ var section = Object.create(null);
+ section[begin.name] = fields
+
+ return section
+ },
+ peg$c29 = "/* Begin ",
+ peg$c30 = { type: "literal", value: "/* Begin ", description: "\"/* Begin \"" },
+ peg$c31 = " section */",
+ peg$c32 = { type: "literal", value: " section */", description: "\" section */\"" },
+ peg$c33 = function(sectionName) { return { name: sectionName } },
+ peg$c34 = "/* End ",
+ peg$c35 = { type: "literal", value: "/* End ", description: "\"/* End \"" },
+ peg$c36 = "(",
+ peg$c37 = { type: "literal", value: "(", description: "\"(\"" },
+ peg$c38 = ")",
+ peg$c39 = { type: "literal", value: ")", description: "\")\"" },
+ peg$c40 = function(arr) { return arr },
+ peg$c41 = function() { return [] },
+ peg$c42 = function(head, tail) {
+ if (tail) {
+ tail.unshift(head);
+ return tail;
+ } else {
+ return [head];
+ }
+ },
+ peg$c43 = function(val) { return val },
+ peg$c44 = function(val, comment) {
+ var result = Object.create(null);
+ result.value = val.trim();
+ result.comment = comment.trim();
+ return result;
+ },
+ peg$c45 = ",",
+ peg$c46 = { type: "literal", value: ",", description: "\",\"" },
+ peg$c47 = void 0,
+ peg$c48 = /^[A-Za-z0-9_.]/,
+ peg$c49 = { type: "class", value: "[A-Za-z0-9_.]", description: "[A-Za-z0-9_.]" },
+ peg$c50 = function(id) { return id.join('') },
+ peg$c51 = ".",
+ peg$c52 = { type: "literal", value: ".", description: "\".\"" },
+ peg$c53 = function(decimal) {
+ // store decimals as strings
+ // as JS doesn't differentiate bw strings and numbers
+ return decimal.join('')
+ },
+ peg$c54 = function(number) { return parseInt(number.join(''), 10) },
+ peg$c55 = function(str) { return '"' + str + '"' },
+ peg$c56 = function(str) { return str.join('') },
+ peg$c57 = { type: "any", description: "any character" },
+ peg$c58 = function(char) { return char },
+ peg$c59 = "\\",
+ peg$c60 = { type: "literal", value: "\\", description: "\"\\\\\"" },
+ peg$c61 = function() { return '\\"' },
+ peg$c62 = function(literal) { return literal.join('') },
+ peg$c63 = /^[^;,\n]/,
+ peg$c64 = { type: "class", value: "[^;,\\n]", description: "[^;,\\n]" },
+ peg$c65 = "//",
+ peg$c66 = { type: "literal", value: "//", description: "\"//\"" },
+ peg$c67 = function(contents) { return contents },
+ peg$c68 = function(contents) { return contents.join('') },
+ peg$c69 = /^[0-9]/,
+ peg$c70 = { type: "class", value: "[0-9]", description: "[0-9]" },
+ peg$c71 = /^[A-Za-z]/,
+ peg$c72 = { type: "class", value: "[A-Za-z]", description: "[A-Za-z]" },
+ peg$c73 = "\"",
+ peg$c74 = { type: "literal", value: "\"", description: "\"\\\"\"" },
+ peg$c75 = { type: "other", description: "whitespace" },
+ peg$c76 = /^[\t ]/,
+ peg$c77 = { type: "class", value: "[\\t ]", description: "[\\t ]" },
+ peg$c78 = /^[\n\r]/,
+ peg$c79 = { type: "class", value: "[\\n\\r]", description: "[\\n\\r]" },
+
+ peg$currPos = 0,
+ peg$reportedPos = 0,
+ peg$cachedPos = 0,
+ peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },
+ peg$maxFailPos = 0,
+ peg$maxFailExpected = [],
+ peg$silentFails = 0,
+
+ peg$result;
+
+ if ("startRule" in options) {
+ if (!(options.startRule in peg$startRuleFunctions)) {
+ throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
+ }
+
+ peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
+ }
+
+ function text() {
+ return input.substring(peg$reportedPos, peg$currPos);
+ }
+
+ function offset() {
+ return peg$reportedPos;
+ }
+
+ function line() {
+ return peg$computePosDetails(peg$reportedPos).line;
+ }
+
+ function column() {
+ return peg$computePosDetails(peg$reportedPos).column;
+ }
+
+ function expected(description) {
+ throw peg$buildException(
+ null,
+ [{ type: "other", description: description }],
+ peg$reportedPos
+ );
+ }
+
+ function error(message) {
+ throw peg$buildException(message, null, peg$reportedPos);
+ }
+
+ function peg$computePosDetails(pos) {
+ function advance(details, startPos, endPos) {
+ var p, ch;
+
+ for (p = startPos; p < endPos; p++) {
+ ch = input.charAt(p);
+ if (ch === "\n") {
+ if (!details.seenCR) { details.line++; }
+ details.column = 1;
+ details.seenCR = false;
+ } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
+ details.line++;
+ details.column = 1;
+ details.seenCR = true;
+ } else {
+ details.column++;
+ details.seenCR = false;
+ }
+ }
+ }
+
+ if (peg$cachedPos !== pos) {
+ if (peg$cachedPos > pos) {
+ peg$cachedPos = 0;
+ peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };
+ }
+ advance(peg$cachedPosDetails, peg$cachedPos, pos);
+ peg$cachedPos = pos;
+ }
+
+ return peg$cachedPosDetails;
+ }
+
+ function peg$fail(expected) {
+ if (peg$currPos < peg$maxFailPos) { return; }
+
+ if (peg$currPos > peg$maxFailPos) {
+ peg$maxFailPos = peg$currPos;
+ peg$maxFailExpected = [];
+ }
+
+ peg$maxFailExpected.push(expected);
+ }
+
+ function peg$buildException(message, expected, pos) {
+ function cleanupExpected(expected) {
+ var i = 1;
+
+ expected.sort(function(a, b) {
+ if (a.description < b.description) {
+ return -1;
+ } else if (a.description > b.description) {
+ return 1;
+ } else {
+ return 0;
+ }
+ });
+
+ while (i < expected.length) {
+ if (expected[i - 1] === expected[i]) {
+ expected.splice(i, 1);
+ } else {
+ i++;
+ }
+ }
+ }
+
+ function buildMessage(expected, found) {
+ function stringEscape(s) {
+ function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
+
+ return s
+ .replace(/\\/g, '\\\\')
+ .replace(/"/g, '\\"')
+ .replace(/\x08/g, '\\b')
+ .replace(/\t/g, '\\t')
+ .replace(/\n/g, '\\n')
+ .replace(/\f/g, '\\f')
+ .replace(/\r/g, '\\r')
+ .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
+ .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); })
+ .replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); })
+ .replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); });
+ }
+
+ var expectedDescs = new Array(expected.length),
+ expectedDesc, foundDesc, i;
+
+ for (i = 0; i < expected.length; i++) {
+ expectedDescs[i] = expected[i].description;
+ }
+
+ expectedDesc = expected.length > 1
+ ? expectedDescs.slice(0, -1).join(", ")
+ + " or "
+ + expectedDescs[expected.length - 1]
+ : expectedDescs[0];
+
+ foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input";
+
+ return "Expected " + expectedDesc + " but " + foundDesc + " found.";
+ }
+
+ var posDetails = peg$computePosDetails(pos),
+ found = pos < input.length ? input.charAt(pos) : null;
+
+ if (expected !== null) {
+ cleanupExpected(expected);
+ }
+
+ return new SyntaxError(
+ message !== null ? message : buildMessage(expected, found),
+ expected,
+ found,
+ pos,
+ posDetails.line,
+ posDetails.column
+ );
+ }
+
+ function peg$parseProject() {
+ var s0, s1, s2, s3, s4, s5, s6;
+
+ s0 = peg$currPos;
+ s1 = peg$parseSingleLineComment();
+ if (s1 === peg$FAILED) {
+ s1 = peg$c1;
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseInlineComment();
+ if (s2 === peg$FAILED) {
+ s2 = peg$c1;
+ }
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parse_();
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parseObject();
+ if (s4 !== peg$FAILED) {
+ s5 = peg$parseNewLine();
+ if (s5 !== peg$FAILED) {
+ s6 = peg$parse_();
+ if (s6 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c2(s1, s4);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseObject() {
+ var s0, s1, s2, s3;
+
+ s0 = peg$currPos;
+ if (input.charCodeAt(peg$currPos) === 123) {
+ s1 = peg$c3;
+ peg$currPos++;
+ } else {
+ s1 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c4); }
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseAssignmentList();
+ if (s2 === peg$FAILED) {
+ s2 = peg$parseEmptyBody();
+ }
+ if (s2 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 125) {
+ s3 = peg$c5;
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c6); }
+ }
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c7(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseEmptyBody() {
+ var s0, s1;
+
+ s0 = peg$currPos;
+ s1 = peg$parse_();
+ if (s1 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c8();
+ }
+ s0 = s1;
+
+ return s0;
+ }
+
+ function peg$parseAssignmentList() {
+ var s0, s1, s2, s3, s4, s5;
+
+ s0 = peg$currPos;
+ s1 = peg$parse_();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseAssignment();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parse_();
+ if (s3 !== peg$FAILED) {
+ s4 = [];
+ s5 = peg$parseAssignmentList();
+ while (s5 !== peg$FAILED) {
+ s4.push(s5);
+ s5 = peg$parseAssignmentList();
+ }
+ if (s4 !== peg$FAILED) {
+ s5 = peg$parse_();
+ if (s5 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c10(s2, s4);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ if (s0 === peg$FAILED) {
+ s0 = peg$currPos;
+ s1 = peg$parse_();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseDelimitedSection();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parse_();
+ if (s3 !== peg$FAILED) {
+ s4 = [];
+ s5 = peg$parseAssignmentList();
+ while (s5 !== peg$FAILED) {
+ s4.push(s5);
+ s5 = peg$parseAssignmentList();
+ }
+ if (s4 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c11(s2, s4);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ }
+
+ return s0;
+ }
+
+ function peg$parseAssignment() {
+ var s0;
+
+ s0 = peg$parseSimpleAssignment();
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseCommentedAssignment();
+ }
+
+ return s0;
+ }
+
+ function peg$parseSimpleAssignment() {
+ var s0, s1, s2, s3, s4, s5, s6;
+
+ s0 = peg$currPos;
+ s1 = peg$parseIdentifier();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 61) {
+ s3 = peg$c12;
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c13); }
+ }
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parse_();
+ if (s4 !== peg$FAILED) {
+ s5 = peg$parseValue();
+ if (s5 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 59) {
+ s6 = peg$c14;
+ peg$currPos++;
+ } else {
+ s6 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c15); }
+ }
+ if (s6 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c16(s1, s5);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseCommentedAssignment() {
+ var s0, s1, s2, s3, s4, s5, s6;
+
+ s0 = peg$currPos;
+ s1 = peg$parseCommentedIdentifier();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 61) {
+ s3 = peg$c12;
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c13); }
+ }
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parse_();
+ if (s4 !== peg$FAILED) {
+ s5 = peg$parseValue();
+ if (s5 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 59) {
+ s6 = peg$c14;
+ peg$currPos++;
+ } else {
+ s6 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c15); }
+ }
+ if (s6 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c17(s1, s5);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ if (s0 === peg$FAILED) {
+ s0 = peg$currPos;
+ s1 = peg$parseIdentifier();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 61) {
+ s3 = peg$c12;
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c13); }
+ }
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parse_();
+ if (s4 !== peg$FAILED) {
+ s5 = peg$parseCommentedValue();
+ if (s5 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 59) {
+ s6 = peg$c14;
+ peg$currPos++;
+ } else {
+ s6 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c15); }
+ }
+ if (s6 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c18(s1, s5);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ }
+
+ return s0;
+ }
+
+ function peg$parseCommentedIdentifier() {
+ var s0, s1, s2, s3;
+
+ s0 = peg$currPos;
+ s1 = peg$parseIdentifier();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseInlineComment();
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c19(s1, s3);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseCommentedValue() {
+ var s0, s1, s2, s3;
+
+ s0 = peg$currPos;
+ s1 = peg$parseValue();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseInlineComment();
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c20(s1, s3);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseInlineComment() {
+ var s0, s1, s2, s3;
+
+ s0 = peg$currPos;
+ s1 = peg$parseInlineCommentOpen();
+ if (s1 !== peg$FAILED) {
+ s2 = [];
+ if (peg$c21.test(input.charAt(peg$currPos))) {
+ s3 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c22); }
+ }
+ if (s3 !== peg$FAILED) {
+ while (s3 !== peg$FAILED) {
+ s2.push(s3);
+ if (peg$c21.test(input.charAt(peg$currPos))) {
+ s3 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c22); }
+ }
+ }
+ } else {
+ s2 = peg$c0;
+ }
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseInlineCommentClose();
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c23(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseInlineCommentOpen() {
+ var s0;
+
+ if (input.substr(peg$currPos, 2) === peg$c24) {
+ s0 = peg$c24;
+ peg$currPos += 2;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c25); }
+ }
+
+ return s0;
+ }
+
+ function peg$parseInlineCommentClose() {
+ var s0;
+
+ if (input.substr(peg$currPos, 2) === peg$c26) {
+ s0 = peg$c26;
+ peg$currPos += 2;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c27); }
+ }
+
+ return s0;
+ }
+
+ function peg$parseDelimitedSection() {
+ var s0, s1, s2, s3, s4, s5;
+
+ s0 = peg$currPos;
+ s1 = peg$parseDelimitedSectionBegin();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseAssignmentList();
+ if (s3 === peg$FAILED) {
+ s3 = peg$parseEmptyBody();
+ }
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parse_();
+ if (s4 !== peg$FAILED) {
+ s5 = peg$parseDelimitedSectionEnd();
+ if (s5 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c28(s1, s3);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseDelimitedSectionBegin() {
+ var s0, s1, s2, s3, s4;
+
+ s0 = peg$currPos;
+ if (input.substr(peg$currPos, 9) === peg$c29) {
+ s1 = peg$c29;
+ peg$currPos += 9;
+ } else {
+ s1 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c30); }
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseIdentifier();
+ if (s2 !== peg$FAILED) {
+ if (input.substr(peg$currPos, 11) === peg$c31) {
+ s3 = peg$c31;
+ peg$currPos += 11;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c32); }
+ }
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parseNewLine();
+ if (s4 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c33(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseDelimitedSectionEnd() {
+ var s0, s1, s2, s3, s4;
+
+ s0 = peg$currPos;
+ if (input.substr(peg$currPos, 7) === peg$c34) {
+ s1 = peg$c34;
+ peg$currPos += 7;
+ } else {
+ s1 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c35); }
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseIdentifier();
+ if (s2 !== peg$FAILED) {
+ if (input.substr(peg$currPos, 11) === peg$c31) {
+ s3 = peg$c31;
+ peg$currPos += 11;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c32); }
+ }
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parseNewLine();
+ if (s4 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c33(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseArray() {
+ var s0, s1, s2, s3;
+
+ s0 = peg$currPos;
+ if (input.charCodeAt(peg$currPos) === 40) {
+ s1 = peg$c36;
+ peg$currPos++;
+ } else {
+ s1 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c37); }
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseArrayBody();
+ if (s2 === peg$FAILED) {
+ s2 = peg$parseEmptyArray();
+ }
+ if (s2 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 41) {
+ s3 = peg$c38;
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c39); }
+ }
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c40(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseEmptyArray() {
+ var s0, s1;
+
+ s0 = peg$currPos;
+ s1 = peg$parse_();
+ if (s1 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c41();
+ }
+ s0 = s1;
+
+ return s0;
+ }
+
+ function peg$parseArrayBody() {
+ var s0, s1, s2, s3, s4, s5;
+
+ s0 = peg$currPos;
+ s1 = peg$parse_();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseArrayEntry();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parse_();
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parseArrayBody();
+ if (s4 === peg$FAILED) {
+ s4 = peg$c1;
+ }
+ if (s4 !== peg$FAILED) {
+ s5 = peg$parse_();
+ if (s5 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c42(s2, s4);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseArrayEntry() {
+ var s0;
+
+ s0 = peg$parseSimpleArrayEntry();
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseCommentedArrayEntry();
+ }
+
+ return s0;
+ }
+
+ function peg$parseSimpleArrayEntry() {
+ var s0, s1, s2;
+
+ s0 = peg$currPos;
+ s1 = peg$parseValue();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseEndArrayEntry();
+ if (s2 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c43(s1);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseCommentedArrayEntry() {
+ var s0, s1, s2, s3, s4;
+
+ s0 = peg$currPos;
+ s1 = peg$parseValue();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseInlineComment();
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parseEndArrayEntry();
+ if (s4 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c44(s1, s3);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseEndArrayEntry() {
+ var s0, s1, s2, s3;
+
+ if (input.charCodeAt(peg$currPos) === 44) {
+ s0 = peg$c45;
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c46); }
+ }
+ if (s0 === peg$FAILED) {
+ s0 = peg$currPos;
+ s1 = peg$parse_();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$currPos;
+ peg$silentFails++;
+ if (input.charCodeAt(peg$currPos) === 41) {
+ s3 = peg$c38;
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c39); }
+ }
+ peg$silentFails--;
+ if (s3 !== peg$FAILED) {
+ peg$currPos = s2;
+ s2 = peg$c47;
+ } else {
+ s2 = peg$c0;
+ }
+ if (s2 !== peg$FAILED) {
+ s1 = [s1, s2];
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ }
+
+ return s0;
+ }
+
+ function peg$parseIdentifier() {
+ var s0, s1, s2;
+
+ s0 = peg$currPos;
+ s1 = [];
+ if (peg$c48.test(input.charAt(peg$currPos))) {
+ s2 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s2 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c49); }
+ }
+ if (s2 !== peg$FAILED) {
+ while (s2 !== peg$FAILED) {
+ s1.push(s2);
+ if (peg$c48.test(input.charAt(peg$currPos))) {
+ s2 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s2 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c49); }
+ }
+ }
+ } else {
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c50(s1);
+ }
+ s0 = s1;
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseQuotedString();
+ }
+
+ return s0;
+ }
+
+ function peg$parseValue() {
+ var s0;
+
+ s0 = peg$parseObject();
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseArray();
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseNumberValue();
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseStringValue();
+ }
+ }
+ }
+
+ return s0;
+ }
+
+ function peg$parseNumberValue() {
+ var s0;
+
+ s0 = peg$parseDecimalValue();
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseIntegerValue();
+ }
+
+ return s0;
+ }
+
+ function peg$parseDecimalValue() {
+ var s0, s1, s2, s3, s4;
+
+ s0 = peg$currPos;
+ s1 = peg$currPos;
+ s2 = peg$parseIntegerValue();
+ if (s2 !== peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 46) {
+ s3 = peg$c51;
+ peg$currPos++;
+ } else {
+ s3 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c52); }
+ }
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parseIntegerValue();
+ if (s4 !== peg$FAILED) {
+ s2 = [s2, s3, s4];
+ s1 = s2;
+ } else {
+ peg$currPos = s1;
+ s1 = peg$c0;
+ }
+ } else {
+ peg$currPos = s1;
+ s1 = peg$c0;
+ }
+ } else {
+ peg$currPos = s1;
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c53(s1);
+ }
+ s0 = s1;
+
+ return s0;
+ }
+
+ function peg$parseIntegerValue() {
+ var s0, s1, s2, s3, s4;
+
+ s0 = peg$currPos;
+ s1 = peg$currPos;
+ peg$silentFails++;
+ s2 = peg$parseAlpha();
+ peg$silentFails--;
+ if (s2 === peg$FAILED) {
+ s1 = peg$c47;
+ } else {
+ peg$currPos = s1;
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = [];
+ s3 = peg$parseDigit();
+ if (s3 !== peg$FAILED) {
+ while (s3 !== peg$FAILED) {
+ s2.push(s3);
+ s3 = peg$parseDigit();
+ }
+ } else {
+ s2 = peg$c0;
+ }
+ if (s2 !== peg$FAILED) {
+ s3 = peg$currPos;
+ peg$silentFails++;
+ s4 = peg$parseNonTerminator();
+ peg$silentFails--;
+ if (s4 === peg$FAILED) {
+ s3 = peg$c47;
+ } else {
+ peg$currPos = s3;
+ s3 = peg$c0;
+ }
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c54(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseStringValue() {
+ var s0;
+
+ s0 = peg$parseQuotedString();
+ if (s0 === peg$FAILED) {
+ s0 = peg$parseLiteralString();
+ }
+
+ return s0;
+ }
+
+ function peg$parseQuotedString() {
+ var s0, s1, s2, s3;
+
+ s0 = peg$currPos;
+ s1 = peg$parseDoubleQuote();
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseQuotedBody();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseDoubleQuote();
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c55(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseQuotedBody() {
+ var s0, s1, s2;
+
+ s0 = peg$currPos;
+ s1 = [];
+ s2 = peg$parseNonQuote();
+ if (s2 !== peg$FAILED) {
+ while (s2 !== peg$FAILED) {
+ s1.push(s2);
+ s2 = peg$parseNonQuote();
+ }
+ } else {
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c56(s1);
+ }
+ s0 = s1;
+
+ return s0;
+ }
+
+ function peg$parseNonQuote() {
+ var s0, s1, s2;
+
+ s0 = peg$parseEscapedQuote();
+ if (s0 === peg$FAILED) {
+ s0 = peg$currPos;
+ s1 = peg$currPos;
+ peg$silentFails++;
+ s2 = peg$parseDoubleQuote();
+ peg$silentFails--;
+ if (s2 === peg$FAILED) {
+ s1 = peg$c47;
+ } else {
+ peg$currPos = s1;
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ if (input.length > peg$currPos) {
+ s2 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s2 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c57); }
+ }
+ if (s2 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c58(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ }
+
+ return s0;
+ }
+
+ function peg$parseEscapedQuote() {
+ var s0, s1, s2;
+
+ s0 = peg$currPos;
+ if (input.charCodeAt(peg$currPos) === 92) {
+ s1 = peg$c59;
+ peg$currPos++;
+ } else {
+ s1 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c60); }
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseDoubleQuote();
+ if (s2 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c61();
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseLiteralString() {
+ var s0, s1, s2;
+
+ s0 = peg$currPos;
+ s1 = [];
+ s2 = peg$parseLiteralChar();
+ if (s2 !== peg$FAILED) {
+ while (s2 !== peg$FAILED) {
+ s1.push(s2);
+ s2 = peg$parseLiteralChar();
+ }
+ } else {
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c62(s1);
+ }
+ s0 = s1;
+
+ return s0;
+ }
+
+ function peg$parseLiteralChar() {
+ var s0, s1, s2, s3;
+
+ s0 = peg$currPos;
+ s1 = peg$currPos;
+ peg$silentFails++;
+ s2 = peg$parseInlineCommentOpen();
+ peg$silentFails--;
+ if (s2 === peg$FAILED) {
+ s1 = peg$c47;
+ } else {
+ peg$currPos = s1;
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$currPos;
+ peg$silentFails++;
+ s3 = peg$parseLineTerminator();
+ peg$silentFails--;
+ if (s3 === peg$FAILED) {
+ s2 = peg$c47;
+ } else {
+ peg$currPos = s2;
+ s2 = peg$c0;
+ }
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseNonTerminator();
+ if (s3 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c58(s3);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseNonTerminator() {
+ var s0;
+
+ if (peg$c63.test(input.charAt(peg$currPos))) {
+ s0 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c64); }
+ }
+
+ return s0;
+ }
+
+ function peg$parseSingleLineComment() {
+ var s0, s1, s2, s3, s4;
+
+ s0 = peg$currPos;
+ if (input.substr(peg$currPos, 2) === peg$c65) {
+ s1 = peg$c65;
+ peg$currPos += 2;
+ } else {
+ s1 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c66); }
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parse_();
+ if (s2 !== peg$FAILED) {
+ s3 = peg$parseOneLineString();
+ if (s3 !== peg$FAILED) {
+ s4 = peg$parseNewLine();
+ if (s4 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c67(s3);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseOneLineString() {
+ var s0, s1, s2;
+
+ s0 = peg$currPos;
+ s1 = [];
+ s2 = peg$parseNonLine();
+ while (s2 !== peg$FAILED) {
+ s1.push(s2);
+ s2 = peg$parseNonLine();
+ }
+ if (s1 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c68(s1);
+ }
+ s0 = s1;
+
+ return s0;
+ }
+
+ function peg$parseDigit() {
+ var s0;
+
+ if (peg$c69.test(input.charAt(peg$currPos))) {
+ s0 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c70); }
+ }
+
+ return s0;
+ }
+
+ function peg$parseAlpha() {
+ var s0;
+
+ if (peg$c71.test(input.charAt(peg$currPos))) {
+ s0 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c72); }
+ }
+
+ return s0;
+ }
+
+ function peg$parseDoubleQuote() {
+ var s0;
+
+ if (input.charCodeAt(peg$currPos) === 34) {
+ s0 = peg$c73;
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c74); }
+ }
+
+ return s0;
+ }
+
+ function peg$parse_() {
+ var s0, s1;
+
+ peg$silentFails++;
+ s0 = [];
+ s1 = peg$parsewhitespace();
+ while (s1 !== peg$FAILED) {
+ s0.push(s1);
+ s1 = peg$parsewhitespace();
+ }
+ peg$silentFails--;
+ if (s0 === peg$FAILED) {
+ s1 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c75); }
+ }
+
+ return s0;
+ }
+
+ function peg$parsewhitespace() {
+ var s0;
+
+ s0 = peg$parseNewLine();
+ if (s0 === peg$FAILED) {
+ if (peg$c76.test(input.charAt(peg$currPos))) {
+ s0 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c77); }
+ }
+ }
+
+ return s0;
+ }
+
+ function peg$parseNonLine() {
+ var s0, s1, s2;
+
+ s0 = peg$currPos;
+ s1 = peg$currPos;
+ peg$silentFails++;
+ s2 = peg$parseNewLine();
+ peg$silentFails--;
+ if (s2 === peg$FAILED) {
+ s1 = peg$c47;
+ } else {
+ peg$currPos = s1;
+ s1 = peg$c0;
+ }
+ if (s1 !== peg$FAILED) {
+ s2 = peg$parseChar();
+ if (s2 !== peg$FAILED) {
+ peg$reportedPos = s0;
+ s1 = peg$c58(s2);
+ s0 = s1;
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+ } else {
+ peg$currPos = s0;
+ s0 = peg$c0;
+ }
+
+ return s0;
+ }
+
+ function peg$parseLineTerminator() {
+ var s0;
+
+ s0 = peg$parseNewLine();
+ if (s0 === peg$FAILED) {
+ if (input.charCodeAt(peg$currPos) === 59) {
+ s0 = peg$c14;
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c15); }
+ }
+ }
+
+ return s0;
+ }
+
+ function peg$parseNewLine() {
+ var s0;
+
+ if (peg$c78.test(input.charAt(peg$currPos))) {
+ s0 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c79); }
+ }
+
+ return s0;
+ }
+
+ function peg$parseChar() {
+ var s0;
+
+ if (input.length > peg$currPos) {
+ s0 = input.charAt(peg$currPos);
+ peg$currPos++;
+ } else {
+ s0 = peg$FAILED;
+ if (peg$silentFails === 0) { peg$fail(peg$c57); }
+ }
+
+ return s0;
+ }
+
+
+ function merge(hash, secondHash) {
+ secondHash = secondHash[0]
+ for(var i in secondHash) {
+ hash[i] = merge_obj(hash[i], secondHash[i]);
+ }
+
+ return hash;
+ }
+
+ function merge_obj(obj, secondObj) {
+ if (!obj)
+ return secondObj;
+
+ for(var i in secondObj)
+ obj[i] = merge_obj(obj[i], secondObj[i]);
+
+ return obj;
+ }
+
+
+ peg$result = peg$startRuleFunction();
+
+ if (peg$result !== peg$FAILED && peg$currPos === input.length) {
+ return peg$result;
+ } else {
+ if (peg$result !== peg$FAILED && peg$currPos < input.length) {
+ peg$fail({ type: "end", description: "end of input" });
+ }
+
+ throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);
+ }
+ }
+
+ return {
+ SyntaxError: SyntaxError,
+ parse: parse
+ };
+})();
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/lib/parser/pbxproj.pegjs
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/lib/parser/pbxproj.pegjs b/bin/node_modules/xcode/lib/parser/pbxproj.pegjs
new file mode 100644
index 0000000..5140c05
--- /dev/null
+++ b/bin/node_modules/xcode/lib/parser/pbxproj.pegjs
@@ -0,0 +1,273 @@
+{
+ function merge(hash, secondHash) {
+ secondHash = secondHash[0]
+ for(var i in secondHash) {
+ hash[i] = merge_obj(hash[i], secondHash[i]);
+ }
+
+ return hash;
+ }
+
+ function merge_obj(obj, secondObj) {
+ if (!obj)
+ return secondObj;
+
+ for(var i in secondObj)
+ obj[i] = merge_obj(obj[i], secondObj[i]);
+
+ return obj;
+ }
+}
+
+/*
+ * Project: point of entry from pbxproj file
+ */
+Project
+ = headComment:SingleLineComment? InlineComment? _ obj:Object NewLine _
+ {
+ var proj = Object.create(null)
+ proj.project = obj
+
+ if (headComment) {
+ proj.headComment = headComment
+ }
+
+ return proj;
+ }
+
+/*
+ * Object: basic hash data structure with Assignments
+ */
+Object
+ = "{" obj:(AssignmentList / EmptyBody) "}"
+ { return obj }
+
+EmptyBody
+ = _
+ { return Object.create(null) }
+
+AssignmentList
+ = _ head:Assignment _ tail:AssignmentList* _
+ {
+ if (tail) return merge(head,tail)
+ else return head
+ }
+ / _ head:DelimitedSection _ tail:AssignmentList*
+ {
+ if (tail) return merge(head,tail)
+ else return head
+ }
+
+/*
+ * Assignments
+ * can be simple "key = value"
+ * or commented "key /* real key * / = value"
+ */
+Assignment
+ = SimpleAssignment / CommentedAssignment
+
+SimpleAssignment
+ = id:Identifier _ "=" _ val:Value ";"
+ {
+ var result = Object.create(null);
+ result[id] = val
+ return result
+ }
+
+CommentedAssignment
+ = commentedId:CommentedIdentifier _ "=" _ val:Value ";"
+ {
+ var result = Object.create(null),
+ commentKey = commentedId.id + '_comment';
+
+ result[commentedId.id] = val;
+ result[commentKey] = commentedId[commentKey];
+ return result;
+
+ }
+ /
+ id:Identifier _ "=" _ commentedVal:CommentedValue ";"
+ {
+ var result = Object.create(null);
+ result[id] = commentedVal.value;
+ result[id + "_comment"] = commentedVal.comment;
+ return result;
+ }
+
+CommentedIdentifier
+ = id:Identifier _ comment:InlineComment
+ {
+ var result = Object.create(null);
+ result.id = id;
+ result[id + "_comment"] = comment.trim();
+ return result
+ }
+
+CommentedValue
+ = literal:Value _ comment:InlineComment
+ {
+ var result = Object.create(null)
+ result.comment = comment.trim();
+ result.value = literal.trim();
+ return result;
+ }
+
+InlineComment
+ = InlineCommentOpen body:[^*]+ InlineCommentClose
+ { return body.join('') }
+
+InlineCommentOpen
+ = "/*"
+
+InlineCommentClose
+ = "*/"
+
+/*
+ * DelimitedSection - ad hoc project structure pbxproj files use
+ */
+DelimitedSection
+ = begin:DelimitedSectionBegin _ fields:(AssignmentList / EmptyBody) _ DelimitedSectionEnd
+ {
+ var section = Object.create(null);
+ section[begin.name] = fields
+
+ return section
+ }
+
+DelimitedSectionBegin
+ = "/* Begin " sectionName:Identifier " section */" NewLine
+ { return { name: sectionName } }
+
+DelimitedSectionEnd
+ = "/* End " sectionName:Identifier " section */" NewLine
+ { return { name: sectionName } }
+
+/*
+ * Arrays: lists of values, possible wth comments
+ */
+Array
+ = "(" arr:(ArrayBody / EmptyArray ) ")" { return arr }
+
+EmptyArray
+ = _ { return [] }
+
+ArrayBody
+ = _ head:ArrayEntry _ tail:ArrayBody? _
+ {
+ if (tail) {
+ tail.unshift(head);
+ return tail;
+ } else {
+ return [head];
+ }
+ }
+
+ArrayEntry
+ = SimpleArrayEntry / CommentedArrayEntry
+
+SimpleArrayEntry
+ = val:Value EndArrayEntry { return val }
+
+CommentedArrayEntry
+ = val:Value _ comment:InlineComment EndArrayEntry
+ {
+ var result = Object.create(null);
+ result.value = val.trim();
+ result.comment = comment.trim();
+ return result;
+ }
+
+EndArrayEntry
+ = "," / _ &")"
+
+/*
+ * Identifiers and Values
+ */
+Identifier
+ = id:[A-Za-z0-9_.]+ { return id.join('') }
+ / QuotedString
+
+Value
+ = Object / Array / NumberValue / StringValue
+
+NumberValue
+ = DecimalValue / IntegerValue
+
+DecimalValue
+ = decimal:(IntegerValue "." IntegerValue)
+ {
+ // store decimals as strings
+ // as JS doesn't differentiate bw strings and numbers
+ return decimal.join('')
+ }
+
+IntegerValue
+ = !Alpha number:Digit+ !NonTerminator
+ { return parseInt(number.join(''), 10) }
+
+StringValue
+ = QuotedString / LiteralString
+
+QuotedString
+ = DoubleQuote str:QuotedBody DoubleQuote { return '"' + str + '"' }
+
+QuotedBody
+ = str:NonQuote+ { return str.join('') }
+
+NonQuote
+ = EscapedQuote / !DoubleQuote char:. { return char }
+
+EscapedQuote
+ = "\\" DoubleQuote { return '\\"' }
+
+LiteralString
+ = literal:LiteralChar+ { return literal.join('') }
+
+LiteralChar
+ = !InlineCommentOpen !LineTerminator char:NonTerminator
+ { return char }
+
+NonTerminator
+ = [^;,\n]
+
+/*
+ * SingleLineComment - used for the encoding comment
+ */
+SingleLineComment
+ = "//" _ contents:OneLineString NewLine
+ { return contents }
+
+OneLineString
+ = contents:NonLine*
+ { return contents.join('') }
+
+/*
+ * Simple character checking rules
+ */
+Digit
+ = [0-9]
+
+Alpha
+ = [A-Za-z]
+
+DoubleQuote
+ = '"'
+
+_ "whitespace"
+ = whitespace*
+
+whitespace
+ = NewLine / [\t ]
+
+NonLine
+ = !NewLine char:Char
+ { return char }
+
+LineTerminator
+ = NewLine / ";"
+
+NewLine
+ = [\n\r]
+
+Char
+ = .
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/lib/pbxFile.js
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/lib/pbxFile.js b/bin/node_modules/xcode/lib/pbxFile.js
new file mode 100644
index 0000000..4431f0d
--- /dev/null
+++ b/bin/node_modules/xcode/lib/pbxFile.js
@@ -0,0 +1,194 @@
+var path = require('path'),
+ util = require('util');
+
+var DEFAULT_SOURCETREE = '"<group>"',
+ DEFAULT_PRODUCT_SOURCETREE = 'BUILT_PRODUCTS_DIR',
+ DEFAULT_FILEENCODING = 4,
+ DEFAULT_GROUP = 'Resources',
+ DEFAULT_FILETYPE = 'unknown';
+
+var FILETYPE_BY_EXTENSION = {
+ a: 'archive.ar',
+ app: 'wrapper.application',
+ appex: 'wrapper.app-extension',
+ bundle: 'wrapper.plug-in',
+ dylib: 'compiled.mach-o.dylib',
+ framework: 'wrapper.framework',
+ h: 'sourcecode.c.h',
+ m: 'sourcecode.c.objc',
+ markdown: 'text',
+ mdimporter: 'wrapper.cfbundle',
+ octest: 'wrapper.cfbundle',
+ pch: 'sourcecode.c.h',
+ plist: 'text.plist.xml',
+ sh: 'text.script.sh',
+ swift: 'sourcecode.swift',
+ xcassets: 'folder.assetcatalog',
+ xcconfig: 'text.xcconfig',
+ xcdatamodel: 'wrapper.xcdatamodel',
+ xcodeproj: 'wrapper.pb-project',
+ xctest: 'wrapper.cfbundle',
+ xib: 'file.xib'
+ },
+ GROUP_BY_FILETYPE = {
+ 'archive.ar': 'Frameworks',
+ 'compiled.mach-o.dylib': 'Frameworks',
+ 'wrapper.framework': 'Frameworks',
+ 'sourcecode.c.h': 'Resources',
+ 'sourcecode.c.objc': 'Sources',
+ 'sourcecode.swift': 'Sources'
+ },
+ PATH_BY_FILETYPE = {
+ 'compiled.mach-o.dylib': 'usr/lib/',
+ 'wrapper.framework': 'System/Library/Frameworks/'
+ },
+ SOURCETREE_BY_FILETYPE = {
+ 'compiled.mach-o.dylib': 'SDKROOT',
+ 'wrapper.framework': 'SDKROOT'
+ },
+ ENCODING_BY_FILETYPE = {
+ 'sourcecode.c.h': 4,
+ 'sourcecode.c.h': 4,
+ 'sourcecode.c.objc': 4,
+ 'sourcecode.swift': 4,
+ 'text': 4,
+ 'text.plist.xml': 4,
+ 'text.script.sh': 4,
+ 'text.xcconfig': 4
+ };
+
+
+function unquoted(text){
+ return text.replace (/(^")|("$)/g, '')
+}
+
+function detectType(filePath) {
+ var extension = path.extname(filePath).substring(1),
+ filetype = FILETYPE_BY_EXTENSION[unquoted(extension)];
+
+ if (!filetype) {
+ return DEFAULT_FILETYPE;
+ }
+
+ return filetype;
+}
+
+function defaultExtension(fileRef) {
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType;
+
+ for(var extension in FILETYPE_BY_EXTENSION) {
+ if(FILETYPE_BY_EXTENSION.hasOwnProperty(unquoted(extension)) ) {
+ if(FILETYPE_BY_EXTENSION[unquoted(extension)] === filetype )
+ return extension;
+ }
+ }
+}
+
+function defaultEncoding(fileRef) {
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ encoding = ENCODING_BY_FILETYPE[unquoted(filetype)];
+
+ if (encoding) {
+ return encoding;
+ }
+}
+
+function detectGroup(fileRef) {
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ groupName = GROUP_BY_FILETYPE[unquoted(filetype)];
+
+ if (!groupName) {
+ return DEFAULT_GROUP;
+ }
+
+ return groupName;
+}
+
+function detectSourcetree(fileRef) {
+
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ sourcetree = SOURCETREE_BY_FILETYPE[unquoted(filetype)];
+
+ if (fileRef.explicitFileType) {
+ return DEFAULT_PRODUCT_SOURCETREE;
+ }
+
+ if (fileRef.customFramework) {
+ return DEFAULT_SOURCETREE;
+ }
+
+ if (!sourcetree) {
+ return DEFAULT_SOURCETREE;
+ }
+
+ return sourcetree;
+}
+
+function defaultPath(fileRef, filePath) {
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ defaultPath = PATH_BY_FILETYPE[unquoted(filetype)];
+
+ if (fileRef.customFramework) {
+ return filePath;
+ }
+
+ if (defaultPath) {
+ return path.join(defaultPath, path.basename(filePath));
+ }
+
+ return filePath;
+}
+
+function defaultGroup(fileRef) {
+ var groupName = GROUP_BY_FILETYPE[fileRef.lastKnownFileType];
+
+ if (!groupName) {
+ return DEFAULT_GROUP;
+ }
+
+ return defaultGroup;
+}
+
+function pbxFile(filepath, opt) {
+ var opt = opt || {};
+
+ self = this;
+
+ this.lastKnownFileType = opt.lastKnownFileType || detectType(filepath);
+ this.group = detectGroup(self);
+
+ // for custom frameworks
+ if (opt.customFramework == true) {
+ this.customFramework = true;
+ this.dirname = path.dirname(filepath);
+ }
+
+ this.basename = path.basename(filepath);
+ this.path = defaultPath(this, filepath);
+ this.fileEncoding = this.defaultEncoding = opt.defaultEncoding || defaultEncoding(self);
+
+
+ // When referencing products / build output files
+ if (opt.explicitFileType) {
+ this.explicitFileType = opt.explicitFileType;
+ this.basename = this.basename + '.' + defaultExtension(this);
+ delete this.path;
+ delete this.lastKnownFileType;
+ delete this.group;
+ delete this.defaultEncoding;
+ }
+
+ this.sourceTree = opt.sourceTree || detectSourcetree(self);
+ this.includeInIndex = 0;
+
+ if (opt.weak && opt.weak === true)
+ this.settings = { ATTRIBUTES: ['Weak'] };
+
+ if (opt.compilerFlags) {
+ if (!this.settings)
+ this.settings = {};
+ this.settings.COMPILER_FLAGS = util.format('"%s"', opt.compilerFlags);
+ }
+}
+
+module.exports = pbxFile;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org