intl-messageformat-parser
Advanced tools
Comparing version 1.5.1 to 1.6.0
2184
dist/parser.js
@@ -1,417 +0,485 @@ | ||
(function() { | ||
"use strict"; | ||
/* | ||
* Generated by PEG.js 0.10.0. | ||
* | ||
* http://pegjs.org/ | ||
*/ | ||
(function(root) { | ||
"use strict"; | ||
var src$parser$$default = (function() { | ||
"use strict"; | ||
function peg$subclass(child, parent) { | ||
function ctor() { this.constructor = child; } | ||
ctor.prototype = parent.prototype; | ||
child.prototype = new ctor(); | ||
} | ||
/* | ||
* Generated by PEG.js 0.9.0. | ||
* | ||
* http://pegjs.org/ | ||
*/ | ||
function peg$SyntaxError(message, expected, found, location) { | ||
this.message = message; | ||
this.expected = expected; | ||
this.found = found; | ||
this.location = location; | ||
this.name = "SyntaxError"; | ||
function peg$subclass(child, parent) { | ||
function ctor() { this.constructor = child; } | ||
ctor.prototype = parent.prototype; | ||
child.prototype = new ctor(); | ||
if (typeof Error.captureStackTrace === "function") { | ||
Error.captureStackTrace(this, peg$SyntaxError); | ||
} | ||
} | ||
peg$subclass(peg$SyntaxError, Error); | ||
peg$SyntaxError.buildMessage = function(expected, found) { | ||
var DESCRIBE_EXPECTATION_FNS = { | ||
literal: function(expectation) { | ||
return "\"" + literalEscape(expectation.text) + "\""; | ||
}, | ||
"class": function(expectation) { | ||
var escapedParts = "", | ||
i; | ||
for (i = 0; i < expectation.parts.length; i++) { | ||
escapedParts += expectation.parts[i] instanceof Array | ||
? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) | ||
: classEscape(expectation.parts[i]); | ||
} | ||
return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; | ||
}, | ||
any: function(expectation) { | ||
return "any character"; | ||
}, | ||
end: function(expectation) { | ||
return "end of input"; | ||
}, | ||
other: function(expectation) { | ||
return expectation.description; | ||
} | ||
}; | ||
function hex(ch) { | ||
return ch.charCodeAt(0).toString(16).toUpperCase(); | ||
} | ||
function literalEscape(s) { | ||
return s | ||
.replace(/\\/g, '\\\\') | ||
.replace(/"/g, '\\"') | ||
.replace(/\0/g, '\\0') | ||
.replace(/\t/g, '\\t') | ||
.replace(/\n/g, '\\n') | ||
.replace(/\r/g, '\\r') | ||
.replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) | ||
.replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); | ||
} | ||
function classEscape(s) { | ||
return s | ||
.replace(/\\/g, '\\\\') | ||
.replace(/\]/g, '\\]') | ||
.replace(/\^/g, '\\^') | ||
.replace(/-/g, '\\-') | ||
.replace(/\0/g, '\\0') | ||
.replace(/\t/g, '\\t') | ||
.replace(/\n/g, '\\n') | ||
.replace(/\r/g, '\\r') | ||
.replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) | ||
.replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); | ||
} | ||
function describeExpectation(expectation) { | ||
return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); | ||
} | ||
function describeExpected(expected) { | ||
var descriptions = new Array(expected.length), | ||
i, j; | ||
for (i = 0; i < expected.length; i++) { | ||
descriptions[i] = describeExpectation(expected[i]); | ||
} | ||
function peg$SyntaxError(message, expected, found, location) { | ||
this.message = message; | ||
this.expected = expected; | ||
this.found = found; | ||
this.location = location; | ||
this.name = "SyntaxError"; | ||
descriptions.sort(); | ||
if (typeof Error.captureStackTrace === "function") { | ||
Error.captureStackTrace(this, peg$SyntaxError); | ||
if (descriptions.length > 0) { | ||
for (i = 1, j = 1; i < descriptions.length; i++) { | ||
if (descriptions[i - 1] !== descriptions[i]) { | ||
descriptions[j] = descriptions[i]; | ||
j++; | ||
} | ||
} | ||
descriptions.length = j; | ||
} | ||
peg$subclass(peg$SyntaxError, Error); | ||
switch (descriptions.length) { | ||
case 1: | ||
return descriptions[0]; | ||
function peg$parse(input) { | ||
var options = arguments.length > 1 ? arguments[1] : {}, | ||
parser = this, | ||
case 2: | ||
return descriptions[0] + " or " + descriptions[1]; | ||
peg$FAILED = {}, | ||
default: | ||
return descriptions.slice(0, -1).join(", ") | ||
+ ", or " | ||
+ descriptions[descriptions.length - 1]; | ||
} | ||
} | ||
peg$startRuleFunctions = { start: peg$parsestart }, | ||
peg$startRuleFunction = peg$parsestart, | ||
function describeFound(found) { | ||
return found ? "\"" + literalEscape(found) + "\"" : "end of input"; | ||
} | ||
peg$c0 = function(elements) { | ||
return { | ||
type : 'messageFormatPattern', | ||
elements: elements, | ||
location: location() | ||
}; | ||
}, | ||
peg$c1 = function(text) { | ||
var string = '', | ||
i, j, outerLen, inner, innerLen; | ||
return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; | ||
}; | ||
for (i = 0, outerLen = text.length; i < outerLen; i += 1) { | ||
inner = text[i]; | ||
function peg$parse(input, options) { | ||
options = options !== void 0 ? options : {}; | ||
for (j = 0, innerLen = inner.length; j < innerLen; j += 1) { | ||
string += inner[j]; | ||
} | ||
} | ||
var peg$FAILED = {}, | ||
return string; | ||
}, | ||
peg$c2 = function(messageText) { | ||
return { | ||
type : 'messageTextElement', | ||
value: messageText, | ||
location: location() | ||
}; | ||
}, | ||
peg$c3 = /^[^ \t\n\r,.+={}#]/, | ||
peg$c4 = { type: "class", value: "[^ \\t\\n\\r,.+={}#]", description: "[^ \\t\\n\\r,.+={}#]" }, | ||
peg$c5 = "{", | ||
peg$c6 = { type: "literal", value: "{", description: "\"{\"" }, | ||
peg$c7 = ",", | ||
peg$c8 = { type: "literal", value: ",", description: "\",\"" }, | ||
peg$c9 = "}", | ||
peg$c10 = { type: "literal", value: "}", description: "\"}\"" }, | ||
peg$c11 = function(id, format) { | ||
return { | ||
type : 'argumentElement', | ||
id : id, | ||
format: format && format[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c12 = "number", | ||
peg$c13 = { type: "literal", value: "number", description: "\"number\"" }, | ||
peg$c14 = "date", | ||
peg$c15 = { type: "literal", value: "date", description: "\"date\"" }, | ||
peg$c16 = "time", | ||
peg$c17 = { type: "literal", value: "time", description: "\"time\"" }, | ||
peg$c18 = function(type, style) { | ||
return { | ||
type : type + 'Format', | ||
style: style && style[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c19 = "plural", | ||
peg$c20 = { type: "literal", value: "plural", description: "\"plural\"" }, | ||
peg$c21 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: false, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c22 = "selectordinal", | ||
peg$c23 = { type: "literal", value: "selectordinal", description: "\"selectordinal\"" }, | ||
peg$c24 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: true, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
} | ||
}, | ||
peg$c25 = "select", | ||
peg$c26 = { type: "literal", value: "select", description: "\"select\"" }, | ||
peg$c27 = function(options) { | ||
return { | ||
type : 'selectFormat', | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c28 = "=", | ||
peg$c29 = { type: "literal", value: "=", description: "\"=\"" }, | ||
peg$c30 = function(selector, pattern) { | ||
return { | ||
type : 'optionalFormatPattern', | ||
selector: selector, | ||
value : pattern, | ||
location: location() | ||
}; | ||
}, | ||
peg$c31 = "offset:", | ||
peg$c32 = { type: "literal", value: "offset:", description: "\"offset:\"" }, | ||
peg$c33 = function(number) { | ||
return number; | ||
}, | ||
peg$c34 = function(offset, options) { | ||
return { | ||
type : 'pluralFormat', | ||
offset : offset, | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c35 = { type: "other", description: "whitespace" }, | ||
peg$c36 = /^[ \t\n\r]/, | ||
peg$c37 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" }, | ||
peg$c38 = { type: "other", description: "optionalWhitespace" }, | ||
peg$c39 = /^[0-9]/, | ||
peg$c40 = { type: "class", value: "[0-9]", description: "[0-9]" }, | ||
peg$c41 = /^[0-9a-f]/i, | ||
peg$c42 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]i" }, | ||
peg$c43 = "0", | ||
peg$c44 = { type: "literal", value: "0", description: "\"0\"" }, | ||
peg$c45 = /^[1-9]/, | ||
peg$c46 = { type: "class", value: "[1-9]", description: "[1-9]" }, | ||
peg$c47 = function(digits) { | ||
return parseInt(digits, 10); | ||
peg$startRuleFunctions = { start: peg$parsestart }, | ||
peg$startRuleFunction = peg$parsestart, | ||
peg$c0 = function(elements) { | ||
return { | ||
type : 'messageFormatPattern', | ||
elements: elements, | ||
location: location() | ||
}; | ||
}, | ||
peg$c48 = /^[^{}\\\0-\x1F \t\n\r]/, | ||
peg$c49 = { type: "class", value: "[^{}\\\\\\0-\\x1F\\x7f \\t\\n\\r]", description: "[^{}\\\\\\0-\\x1F\\x7f \\t\\n\\r]" }, | ||
peg$c50 = "\\\\", | ||
peg$c51 = { type: "literal", value: "\\\\", description: "\"\\\\\\\\\"" }, | ||
peg$c52 = function() { return '\\'; }, | ||
peg$c53 = "\\#", | ||
peg$c54 = { type: "literal", value: "\\#", description: "\"\\\\#\"" }, | ||
peg$c55 = function() { return '\\#'; }, | ||
peg$c56 = "\\{", | ||
peg$c57 = { type: "literal", value: "\\{", description: "\"\\\\{\"" }, | ||
peg$c58 = function() { return '\u007B'; }, | ||
peg$c59 = "\\}", | ||
peg$c60 = { type: "literal", value: "\\}", description: "\"\\\\}\"" }, | ||
peg$c61 = function() { return '\u007D'; }, | ||
peg$c62 = "\\u", | ||
peg$c63 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, | ||
peg$c64 = function(digits) { | ||
return String.fromCharCode(parseInt(digits, 16)); | ||
}, | ||
peg$c65 = function(chars) { return chars.join(''); }, | ||
peg$c1 = function(chunks) { | ||
return chunks.reduce(function (all, chunk) { | ||
return all.concat(chunk) | ||
}, []).join('') | ||
}, | ||
peg$c2 = function(messageText) { | ||
return { | ||
type : 'messageTextElement', | ||
value: messageText, | ||
location: location() | ||
}; | ||
}, | ||
peg$c3 = /^[^ \t\n\r,.+={}#]/, | ||
peg$c4 = peg$classExpectation([" ", "\t", "\n", "\r", ",", ".", "+", "=", "{", "}", "#"], true, false), | ||
peg$c5 = "{", | ||
peg$c6 = peg$literalExpectation("{", false), | ||
peg$c7 = ",", | ||
peg$c8 = peg$literalExpectation(",", false), | ||
peg$c9 = "}", | ||
peg$c10 = peg$literalExpectation("}", false), | ||
peg$c11 = function(id, format) { | ||
return { | ||
type : 'argumentElement', | ||
id : id, | ||
format: format && format[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c12 = "number", | ||
peg$c13 = peg$literalExpectation("number", false), | ||
peg$c14 = "date", | ||
peg$c15 = peg$literalExpectation("date", false), | ||
peg$c16 = "time", | ||
peg$c17 = peg$literalExpectation("time", false), | ||
peg$c18 = function(type, style) { | ||
return { | ||
type : type + 'Format', | ||
style: style && style[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c19 = "plural", | ||
peg$c20 = peg$literalExpectation("plural", false), | ||
peg$c21 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: false, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c22 = "selectordinal", | ||
peg$c23 = peg$literalExpectation("selectordinal", false), | ||
peg$c24 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: true, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
} | ||
}, | ||
peg$c25 = "select", | ||
peg$c26 = peg$literalExpectation("select", false), | ||
peg$c27 = function(options) { | ||
return { | ||
type : 'selectFormat', | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c28 = "=", | ||
peg$c29 = peg$literalExpectation("=", false), | ||
peg$c30 = function(selector, pattern) { | ||
return { | ||
type : 'optionalFormatPattern', | ||
selector: selector, | ||
value : pattern, | ||
location: location() | ||
}; | ||
}, | ||
peg$c31 = "offset:", | ||
peg$c32 = peg$literalExpectation("offset:", false), | ||
peg$c33 = function(number) { | ||
return number; | ||
}, | ||
peg$c34 = function(offset, options) { | ||
return { | ||
type : 'pluralFormat', | ||
offset : offset, | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c35 = peg$otherExpectation("whitespace"), | ||
peg$c36 = /^[ \t\n\r]/, | ||
peg$c37 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false), | ||
peg$c38 = peg$otherExpectation("optionalWhitespace"), | ||
peg$c39 = /^[0-9]/, | ||
peg$c40 = peg$classExpectation([["0", "9"]], false, false), | ||
peg$c41 = /^[0-9a-f]/i, | ||
peg$c42 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), | ||
peg$c43 = "0", | ||
peg$c44 = peg$literalExpectation("0", false), | ||
peg$c45 = /^[1-9]/, | ||
peg$c46 = peg$classExpectation([["1", "9"]], false, false), | ||
peg$c47 = function(digits) { | ||
return parseInt(digits, 10); | ||
}, | ||
peg$c48 = /^[^{}\\\0-\x1F\x7F \t\n\r]/, | ||
peg$c49 = peg$classExpectation(["{", "}", "\\", ["\0", "\x1F"], "\x7F", " ", "\t", "\n", "\r"], true, false), | ||
peg$c50 = "\\\\", | ||
peg$c51 = peg$literalExpectation("\\\\", false), | ||
peg$c52 = function() { return '\\'; }, | ||
peg$c53 = "\\#", | ||
peg$c54 = peg$literalExpectation("\\#", false), | ||
peg$c55 = function() { return '\\#'; }, | ||
peg$c56 = "\\{", | ||
peg$c57 = peg$literalExpectation("\\{", false), | ||
peg$c58 = function() { return '\u007B'; }, | ||
peg$c59 = "\\}", | ||
peg$c60 = peg$literalExpectation("\\}", false), | ||
peg$c61 = function() { return '\u007D'; }, | ||
peg$c62 = "\\u", | ||
peg$c63 = peg$literalExpectation("\\u", false), | ||
peg$c64 = function(digits) { | ||
return String.fromCharCode(parseInt(digits, 16)); | ||
}, | ||
peg$c65 = function(chars) { return chars.join(''); }, | ||
peg$currPos = 0, | ||
peg$savedPos = 0, | ||
peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], | ||
peg$maxFailPos = 0, | ||
peg$maxFailExpected = [], | ||
peg$silentFails = 0, | ||
peg$currPos = 0, | ||
peg$savedPos = 0, | ||
peg$posDetailsCache = [{ line: 1, column: 1 }], | ||
peg$maxFailPos = 0, | ||
peg$maxFailExpected = [], | ||
peg$silentFails = 0, | ||
peg$result; | ||
peg$result; | ||
if ("startRule" in options) { | ||
if (!(options.startRule in peg$startRuleFunctions)) { | ||
throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); | ||
} | ||
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]; | ||
} | ||
peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; | ||
} | ||
function text() { | ||
return input.substring(peg$savedPos, peg$currPos); | ||
} | ||
function text() { | ||
return input.substring(peg$savedPos, peg$currPos); | ||
} | ||
function location() { | ||
return peg$computeLocation(peg$savedPos, peg$currPos); | ||
} | ||
function location() { | ||
return peg$computeLocation(peg$savedPos, peg$currPos); | ||
} | ||
function expected(description) { | ||
throw peg$buildException( | ||
null, | ||
[{ type: "other", description: description }], | ||
input.substring(peg$savedPos, peg$currPos), | ||
peg$computeLocation(peg$savedPos, peg$currPos) | ||
); | ||
} | ||
function expected(description, location) { | ||
location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) | ||
function error(message) { | ||
throw peg$buildException( | ||
message, | ||
null, | ||
input.substring(peg$savedPos, peg$currPos), | ||
peg$computeLocation(peg$savedPos, peg$currPos) | ||
); | ||
} | ||
throw peg$buildStructuredError( | ||
[peg$otherExpectation(description)], | ||
input.substring(peg$savedPos, peg$currPos), | ||
location | ||
); | ||
} | ||
function peg$computePosDetails(pos) { | ||
var details = peg$posDetailsCache[pos], | ||
p, ch; | ||
function error(message, location) { | ||
location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) | ||
if (details) { | ||
return details; | ||
} else { | ||
p = pos - 1; | ||
while (!peg$posDetailsCache[p]) { | ||
p--; | ||
} | ||
throw peg$buildSimpleError(message, location); | ||
} | ||
details = peg$posDetailsCache[p]; | ||
details = { | ||
line: details.line, | ||
column: details.column, | ||
seenCR: details.seenCR | ||
}; | ||
function peg$literalExpectation(text, ignoreCase) { | ||
return { type: "literal", text: text, ignoreCase: ignoreCase }; | ||
} | ||
while (p < pos) { | ||
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; | ||
} | ||
function peg$classExpectation(parts, inverted, ignoreCase) { | ||
return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; | ||
} | ||
p++; | ||
} | ||
function peg$anyExpectation() { | ||
return { type: "any" }; | ||
} | ||
peg$posDetailsCache[pos] = details; | ||
return details; | ||
} | ||
} | ||
function peg$endExpectation() { | ||
return { type: "end" }; | ||
} | ||
function peg$computeLocation(startPos, endPos) { | ||
var startPosDetails = peg$computePosDetails(startPos), | ||
endPosDetails = peg$computePosDetails(endPos); | ||
function peg$otherExpectation(description) { | ||
return { type: "other", description: description }; | ||
} | ||
return { | ||
start: { | ||
offset: startPos, | ||
line: startPosDetails.line, | ||
column: startPosDetails.column | ||
}, | ||
end: { | ||
offset: endPos, | ||
line: endPosDetails.line, | ||
column: endPosDetails.column | ||
} | ||
}; | ||
function peg$computePosDetails(pos) { | ||
var details = peg$posDetailsCache[pos], p; | ||
if (details) { | ||
return details; | ||
} else { | ||
p = pos - 1; | ||
while (!peg$posDetailsCache[p]) { | ||
p--; | ||
} | ||
function peg$fail(expected) { | ||
if (peg$currPos < peg$maxFailPos) { return; } | ||
details = peg$posDetailsCache[p]; | ||
details = { | ||
line: details.line, | ||
column: details.column | ||
}; | ||
if (peg$currPos > peg$maxFailPos) { | ||
peg$maxFailPos = peg$currPos; | ||
peg$maxFailExpected = []; | ||
while (p < pos) { | ||
if (input.charCodeAt(p) === 10) { | ||
details.line++; | ||
details.column = 1; | ||
} else { | ||
details.column++; | ||
} | ||
peg$maxFailExpected.push(expected); | ||
p++; | ||
} | ||
function peg$buildException(message, expected, found, location) { | ||
function cleanupExpected(expected) { | ||
var i = 1; | ||
peg$posDetailsCache[pos] = details; | ||
return details; | ||
} | ||
} | ||
expected.sort(function(a, b) { | ||
if (a.description < b.description) { | ||
return -1; | ||
} else if (a.description > b.description) { | ||
return 1; | ||
} else { | ||
return 0; | ||
} | ||
}); | ||
function peg$computeLocation(startPos, endPos) { | ||
var startPosDetails = peg$computePosDetails(startPos), | ||
endPosDetails = peg$computePosDetails(endPos); | ||
while (i < expected.length) { | ||
if (expected[i - 1] === expected[i]) { | ||
expected.splice(i, 1); | ||
} else { | ||
i++; | ||
} | ||
} | ||
} | ||
return { | ||
start: { | ||
offset: startPos, | ||
line: startPosDetails.line, | ||
column: startPosDetails.column | ||
}, | ||
end: { | ||
offset: endPos, | ||
line: endPosDetails.line, | ||
column: endPosDetails.column | ||
} | ||
}; | ||
} | ||
function buildMessage(expected, found) { | ||
function stringEscape(s) { | ||
function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } | ||
function peg$fail(expected) { | ||
if (peg$currPos < peg$maxFailPos) { return; } | ||
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(/[\u0100-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) | ||
.replace(/[\u1000-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); }); | ||
} | ||
if (peg$currPos > peg$maxFailPos) { | ||
peg$maxFailPos = peg$currPos; | ||
peg$maxFailExpected = []; | ||
} | ||
var expectedDescs = new Array(expected.length), | ||
expectedDesc, foundDesc, i; | ||
peg$maxFailExpected.push(expected); | ||
} | ||
for (i = 0; i < expected.length; i++) { | ||
expectedDescs[i] = expected[i].description; | ||
} | ||
function peg$buildSimpleError(message, location) { | ||
return new peg$SyntaxError(message, null, null, location); | ||
} | ||
expectedDesc = expected.length > 1 | ||
? expectedDescs.slice(0, -1).join(", ") | ||
+ " or " | ||
+ expectedDescs[expected.length - 1] | ||
: expectedDescs[0]; | ||
function peg$buildStructuredError(expected, found, location) { | ||
return new peg$SyntaxError( | ||
peg$SyntaxError.buildMessage(expected, found), | ||
expected, | ||
found, | ||
location | ||
); | ||
} | ||
foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; | ||
function peg$parsestart() { | ||
var s0; | ||
return "Expected " + expectedDesc + " but " + foundDesc + " found."; | ||
} | ||
s0 = peg$parsemessageFormatPattern(); | ||
if (expected !== null) { | ||
cleanupExpected(expected); | ||
} | ||
return s0; | ||
} | ||
return new peg$SyntaxError( | ||
message !== null ? message : buildMessage(expected, found), | ||
expected, | ||
found, | ||
location | ||
); | ||
} | ||
function peg$parsemessageFormatPattern() { | ||
var s0, s1, s2; | ||
function peg$parsestart() { | ||
var s0; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsemessageFormatElement(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsemessageFormatElement(); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c0(s1); | ||
} | ||
s0 = s1; | ||
s0 = peg$parsemessageFormatPattern(); | ||
return s0; | ||
} | ||
return s0; | ||
} | ||
function peg$parsemessageFormatElement() { | ||
var s0; | ||
function peg$parsemessageFormatPattern() { | ||
var s0, s1, s2; | ||
s0 = peg$parsemessageTextElement(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseargumentElement(); | ||
} | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsemessageFormatElement(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsemessageFormatElement(); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c0(s1); | ||
} | ||
s0 = s1; | ||
return s0; | ||
} | ||
return s0; | ||
} | ||
function peg$parsemessageText() { | ||
var s0, s1, s2, s3, s4, s5; | ||
function peg$parsemessageFormatElement() { | ||
var s0; | ||
s0 = peg$parsemessageTextElement(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseargumentElement(); | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$currPos; | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parsechars(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s3 = [s3, s4, s5]; | ||
s2 = s3; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
function peg$parsemessageText() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$currPos; | ||
@@ -438,69 +506,55 @@ s3 = peg$parse_(); | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$currPos; | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parsechars(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s3 = [s3, s4, s5]; | ||
s2 = s3; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c1(s1); | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c1(s1); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = peg$parsews(); | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = peg$parsews(); | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
} | ||
return s0; | ||
} | ||
} | ||
function peg$parsemessageTextElement() { | ||
var s0, s1; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$parsemessageText(); | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c2(s1); | ||
} | ||
s0 = s1; | ||
function peg$parsemessageTextElement() { | ||
var s0, s1; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$parsemessageText(); | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c2(s1); | ||
} | ||
s0 = s1; | ||
function peg$parseargument() { | ||
var s0, s1, s2; | ||
return s0; | ||
} | ||
s0 = peg$parsenumber(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = []; | ||
function peg$parseargument() { | ||
var s0, s1, s2; | ||
s0 = peg$parsenumber(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = []; | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
@@ -513,96 +567,78 @@ s2 = input.charAt(peg$currPos); | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
} | ||
return s0; | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
} | ||
function peg$parseargumentElement() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7, s8; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s1 = peg$c5; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parseargument(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s6 = peg$c7; | ||
peg$currPos++; | ||
function peg$parseargumentElement() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7, s8; | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s1 = peg$c5; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parseargument(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s6 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parse_(); | ||
if (s7 !== peg$FAILED) { | ||
s8 = peg$parseelementFormat(); | ||
if (s8 !== peg$FAILED) { | ||
s6 = [s6, s7, s8]; | ||
s5 = s6; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parse_(); | ||
if (s7 !== peg$FAILED) { | ||
s8 = peg$parseelementFormat(); | ||
if (s8 !== peg$FAILED) { | ||
s6 = [s6, s7, s8]; | ||
s5 = s6; | ||
} else { | ||
peg$currPos = s5; | ||
s5 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s5; | ||
s5 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s5; | ||
s5 = peg$FAILED; | ||
} | ||
if (s5 === peg$FAILED) { | ||
s5 = null; | ||
} else { | ||
peg$currPos = s5; | ||
s5 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s5; | ||
s5 = peg$FAILED; | ||
} | ||
if (s5 === peg$FAILED) { | ||
s5 = null; | ||
} | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parse_(); | ||
if (s6 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s7 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s7 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parse_(); | ||
if (s6 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s7 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s7 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s7 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c11(s3, s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
if (s7 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c11(s3, s5); | ||
s0 = s1; | ||
} else { | ||
@@ -628,143 +664,143 @@ peg$currPos = s0; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseelementFormat() { | ||
var s0; | ||
return s0; | ||
} | ||
s0 = peg$parsesimpleFormat(); | ||
function peg$parseelementFormat() { | ||
var s0; | ||
s0 = peg$parsesimpleFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsepluralFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseselectOrdinalFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsepluralFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseselectOrdinalFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseselectFormat(); | ||
} | ||
} | ||
s0 = peg$parseselectFormat(); | ||
} | ||
return s0; | ||
} | ||
} | ||
function peg$parsesimpleFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c12) { | ||
s1 = peg$c12; | ||
peg$currPos += 6; | ||
function peg$parsesimpleFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c12) { | ||
s1 = peg$c12; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
if (input.substr(peg$currPos, 4) === peg$c14) { | ||
s1 = peg$c14; | ||
peg$currPos += 4; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
if (input.substr(peg$currPos, 4) === peg$c16) { | ||
s1 = peg$c16; | ||
peg$currPos += 4; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c17); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
if (input.substr(peg$currPos, 4) === peg$c14) { | ||
s1 = peg$c14; | ||
peg$currPos += 4; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
if (input.substr(peg$currPos, 4) === peg$c16) { | ||
s1 = peg$c16; | ||
peg$currPos += 4; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c17); } | ||
} | ||
} | ||
} | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s4 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s4 = peg$c7; | ||
peg$currPos++; | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsechars(); | ||
if (s6 !== peg$FAILED) { | ||
s4 = [s4, s5, s6]; | ||
s3 = s4; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsechars(); | ||
if (s6 !== peg$FAILED) { | ||
s4 = [s4, s5, s6]; | ||
s3 = s4; | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 === peg$FAILED) { | ||
s3 = null; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c18(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 === peg$FAILED) { | ||
s3 = null; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c18(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parsepluralFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c19) { | ||
s1 = peg$c19; | ||
peg$currPos += 6; | ||
function peg$parsepluralFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c19) { | ||
s1 = peg$c19; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c20); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c20); } | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c21(s5); | ||
s0 = s1; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c21(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
@@ -781,44 +817,44 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseselectOrdinalFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 13) === peg$c22) { | ||
s1 = peg$c22; | ||
peg$currPos += 13; | ||
function peg$parseselectOrdinalFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 13) === peg$c22) { | ||
s1 = peg$c22; | ||
peg$currPos += 13; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c23); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c23); } | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c24(s5); | ||
s0 = s1; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c24(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
@@ -835,53 +871,53 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseselectFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c25) { | ||
s1 = peg$c25; | ||
peg$currPos += 6; | ||
function peg$parseselectFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c25) { | ||
s1 = peg$c25; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c26); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c26); } | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = []; | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = []; | ||
s6 = peg$parseoptionalFormatPattern(); | ||
if (s6 !== peg$FAILED) { | ||
while (s6 !== peg$FAILED) { | ||
s5.push(s6); | ||
s6 = peg$parseoptionalFormatPattern(); | ||
if (s6 !== peg$FAILED) { | ||
while (s6 !== peg$FAILED) { | ||
s5.push(s6); | ||
s6 = peg$parseoptionalFormatPattern(); | ||
} | ||
} else { | ||
s5 = peg$FAILED; | ||
} | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c27(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
s5 = peg$FAILED; | ||
} | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c27(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
@@ -898,94 +934,82 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseselector() { | ||
var s0, s1, s2, s3; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 61) { | ||
s2 = peg$c28; | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c29); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
s2 = [s2, s3]; | ||
s1 = s2; | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsechars(); | ||
} | ||
function peg$parseselector() { | ||
var s0, s1, s2, s3; | ||
return s0; | ||
s0 = peg$currPos; | ||
s1 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 61) { | ||
s2 = peg$c28; | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c29); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
s2 = [s2, s3]; | ||
s1 = s2; | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsechars(); | ||
} | ||
function peg$parseoptionalFormatPattern() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7, s8; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$parse_(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parseselector(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s4 = peg$c5; | ||
function peg$parseoptionalFormatPattern() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
s0 = peg$currPos; | ||
s1 = peg$parse_(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parseselector(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s4 = peg$c5; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsemessageFormatPattern(); | ||
if (s5 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s6 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsemessageFormatPattern(); | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parse_(); | ||
if (s7 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s8 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s8 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s8 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c30(s2, s6); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
if (s6 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c30(s2, s5); | ||
s0 = s1; | ||
} else { | ||
@@ -1007,87 +1031,105 @@ peg$currPos = s0; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseoffset() { | ||
var s0, s1, s2, s3; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 7) === peg$c31) { | ||
s1 = peg$c31; | ||
peg$currPos += 7; | ||
function peg$parseoffset() { | ||
var s0, s1, s2, s3; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 7) === peg$c31) { | ||
s1 = peg$c31; | ||
peg$currPos += 7; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c32); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c33(s3); | ||
s0 = s1; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c32); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c33(s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parsepluralStyle() { | ||
var s0, s1, s2, s3, s4; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$parseoffset(); | ||
if (s1 === peg$FAILED) { | ||
s1 = null; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
function peg$parsepluralStyle() { | ||
var s0, s1, s2, s3, s4; | ||
s0 = peg$currPos; | ||
s1 = peg$parseoffset(); | ||
if (s1 === peg$FAILED) { | ||
s1 = null; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
s4 = peg$parseoptionalFormatPattern(); | ||
if (s4 !== peg$FAILED) { | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
s4 = peg$parseoptionalFormatPattern(); | ||
if (s4 !== peg$FAILED) { | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
s4 = peg$parseoptionalFormatPattern(); | ||
} | ||
} else { | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c34(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c34(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parsews() { | ||
var s0, s1; | ||
return s0; | ||
} | ||
peg$silentFails++; | ||
s0 = []; | ||
function peg$parsews() { | ||
var s0, s1; | ||
peg$silentFails++; | ||
s0 = []; | ||
if (peg$c36.test(input.charAt(peg$currPos))) { | ||
s1 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c37); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
while (s1 !== peg$FAILED) { | ||
s0.push(s1); | ||
if (peg$c36.test(input.charAt(peg$currPos))) { | ||
@@ -1100,154 +1142,172 @@ s1 = input.charAt(peg$currPos); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
while (s1 !== peg$FAILED) { | ||
s0.push(s1); | ||
if (peg$c36.test(input.charAt(peg$currPos))) { | ||
s1 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c37); } | ||
} | ||
} | ||
} else { | ||
s0 = peg$FAILED; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c35); } | ||
} | ||
return s0; | ||
} | ||
} else { | ||
s0 = peg$FAILED; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c35); } | ||
} | ||
function peg$parse_() { | ||
var s0, s1, s2; | ||
return s0; | ||
} | ||
peg$silentFails++; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsews(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsews(); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c38); } | ||
} | ||
function peg$parse_() { | ||
var s0, s1, s2; | ||
return s0; | ||
} | ||
peg$silentFails++; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsews(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsews(); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c38); } | ||
} | ||
function peg$parsedigit() { | ||
var s0; | ||
return s0; | ||
} | ||
if (peg$c39.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c40); } | ||
} | ||
function peg$parsedigit() { | ||
var s0; | ||
return s0; | ||
} | ||
if (peg$c39.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c40); } | ||
} | ||
function peg$parsehexDigit() { | ||
var s0; | ||
return s0; | ||
} | ||
if (peg$c41.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
function peg$parsehexDigit() { | ||
var s0; | ||
if (peg$c41.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c42); } | ||
} | ||
return s0; | ||
} | ||
function peg$parsenumber() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 48) { | ||
s1 = peg$c43; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c44); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
s1 = peg$currPos; | ||
s2 = peg$currPos; | ||
if (peg$c45.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c46); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = []; | ||
s5 = peg$parsedigit(); | ||
while (s5 !== peg$FAILED) { | ||
s4.push(s5); | ||
s5 = peg$parsedigit(); | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s3 = [s3, s4]; | ||
s2 = s3; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c42); } | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s1 = input.substring(s1, peg$currPos); | ||
} else { | ||
s1 = s2; | ||
} | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c47(s1); | ||
} | ||
s0 = s1; | ||
function peg$parsenumber() { | ||
var s0, s1, s2, s3, s4, s5; | ||
return s0; | ||
} | ||
function peg$parsechar() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7; | ||
if (peg$c48.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c49); } | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c50) { | ||
s1 = peg$c50; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c51); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c52(); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 48) { | ||
s1 = peg$c43; | ||
peg$currPos++; | ||
if (input.substr(peg$currPos, 2) === peg$c53) { | ||
s1 = peg$c53; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c44); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c54); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
s1 = peg$currPos; | ||
s2 = peg$currPos; | ||
if (peg$c45.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c46); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = []; | ||
s5 = peg$parsedigit(); | ||
while (s5 !== peg$FAILED) { | ||
s4.push(s5); | ||
s5 = peg$parsedigit(); | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s3 = [s3, s4]; | ||
s2 = s3; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s1 = input.substring(s1, peg$currPos); | ||
} else { | ||
s1 = s2; | ||
} | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c47(s1); | ||
s1 = peg$c55(); | ||
} | ||
s0 = s1; | ||
return s0; | ||
} | ||
function peg$parsechar() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7; | ||
if (peg$c48.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c49); } | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c50) { | ||
s1 = peg$c50; | ||
if (input.substr(peg$currPos, 2) === peg$c56) { | ||
s1 = peg$c56; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c51); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c57); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c52(); | ||
s1 = peg$c58(); | ||
} | ||
@@ -1257,12 +1317,12 @@ s0 = s1; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c53) { | ||
s1 = peg$c53; | ||
if (input.substr(peg$currPos, 2) === peg$c59) { | ||
s1 = peg$c59; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c54); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c60); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c55(); | ||
s1 = peg$c61(); | ||
} | ||
@@ -1272,58 +1332,22 @@ s0 = s1; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c56) { | ||
s1 = peg$c56; | ||
if (input.substr(peg$currPos, 2) === peg$c62) { | ||
s1 = peg$c62; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c57); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c63); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c58(); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c59) { | ||
s1 = peg$c59; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c60); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c61(); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c62) { | ||
s1 = peg$c62; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c63); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$currPos; | ||
s3 = peg$currPos; | ||
s4 = peg$parsehexDigit(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsehexDigit(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsehexDigit(); | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parsehexDigit(); | ||
if (s7 !== peg$FAILED) { | ||
s4 = [s4, s5, s6, s7]; | ||
s3 = s4; | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
s2 = peg$currPos; | ||
s3 = peg$currPos; | ||
s4 = peg$parsehexDigit(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsehexDigit(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsehexDigit(); | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parsehexDigit(); | ||
if (s7 !== peg$FAILED) { | ||
s4 = [s4, s5, s6, s7]; | ||
s3 = s4; | ||
} else { | ||
@@ -1337,20 +1361,26 @@ peg$currPos = s3; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s2 = input.substring(s2, peg$currPos); | ||
} else { | ||
s2 = s3; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c64(s2); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s2 = input.substring(s2, peg$currPos); | ||
} else { | ||
s2 = s3; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c64(s2); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
@@ -1360,58 +1390,54 @@ } | ||
} | ||
return s0; | ||
} | ||
} | ||
function peg$parsechars() { | ||
var s0, s1, s2; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = []; | ||
function peg$parsechars() { | ||
var s0, s1, s2; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsechar(); | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsechar(); | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsechar(); | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c65(s1); | ||
} | ||
s0 = s1; | ||
return s0; | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c65(s1); | ||
} | ||
s0 = s1; | ||
peg$result = peg$startRuleFunction(); | ||
return s0; | ||
} | ||
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" }); | ||
} | ||
peg$result = peg$startRuleFunction(); | ||
throw peg$buildException( | ||
null, | ||
peg$maxFailExpected, | ||
peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, | ||
peg$maxFailPos < input.length | ||
? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) | ||
: peg$computeLocation(peg$maxFailPos, peg$maxFailPos) | ||
); | ||
} | ||
if (peg$result !== peg$FAILED && peg$currPos === input.length) { | ||
return peg$result; | ||
} else { | ||
if (peg$result !== peg$FAILED && peg$currPos < input.length) { | ||
peg$fail(peg$endExpectation()); | ||
} | ||
return { | ||
SyntaxError: peg$SyntaxError, | ||
parse: peg$parse | ||
}; | ||
})(); | ||
throw peg$buildStructuredError( | ||
peg$maxFailExpected, | ||
peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, | ||
peg$maxFailPos < input.length | ||
? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) | ||
: peg$computeLocation(peg$maxFailPos, peg$maxFailPos) | ||
); | ||
} | ||
} | ||
this['IntlMessageFormatParser'] = src$parser$$default; | ||
}).call(this); | ||
//# sourceMappingURL=parser.js.map | ||
root.IntlMessageFormatParser = { | ||
SyntaxError: peg$SyntaxError, | ||
parse: peg$parse | ||
}; | ||
})(this); |
'use strict'; | ||
exports = module.exports = require('./lib/parser')['default']; | ||
exports['default'] = exports; | ||
var parser = require('./lib/parser') | ||
module.exports = parser | ||
module.exports['default'] = parser |
2061
lib/parser.js
@@ -0,429 +1,470 @@ | ||
/* | ||
* Generated by PEG.js 0.10.0. | ||
* | ||
* http://pegjs.org/ | ||
*/ | ||
"use strict"; | ||
exports["default"] = (function() { | ||
"use strict"; | ||
function peg$subclass(child, parent) { | ||
function ctor() { this.constructor = child; } | ||
ctor.prototype = parent.prototype; | ||
child.prototype = new ctor(); | ||
} | ||
/* | ||
* Generated by PEG.js 0.9.0. | ||
* | ||
* http://pegjs.org/ | ||
*/ | ||
function peg$SyntaxError(message, expected, found, location) { | ||
this.message = message; | ||
this.expected = expected; | ||
this.found = found; | ||
this.location = location; | ||
this.name = "SyntaxError"; | ||
function peg$subclass(child, parent) { | ||
function ctor() { this.constructor = child; } | ||
ctor.prototype = parent.prototype; | ||
child.prototype = new ctor(); | ||
if (typeof Error.captureStackTrace === "function") { | ||
Error.captureStackTrace(this, peg$SyntaxError); | ||
} | ||
} | ||
function peg$SyntaxError(message, expected, found, location) { | ||
this.message = message; | ||
this.expected = expected; | ||
this.found = found; | ||
this.location = location; | ||
this.name = "SyntaxError"; | ||
peg$subclass(peg$SyntaxError, Error); | ||
if (typeof Error.captureStackTrace === "function") { | ||
Error.captureStackTrace(this, peg$SyntaxError); | ||
} | ||
} | ||
peg$SyntaxError.buildMessage = function(expected, found) { | ||
var DESCRIBE_EXPECTATION_FNS = { | ||
literal: function(expectation) { | ||
return "\"" + literalEscape(expectation.text) + "\""; | ||
}, | ||
peg$subclass(peg$SyntaxError, Error); | ||
"class": function(expectation) { | ||
var escapedParts = "", | ||
i; | ||
function peg$parse(input) { | ||
var options = arguments.length > 1 ? arguments[1] : {}, | ||
parser = this, | ||
for (i = 0; i < expectation.parts.length; i++) { | ||
escapedParts += expectation.parts[i] instanceof Array | ||
? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) | ||
: classEscape(expectation.parts[i]); | ||
} | ||
peg$FAILED = {}, | ||
return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; | ||
}, | ||
peg$startRuleFunctions = { start: peg$parsestart }, | ||
peg$startRuleFunction = peg$parsestart, | ||
any: function(expectation) { | ||
return "any character"; | ||
}, | ||
peg$c0 = function(elements) { | ||
return { | ||
type : 'messageFormatPattern', | ||
elements: elements, | ||
location: location() | ||
}; | ||
}, | ||
peg$c1 = function(text) { | ||
var string = '', | ||
i, j, outerLen, inner, innerLen; | ||
end: function(expectation) { | ||
return "end of input"; | ||
}, | ||
for (i = 0, outerLen = text.length; i < outerLen; i += 1) { | ||
inner = text[i]; | ||
other: function(expectation) { | ||
return expectation.description; | ||
} | ||
}; | ||
for (j = 0, innerLen = inner.length; j < innerLen; j += 1) { | ||
string += inner[j]; | ||
} | ||
} | ||
function hex(ch) { | ||
return ch.charCodeAt(0).toString(16).toUpperCase(); | ||
} | ||
return string; | ||
}, | ||
peg$c2 = function(messageText) { | ||
return { | ||
type : 'messageTextElement', | ||
value: messageText, | ||
location: location() | ||
}; | ||
}, | ||
peg$c3 = /^[^ \t\n\r,.+={}#]/, | ||
peg$c4 = { type: "class", value: "[^ \\t\\n\\r,.+={}#]", description: "[^ \\t\\n\\r,.+={}#]" }, | ||
peg$c5 = "{", | ||
peg$c6 = { type: "literal", value: "{", description: "\"{\"" }, | ||
peg$c7 = ",", | ||
peg$c8 = { type: "literal", value: ",", description: "\",\"" }, | ||
peg$c9 = "}", | ||
peg$c10 = { type: "literal", value: "}", description: "\"}\"" }, | ||
peg$c11 = function(id, format) { | ||
return { | ||
type : 'argumentElement', | ||
id : id, | ||
format: format && format[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c12 = "number", | ||
peg$c13 = { type: "literal", value: "number", description: "\"number\"" }, | ||
peg$c14 = "date", | ||
peg$c15 = { type: "literal", value: "date", description: "\"date\"" }, | ||
peg$c16 = "time", | ||
peg$c17 = { type: "literal", value: "time", description: "\"time\"" }, | ||
peg$c18 = function(type, style) { | ||
return { | ||
type : type + 'Format', | ||
style: style && style[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c19 = "plural", | ||
peg$c20 = { type: "literal", value: "plural", description: "\"plural\"" }, | ||
peg$c21 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: false, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c22 = "selectordinal", | ||
peg$c23 = { type: "literal", value: "selectordinal", description: "\"selectordinal\"" }, | ||
peg$c24 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: true, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
} | ||
}, | ||
peg$c25 = "select", | ||
peg$c26 = { type: "literal", value: "select", description: "\"select\"" }, | ||
peg$c27 = function(options) { | ||
return { | ||
type : 'selectFormat', | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c28 = "=", | ||
peg$c29 = { type: "literal", value: "=", description: "\"=\"" }, | ||
peg$c30 = function(selector, pattern) { | ||
return { | ||
type : 'optionalFormatPattern', | ||
selector: selector, | ||
value : pattern, | ||
location: location() | ||
}; | ||
}, | ||
peg$c31 = "offset:", | ||
peg$c32 = { type: "literal", value: "offset:", description: "\"offset:\"" }, | ||
peg$c33 = function(number) { | ||
return number; | ||
}, | ||
peg$c34 = function(offset, options) { | ||
return { | ||
type : 'pluralFormat', | ||
offset : offset, | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c35 = { type: "other", description: "whitespace" }, | ||
peg$c36 = /^[ \t\n\r]/, | ||
peg$c37 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" }, | ||
peg$c38 = { type: "other", description: "optionalWhitespace" }, | ||
peg$c39 = /^[0-9]/, | ||
peg$c40 = { type: "class", value: "[0-9]", description: "[0-9]" }, | ||
peg$c41 = /^[0-9a-f]/i, | ||
peg$c42 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]i" }, | ||
peg$c43 = "0", | ||
peg$c44 = { type: "literal", value: "0", description: "\"0\"" }, | ||
peg$c45 = /^[1-9]/, | ||
peg$c46 = { type: "class", value: "[1-9]", description: "[1-9]" }, | ||
peg$c47 = function(digits) { | ||
return parseInt(digits, 10); | ||
}, | ||
peg$c48 = /^[^{}\\\0-\x1F \t\n\r]/, | ||
peg$c49 = { type: "class", value: "[^{}\\\\\\0-\\x1F\\x7f \\t\\n\\r]", description: "[^{}\\\\\\0-\\x1F\\x7f \\t\\n\\r]" }, | ||
peg$c50 = "\\\\", | ||
peg$c51 = { type: "literal", value: "\\\\", description: "\"\\\\\\\\\"" }, | ||
peg$c52 = function() { return '\\'; }, | ||
peg$c53 = "\\#", | ||
peg$c54 = { type: "literal", value: "\\#", description: "\"\\\\#\"" }, | ||
peg$c55 = function() { return '\\#'; }, | ||
peg$c56 = "\\{", | ||
peg$c57 = { type: "literal", value: "\\{", description: "\"\\\\{\"" }, | ||
peg$c58 = function() { return '\u007B'; }, | ||
peg$c59 = "\\}", | ||
peg$c60 = { type: "literal", value: "\\}", description: "\"\\\\}\"" }, | ||
peg$c61 = function() { return '\u007D'; }, | ||
peg$c62 = "\\u", | ||
peg$c63 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, | ||
peg$c64 = function(digits) { | ||
return String.fromCharCode(parseInt(digits, 16)); | ||
}, | ||
peg$c65 = function(chars) { return chars.join(''); }, | ||
function literalEscape(s) { | ||
return s | ||
.replace(/\\/g, '\\\\') | ||
.replace(/"/g, '\\"') | ||
.replace(/\0/g, '\\0') | ||
.replace(/\t/g, '\\t') | ||
.replace(/\n/g, '\\n') | ||
.replace(/\r/g, '\\r') | ||
.replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) | ||
.replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); | ||
} | ||
peg$currPos = 0, | ||
peg$savedPos = 0, | ||
peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], | ||
peg$maxFailPos = 0, | ||
peg$maxFailExpected = [], | ||
peg$silentFails = 0, | ||
function classEscape(s) { | ||
return s | ||
.replace(/\\/g, '\\\\') | ||
.replace(/\]/g, '\\]') | ||
.replace(/\^/g, '\\^') | ||
.replace(/-/g, '\\-') | ||
.replace(/\0/g, '\\0') | ||
.replace(/\t/g, '\\t') | ||
.replace(/\n/g, '\\n') | ||
.replace(/\r/g, '\\r') | ||
.replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) | ||
.replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); | ||
} | ||
peg$result; | ||
function describeExpectation(expectation) { | ||
return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); | ||
} | ||
if ("startRule" in options) { | ||
if (!(options.startRule in peg$startRuleFunctions)) { | ||
throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); | ||
} | ||
function describeExpected(expected) { | ||
var descriptions = new Array(expected.length), | ||
i, j; | ||
peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; | ||
for (i = 0; i < expected.length; i++) { | ||
descriptions[i] = describeExpectation(expected[i]); | ||
} | ||
function text() { | ||
return input.substring(peg$savedPos, peg$currPos); | ||
} | ||
descriptions.sort(); | ||
function location() { | ||
return peg$computeLocation(peg$savedPos, peg$currPos); | ||
if (descriptions.length > 0) { | ||
for (i = 1, j = 1; i < descriptions.length; i++) { | ||
if (descriptions[i - 1] !== descriptions[i]) { | ||
descriptions[j] = descriptions[i]; | ||
j++; | ||
} | ||
} | ||
descriptions.length = j; | ||
} | ||
function expected(description) { | ||
throw peg$buildException( | ||
null, | ||
[{ type: "other", description: description }], | ||
input.substring(peg$savedPos, peg$currPos), | ||
peg$computeLocation(peg$savedPos, peg$currPos) | ||
); | ||
} | ||
switch (descriptions.length) { | ||
case 1: | ||
return descriptions[0]; | ||
function error(message) { | ||
throw peg$buildException( | ||
message, | ||
null, | ||
input.substring(peg$savedPos, peg$currPos), | ||
peg$computeLocation(peg$savedPos, peg$currPos) | ||
); | ||
case 2: | ||
return descriptions[0] + " or " + descriptions[1]; | ||
default: | ||
return descriptions.slice(0, -1).join(", ") | ||
+ ", or " | ||
+ descriptions[descriptions.length - 1]; | ||
} | ||
} | ||
function peg$computePosDetails(pos) { | ||
var details = peg$posDetailsCache[pos], | ||
p, ch; | ||
function describeFound(found) { | ||
return found ? "\"" + literalEscape(found) + "\"" : "end of input"; | ||
} | ||
if (details) { | ||
return details; | ||
} else { | ||
p = pos - 1; | ||
while (!peg$posDetailsCache[p]) { | ||
p--; | ||
} | ||
return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; | ||
}; | ||
details = peg$posDetailsCache[p]; | ||
details = { | ||
line: details.line, | ||
column: details.column, | ||
seenCR: details.seenCR | ||
}; | ||
function peg$parse(input, options) { | ||
options = options !== void 0 ? options : {}; | ||
while (p < pos) { | ||
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; | ||
} | ||
var peg$FAILED = {}, | ||
p++; | ||
} | ||
peg$startRuleFunctions = { start: peg$parsestart }, | ||
peg$startRuleFunction = peg$parsestart, | ||
peg$posDetailsCache[pos] = details; | ||
return details; | ||
} | ||
} | ||
peg$c0 = function(elements) { | ||
return { | ||
type : 'messageFormatPattern', | ||
elements: elements, | ||
location: location() | ||
}; | ||
}, | ||
peg$c1 = function(chunks) { | ||
return chunks.reduce(function (all, chunk) { | ||
return all.concat(chunk) | ||
}, []).join('') | ||
}, | ||
peg$c2 = function(messageText) { | ||
return { | ||
type : 'messageTextElement', | ||
value: messageText, | ||
location: location() | ||
}; | ||
}, | ||
peg$c3 = /^[^ \t\n\r,.+={}#]/, | ||
peg$c4 = peg$classExpectation([" ", "\t", "\n", "\r", ",", ".", "+", "=", "{", "}", "#"], true, false), | ||
peg$c5 = "{", | ||
peg$c6 = peg$literalExpectation("{", false), | ||
peg$c7 = ",", | ||
peg$c8 = peg$literalExpectation(",", false), | ||
peg$c9 = "}", | ||
peg$c10 = peg$literalExpectation("}", false), | ||
peg$c11 = function(id, format) { | ||
return { | ||
type : 'argumentElement', | ||
id : id, | ||
format: format && format[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c12 = "number", | ||
peg$c13 = peg$literalExpectation("number", false), | ||
peg$c14 = "date", | ||
peg$c15 = peg$literalExpectation("date", false), | ||
peg$c16 = "time", | ||
peg$c17 = peg$literalExpectation("time", false), | ||
peg$c18 = function(type, style) { | ||
return { | ||
type : type + 'Format', | ||
style: style && style[2], | ||
location: location() | ||
}; | ||
}, | ||
peg$c19 = "plural", | ||
peg$c20 = peg$literalExpectation("plural", false), | ||
peg$c21 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: false, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c22 = "selectordinal", | ||
peg$c23 = peg$literalExpectation("selectordinal", false), | ||
peg$c24 = function(pluralStyle) { | ||
return { | ||
type : pluralStyle.type, | ||
ordinal: true, | ||
offset : pluralStyle.offset || 0, | ||
options: pluralStyle.options, | ||
location: location() | ||
} | ||
}, | ||
peg$c25 = "select", | ||
peg$c26 = peg$literalExpectation("select", false), | ||
peg$c27 = function(options) { | ||
return { | ||
type : 'selectFormat', | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c28 = "=", | ||
peg$c29 = peg$literalExpectation("=", false), | ||
peg$c30 = function(selector, pattern) { | ||
return { | ||
type : 'optionalFormatPattern', | ||
selector: selector, | ||
value : pattern, | ||
location: location() | ||
}; | ||
}, | ||
peg$c31 = "offset:", | ||
peg$c32 = peg$literalExpectation("offset:", false), | ||
peg$c33 = function(number) { | ||
return number; | ||
}, | ||
peg$c34 = function(offset, options) { | ||
return { | ||
type : 'pluralFormat', | ||
offset : offset, | ||
options: options, | ||
location: location() | ||
}; | ||
}, | ||
peg$c35 = peg$otherExpectation("whitespace"), | ||
peg$c36 = /^[ \t\n\r]/, | ||
peg$c37 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false), | ||
peg$c38 = peg$otherExpectation("optionalWhitespace"), | ||
peg$c39 = /^[0-9]/, | ||
peg$c40 = peg$classExpectation([["0", "9"]], false, false), | ||
peg$c41 = /^[0-9a-f]/i, | ||
peg$c42 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), | ||
peg$c43 = "0", | ||
peg$c44 = peg$literalExpectation("0", false), | ||
peg$c45 = /^[1-9]/, | ||
peg$c46 = peg$classExpectation([["1", "9"]], false, false), | ||
peg$c47 = function(digits) { | ||
return parseInt(digits, 10); | ||
}, | ||
peg$c48 = /^[^{}\\\0-\x1F\x7F \t\n\r]/, | ||
peg$c49 = peg$classExpectation(["{", "}", "\\", ["\0", "\x1F"], "\x7F", " ", "\t", "\n", "\r"], true, false), | ||
peg$c50 = "\\\\", | ||
peg$c51 = peg$literalExpectation("\\\\", false), | ||
peg$c52 = function() { return '\\'; }, | ||
peg$c53 = "\\#", | ||
peg$c54 = peg$literalExpectation("\\#", false), | ||
peg$c55 = function() { return '\\#'; }, | ||
peg$c56 = "\\{", | ||
peg$c57 = peg$literalExpectation("\\{", false), | ||
peg$c58 = function() { return '\u007B'; }, | ||
peg$c59 = "\\}", | ||
peg$c60 = peg$literalExpectation("\\}", false), | ||
peg$c61 = function() { return '\u007D'; }, | ||
peg$c62 = "\\u", | ||
peg$c63 = peg$literalExpectation("\\u", false), | ||
peg$c64 = function(digits) { | ||
return String.fromCharCode(parseInt(digits, 16)); | ||
}, | ||
peg$c65 = function(chars) { return chars.join(''); }, | ||
function peg$computeLocation(startPos, endPos) { | ||
var startPosDetails = peg$computePosDetails(startPos), | ||
endPosDetails = peg$computePosDetails(endPos); | ||
peg$currPos = 0, | ||
peg$savedPos = 0, | ||
peg$posDetailsCache = [{ line: 1, column: 1 }], | ||
peg$maxFailPos = 0, | ||
peg$maxFailExpected = [], | ||
peg$silentFails = 0, | ||
return { | ||
start: { | ||
offset: startPos, | ||
line: startPosDetails.line, | ||
column: startPosDetails.column | ||
}, | ||
end: { | ||
offset: endPos, | ||
line: endPosDetails.line, | ||
column: endPosDetails.column | ||
} | ||
}; | ||
peg$result; | ||
if ("startRule" in options) { | ||
if (!(options.startRule in peg$startRuleFunctions)) { | ||
throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); | ||
} | ||
function peg$fail(expected) { | ||
if (peg$currPos < peg$maxFailPos) { return; } | ||
peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; | ||
} | ||
if (peg$currPos > peg$maxFailPos) { | ||
peg$maxFailPos = peg$currPos; | ||
peg$maxFailExpected = []; | ||
} | ||
function text() { | ||
return input.substring(peg$savedPos, peg$currPos); | ||
} | ||
peg$maxFailExpected.push(expected); | ||
} | ||
function location() { | ||
return peg$computeLocation(peg$savedPos, peg$currPos); | ||
} | ||
function peg$buildException(message, expected, found, location) { | ||
function cleanupExpected(expected) { | ||
var i = 1; | ||
function expected(description, location) { | ||
location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) | ||
expected.sort(function(a, b) { | ||
if (a.description < b.description) { | ||
return -1; | ||
} else if (a.description > b.description) { | ||
return 1; | ||
} else { | ||
return 0; | ||
} | ||
}); | ||
throw peg$buildStructuredError( | ||
[peg$otherExpectation(description)], | ||
input.substring(peg$savedPos, peg$currPos), | ||
location | ||
); | ||
} | ||
while (i < expected.length) { | ||
if (expected[i - 1] === expected[i]) { | ||
expected.splice(i, 1); | ||
} else { | ||
i++; | ||
} | ||
} | ||
} | ||
function error(message, location) { | ||
location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) | ||
function buildMessage(expected, found) { | ||
function stringEscape(s) { | ||
function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } | ||
throw peg$buildSimpleError(message, location); | ||
} | ||
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(/[\u0100-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) | ||
.replace(/[\u1000-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); }); | ||
} | ||
function peg$literalExpectation(text, ignoreCase) { | ||
return { type: "literal", text: text, ignoreCase: ignoreCase }; | ||
} | ||
var expectedDescs = new Array(expected.length), | ||
expectedDesc, foundDesc, i; | ||
function peg$classExpectation(parts, inverted, ignoreCase) { | ||
return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; | ||
} | ||
for (i = 0; i < expected.length; i++) { | ||
expectedDescs[i] = expected[i].description; | ||
} | ||
function peg$anyExpectation() { | ||
return { type: "any" }; | ||
} | ||
expectedDesc = expected.length > 1 | ||
? expectedDescs.slice(0, -1).join(", ") | ||
+ " or " | ||
+ expectedDescs[expected.length - 1] | ||
: expectedDescs[0]; | ||
function peg$endExpectation() { | ||
return { type: "end" }; | ||
} | ||
foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; | ||
function peg$otherExpectation(description) { | ||
return { type: "other", description: description }; | ||
} | ||
return "Expected " + expectedDesc + " but " + foundDesc + " found."; | ||
function peg$computePosDetails(pos) { | ||
var details = peg$posDetailsCache[pos], p; | ||
if (details) { | ||
return details; | ||
} else { | ||
p = pos - 1; | ||
while (!peg$posDetailsCache[p]) { | ||
p--; | ||
} | ||
if (expected !== null) { | ||
cleanupExpected(expected); | ||
details = peg$posDetailsCache[p]; | ||
details = { | ||
line: details.line, | ||
column: details.column | ||
}; | ||
while (p < pos) { | ||
if (input.charCodeAt(p) === 10) { | ||
details.line++; | ||
details.column = 1; | ||
} else { | ||
details.column++; | ||
} | ||
p++; | ||
} | ||
return new peg$SyntaxError( | ||
message !== null ? message : buildMessage(expected, found), | ||
expected, | ||
found, | ||
location | ||
); | ||
peg$posDetailsCache[pos] = details; | ||
return details; | ||
} | ||
} | ||
function peg$parsestart() { | ||
var s0; | ||
function peg$computeLocation(startPos, endPos) { | ||
var startPosDetails = peg$computePosDetails(startPos), | ||
endPosDetails = peg$computePosDetails(endPos); | ||
s0 = peg$parsemessageFormatPattern(); | ||
return { | ||
start: { | ||
offset: startPos, | ||
line: startPosDetails.line, | ||
column: startPosDetails.column | ||
}, | ||
end: { | ||
offset: endPos, | ||
line: endPosDetails.line, | ||
column: endPosDetails.column | ||
} | ||
}; | ||
} | ||
return s0; | ||
function peg$fail(expected) { | ||
if (peg$currPos < peg$maxFailPos) { return; } | ||
if (peg$currPos > peg$maxFailPos) { | ||
peg$maxFailPos = peg$currPos; | ||
peg$maxFailExpected = []; | ||
} | ||
function peg$parsemessageFormatPattern() { | ||
var s0, s1, s2; | ||
peg$maxFailExpected.push(expected); | ||
} | ||
s0 = peg$currPos; | ||
s1 = []; | ||
function peg$buildSimpleError(message, location) { | ||
return new peg$SyntaxError(message, null, null, location); | ||
} | ||
function peg$buildStructuredError(expected, found, location) { | ||
return new peg$SyntaxError( | ||
peg$SyntaxError.buildMessage(expected, found), | ||
expected, | ||
found, | ||
location | ||
); | ||
} | ||
function peg$parsestart() { | ||
var s0; | ||
s0 = peg$parsemessageFormatPattern(); | ||
return s0; | ||
} | ||
function peg$parsemessageFormatPattern() { | ||
var s0, s1, s2; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsemessageFormatElement(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsemessageFormatElement(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsemessageFormatElement(); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c0(s1); | ||
} | ||
s0 = s1; | ||
return s0; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c0(s1); | ||
} | ||
s0 = s1; | ||
function peg$parsemessageFormatElement() { | ||
var s0; | ||
return s0; | ||
} | ||
s0 = peg$parsemessageTextElement(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseargumentElement(); | ||
} | ||
function peg$parsemessageFormatElement() { | ||
var s0; | ||
return s0; | ||
s0 = peg$parsemessageTextElement(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseargumentElement(); | ||
} | ||
function peg$parsemessageText() { | ||
var s0, s1, s2, s3, s4, s5; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$currPos; | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parsechars(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s3 = [s3, s4, s5]; | ||
s2 = s3; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
function peg$parsemessageText() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$currPos; | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parsechars(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s3 = [s3, s4, s5]; | ||
s2 = s3; | ||
} else { | ||
@@ -437,18 +478,18 @@ peg$currPos = s2; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$currPos; | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parsechars(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s3 = [s3, s4, s5]; | ||
s2 = s3; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$currPos; | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parsechars(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s3 = [s3, s4, s5]; | ||
s2 = s3; | ||
} else { | ||
@@ -462,113 +503,113 @@ peg$currPos = s2; | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c1(s1); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = peg$parsews(); | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
} | ||
return s0; | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
function peg$parsemessageTextElement() { | ||
var s0, s1; | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c1(s1); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = peg$parsemessageText(); | ||
s1 = peg$parsews(); | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c2(s1); | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
s0 = s1; | ||
return s0; | ||
} | ||
function peg$parseargument() { | ||
var s0, s1, s2; | ||
return s0; | ||
} | ||
s0 = peg$parsenumber(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = []; | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
} | ||
function peg$parsemessageTextElement() { | ||
var s0, s1; | ||
return s0; | ||
s0 = peg$currPos; | ||
s1 = peg$parsemessageText(); | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c2(s1); | ||
} | ||
s0 = s1; | ||
function peg$parseargumentElement() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7, s8; | ||
return s0; | ||
} | ||
function peg$parseargument() { | ||
var s0, s1, s2; | ||
s0 = peg$parsenumber(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s1 = peg$c5; | ||
s1 = []; | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parseargument(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s6 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parse_(); | ||
if (s7 !== peg$FAILED) { | ||
s8 = peg$parseelementFormat(); | ||
if (s8 !== peg$FAILED) { | ||
s6 = [s6, s7, s8]; | ||
s5 = s6; | ||
} else { | ||
peg$currPos = s5; | ||
s5 = peg$FAILED; | ||
} | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
} | ||
return s0; | ||
} | ||
function peg$parseargumentElement() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7, s8; | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s1 = peg$c5; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parseargument(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s6 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parse_(); | ||
if (s7 !== peg$FAILED) { | ||
s8 = peg$parseelementFormat(); | ||
if (s8 !== peg$FAILED) { | ||
s6 = [s6, s7, s8]; | ||
s5 = s6; | ||
} else { | ||
@@ -582,24 +623,24 @@ peg$currPos = s5; | ||
} | ||
if (s5 === peg$FAILED) { | ||
s5 = null; | ||
} | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parse_(); | ||
if (s6 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s7 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s7 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s7 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c11(s3, s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s5; | ||
s5 = peg$FAILED; | ||
} | ||
if (s5 === peg$FAILED) { | ||
s5 = null; | ||
} | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parse_(); | ||
if (s6 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s7 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s7 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s7 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c11(s3, s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
@@ -628,74 +669,74 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseelementFormat() { | ||
var s0; | ||
return s0; | ||
} | ||
s0 = peg$parsesimpleFormat(); | ||
function peg$parseelementFormat() { | ||
var s0; | ||
s0 = peg$parsesimpleFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsepluralFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsepluralFormat(); | ||
s0 = peg$parseselectOrdinalFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseselectOrdinalFormat(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseselectFormat(); | ||
} | ||
s0 = peg$parseselectFormat(); | ||
} | ||
} | ||
return s0; | ||
} | ||
function peg$parsesimpleFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c12) { | ||
s1 = peg$c12; | ||
peg$currPos += 6; | ||
function peg$parsesimpleFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c12) { | ||
s1 = peg$c12; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
if (input.substr(peg$currPos, 4) === peg$c14) { | ||
s1 = peg$c14; | ||
peg$currPos += 4; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
if (input.substr(peg$currPos, 4) === peg$c14) { | ||
s1 = peg$c14; | ||
if (input.substr(peg$currPos, 4) === peg$c16) { | ||
s1 = peg$c16; | ||
peg$currPos += 4; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c17); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
if (input.substr(peg$currPos, 4) === peg$c16) { | ||
s1 = peg$c16; | ||
peg$currPos += 4; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c17); } | ||
} | ||
} | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s4 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s4 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsechars(); | ||
if (s6 !== peg$FAILED) { | ||
s4 = [s4, s5, s6]; | ||
s3 = s4; | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsechars(); | ||
if (s6 !== peg$FAILED) { | ||
s4 = [s4, s5, s6]; | ||
s3 = s4; | ||
} else { | ||
@@ -709,14 +750,14 @@ peg$currPos = s3; | ||
} | ||
if (s3 === peg$FAILED) { | ||
s3 = null; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c18(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 === peg$FAILED) { | ||
s3 = null; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c18(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
@@ -729,39 +770,39 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parsepluralFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c19) { | ||
s1 = peg$c19; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c20); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c21(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parsepluralFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c19) { | ||
s1 = peg$c19; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c20); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c21(s5); | ||
s0 = s1; | ||
} else { | ||
@@ -783,39 +824,39 @@ peg$currPos = s0; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseselectOrdinalFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 13) === peg$c22) { | ||
s1 = peg$c22; | ||
peg$currPos += 13; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c23); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c24(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseselectOrdinalFormat() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 13) === peg$c22) { | ||
s1 = peg$c22; | ||
peg$currPos += 13; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c23); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsepluralStyle(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c24(s5); | ||
s0 = s1; | ||
} else { | ||
@@ -837,49 +878,49 @@ peg$currPos = s0; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseselectFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c25) { | ||
s1 = peg$c25; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c26); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = []; | ||
s6 = peg$parseoptionalFormatPattern(); | ||
if (s6 !== peg$FAILED) { | ||
while (s6 !== peg$FAILED) { | ||
s5.push(s6); | ||
s6 = peg$parseoptionalFormatPattern(); | ||
} | ||
} else { | ||
s5 = peg$FAILED; | ||
function peg$parseselectFormat() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 6) === peg$c25) { | ||
s1 = peg$c25; | ||
peg$currPos += 6; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c26); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s3 = peg$c7; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = []; | ||
s6 = peg$parseoptionalFormatPattern(); | ||
if (s6 !== peg$FAILED) { | ||
while (s6 !== peg$FAILED) { | ||
s5.push(s6); | ||
s6 = peg$parseoptionalFormatPattern(); | ||
} | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c27(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
s5 = peg$FAILED; | ||
} | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c27(s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
@@ -900,91 +941,79 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseselector() { | ||
var s0, s1, s2, s3; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 61) { | ||
s2 = peg$c28; | ||
peg$currPos++; | ||
function peg$parseselector() { | ||
var s0, s1, s2, s3; | ||
s0 = peg$currPos; | ||
s1 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 61) { | ||
s2 = peg$c28; | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c29); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
s2 = [s2, s3]; | ||
s1 = s2; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c29); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
s2 = [s2, s3]; | ||
s1 = s2; | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsechars(); | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsechars(); | ||
} | ||
function peg$parseoptionalFormatPattern() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7, s8; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$parse_(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parseselector(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s4 = peg$c5; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsemessageFormatPattern(); | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parse_(); | ||
if (s7 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s8 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s8 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s8 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c30(s2, s6); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseoptionalFormatPattern() { | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
s0 = peg$currPos; | ||
s1 = peg$parse_(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parseselector(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parse_(); | ||
if (s3 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 123) { | ||
s4 = peg$c5; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsemessageFormatPattern(); | ||
if (s5 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s6 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c30(s2, s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
@@ -1009,29 +1038,29 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseoffset() { | ||
var s0, s1, s2, s3; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 7) === peg$c31) { | ||
s1 = peg$c31; | ||
peg$currPos += 7; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c32); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c33(s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parseoffset() { | ||
var s0, s1, s2, s3; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 7) === peg$c31) { | ||
s1 = peg$c31; | ||
peg$currPos += 7; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c32); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenumber(); | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c33(s3); | ||
s0 = s1; | ||
} else { | ||
@@ -1045,36 +1074,36 @@ peg$currPos = s0; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parsepluralStyle() { | ||
var s0, s1, s2, s3, s4; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = peg$parseoffset(); | ||
if (s1 === peg$FAILED) { | ||
s1 = null; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
s4 = peg$parseoptionalFormatPattern(); | ||
if (s4 !== peg$FAILED) { | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
s4 = peg$parseoptionalFormatPattern(); | ||
} | ||
} else { | ||
s3 = peg$FAILED; | ||
function peg$parsepluralStyle() { | ||
var s0, s1, s2, s3, s4; | ||
s0 = peg$currPos; | ||
s1 = peg$parseoffset(); | ||
if (s1 === peg$FAILED) { | ||
s1 = null; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
s4 = peg$parseoptionalFormatPattern(); | ||
if (s4 !== peg$FAILED) { | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
s4 = peg$parseoptionalFormatPattern(); | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c34(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c34(s1, s3); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
@@ -1087,129 +1116,129 @@ s0 = peg$FAILED; | ||
} | ||
return s0; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
function peg$parsews() { | ||
var s0, s1; | ||
return s0; | ||
} | ||
peg$silentFails++; | ||
s0 = []; | ||
if (peg$c36.test(input.charAt(peg$currPos))) { | ||
s1 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c37); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
while (s1 !== peg$FAILED) { | ||
s0.push(s1); | ||
if (peg$c36.test(input.charAt(peg$currPos))) { | ||
s1 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c37); } | ||
} | ||
function peg$parsews() { | ||
var s0, s1; | ||
peg$silentFails++; | ||
s0 = []; | ||
if (peg$c36.test(input.charAt(peg$currPos))) { | ||
s1 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c37); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
while (s1 !== peg$FAILED) { | ||
s0.push(s1); | ||
if (peg$c36.test(input.charAt(peg$currPos))) { | ||
s1 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c37); } | ||
} | ||
} else { | ||
s0 = peg$FAILED; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c35); } | ||
} | ||
return s0; | ||
} else { | ||
s0 = peg$FAILED; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c35); } | ||
} | ||
function peg$parse_() { | ||
var s0, s1, s2; | ||
return s0; | ||
} | ||
peg$silentFails++; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
function peg$parse_() { | ||
var s0, s1, s2; | ||
peg$silentFails++; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsews(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsews(); | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsews(); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c38); } | ||
} | ||
return s0; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s0 = input.substring(s0, peg$currPos); | ||
} else { | ||
s0 = s1; | ||
} | ||
peg$silentFails--; | ||
if (s0 === peg$FAILED) { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c38); } | ||
} | ||
function peg$parsedigit() { | ||
var s0; | ||
return s0; | ||
} | ||
if (peg$c39.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c40); } | ||
} | ||
function peg$parsedigit() { | ||
var s0; | ||
return s0; | ||
if (peg$c39.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c40); } | ||
} | ||
function peg$parsehexDigit() { | ||
var s0; | ||
return s0; | ||
} | ||
if (peg$c41.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c42); } | ||
} | ||
function peg$parsehexDigit() { | ||
var s0; | ||
return s0; | ||
if (peg$c41.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c42); } | ||
} | ||
function peg$parsenumber() { | ||
var s0, s1, s2, s3, s4, s5; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 48) { | ||
s1 = peg$c43; | ||
function peg$parsenumber() { | ||
var s0, s1, s2, s3, s4, s5; | ||
s0 = peg$currPos; | ||
if (input.charCodeAt(peg$currPos) === 48) { | ||
s1 = peg$c43; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c44); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
s1 = peg$currPos; | ||
s2 = peg$currPos; | ||
if (peg$c45.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c44); } | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c46); } | ||
} | ||
if (s1 === peg$FAILED) { | ||
s1 = peg$currPos; | ||
s2 = peg$currPos; | ||
if (peg$c45.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c46); } | ||
if (s3 !== peg$FAILED) { | ||
s4 = []; | ||
s5 = peg$parsedigit(); | ||
while (s5 !== peg$FAILED) { | ||
s4.push(s5); | ||
s5 = peg$parsedigit(); | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s4 = []; | ||
s5 = peg$parsedigit(); | ||
while (s5 !== peg$FAILED) { | ||
s4.push(s5); | ||
s5 = peg$parsedigit(); | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s3 = [s3, s4]; | ||
s2 = s3; | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s3 = [s3, s4]; | ||
s2 = s3; | ||
} else { | ||
@@ -1219,39 +1248,57 @@ peg$currPos = s2; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s1 = input.substring(s1, peg$currPos); | ||
} else { | ||
s1 = s2; | ||
} | ||
} else { | ||
peg$currPos = s2; | ||
s2 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c47(s1); | ||
if (s2 !== peg$FAILED) { | ||
s1 = input.substring(s1, peg$currPos); | ||
} else { | ||
s1 = s2; | ||
} | ||
s0 = s1; | ||
return s0; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c47(s1); | ||
} | ||
s0 = s1; | ||
function peg$parsechar() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7; | ||
return s0; | ||
} | ||
if (peg$c48.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
function peg$parsechar() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7; | ||
if (peg$c48.test(input.charAt(peg$currPos))) { | ||
s0 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c49); } | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c50) { | ||
s1 = peg$c50; | ||
peg$currPos += 2; | ||
} else { | ||
s0 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c49); } | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c51); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c52(); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c50) { | ||
s1 = peg$c50; | ||
if (input.substr(peg$currPos, 2) === peg$c53) { | ||
s1 = peg$c53; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c51); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c54); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c52(); | ||
s1 = peg$c55(); | ||
} | ||
@@ -1261,12 +1308,12 @@ s0 = s1; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c53) { | ||
s1 = peg$c53; | ||
if (input.substr(peg$currPos, 2) === peg$c56) { | ||
s1 = peg$c56; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c54); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c57); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c55(); | ||
s1 = peg$c58(); | ||
} | ||
@@ -1276,12 +1323,12 @@ s0 = s1; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c56) { | ||
s1 = peg$c56; | ||
if (input.substr(peg$currPos, 2) === peg$c59) { | ||
s1 = peg$c59; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c57); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c60); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c58(); | ||
s1 = peg$c61(); | ||
} | ||
@@ -1291,40 +1338,22 @@ s0 = s1; | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c59) { | ||
s1 = peg$c59; | ||
if (input.substr(peg$currPos, 2) === peg$c62) { | ||
s1 = peg$c62; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c60); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c63); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c61(); | ||
} | ||
s0 = s1; | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$currPos; | ||
if (input.substr(peg$currPos, 2) === peg$c62) { | ||
s1 = peg$c62; | ||
peg$currPos += 2; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c63); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$currPos; | ||
s3 = peg$currPos; | ||
s4 = peg$parsehexDigit(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsehexDigit(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsehexDigit(); | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parsehexDigit(); | ||
if (s7 !== peg$FAILED) { | ||
s4 = [s4, s5, s6, s7]; | ||
s3 = s4; | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
s2 = peg$currPos; | ||
s3 = peg$currPos; | ||
s4 = peg$parsehexDigit(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parsehexDigit(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsehexDigit(); | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parsehexDigit(); | ||
if (s7 !== peg$FAILED) { | ||
s4 = [s4, s5, s6, s7]; | ||
s3 = s4; | ||
} else { | ||
@@ -1342,19 +1371,22 @@ peg$currPos = s3; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s2 = input.substring(s2, peg$currPos); | ||
} else { | ||
s2 = s3; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c64(s2); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s3; | ||
s3 = peg$FAILED; | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s2 = input.substring(s2, peg$currPos); | ||
} else { | ||
s2 = s3; | ||
} | ||
if (s2 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c64(s2); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
@@ -1365,55 +1397,52 @@ } | ||
} | ||
return s0; | ||
} | ||
function peg$parsechars() { | ||
var s0, s1, s2; | ||
return s0; | ||
} | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsechar(); | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsechar(); | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
function peg$parsechars() { | ||
var s0, s1, s2; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
s2 = peg$parsechar(); | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
s2 = peg$parsechar(); | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c65(s1); | ||
} | ||
s0 = s1; | ||
return s0; | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c65(s1); | ||
} | ||
s0 = s1; | ||
peg$result = peg$startRuleFunction(); | ||
return s0; | ||
} | ||
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" }); | ||
} | ||
peg$result = peg$startRuleFunction(); | ||
throw peg$buildException( | ||
null, | ||
peg$maxFailExpected, | ||
peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, | ||
peg$maxFailPos < input.length | ||
? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) | ||
: peg$computeLocation(peg$maxFailPos, peg$maxFailPos) | ||
); | ||
if (peg$result !== peg$FAILED && peg$currPos === input.length) { | ||
return peg$result; | ||
} else { | ||
if (peg$result !== peg$FAILED && peg$currPos < input.length) { | ||
peg$fail(peg$endExpectation()); | ||
} | ||
throw peg$buildStructuredError( | ||
peg$maxFailExpected, | ||
peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, | ||
peg$maxFailPos < input.length | ||
? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) | ||
: peg$computeLocation(peg$maxFailPos, peg$maxFailPos) | ||
); | ||
} | ||
} | ||
return { | ||
SyntaxError: peg$SyntaxError, | ||
parse: peg$parse | ||
}; | ||
})(); | ||
//# sourceMappingURL=parser.js.map | ||
module.exports = { | ||
SyntaxError: peg$SyntaxError, | ||
parse: peg$parse | ||
}; |
{ | ||
"name": "intl-messageformat-parser", | ||
"version": "1.5.1", | ||
"version": "1.6.0", | ||
"description": "Parses ICU Message strings into an AST via JavaScript.", | ||
"main": "index.js", | ||
"jsnext:main": "src/parser.js", | ||
"browser": "dist/parser.js", | ||
"scripts": { | ||
"test": "istanbul cover -- _mocha test/unit/ --reporter spec", | ||
"prepublish": "grunt" | ||
"clean": "rimraf dist lib", | ||
"test": "mocha test/unit/ --reporter spec", | ||
"cover": "nyc npm t", | ||
"build": "npm run clean && ./build.js", | ||
"benchmark": "./test/benchmark.js", | ||
"prepublish": "npm run build" | ||
}, | ||
"contributors": [ | ||
"Eric Ferraiuolo <eferraiuolo@gmail.com>", | ||
"Long Ho <holevietlong@gmail.com>", | ||
"Ryuichi Okumura <okuryu@okuryu.com>", | ||
"Seth Bertalotto <seth@bertalotto.net>", | ||
"Song Seunggeun <giff.song@gmail.com>", | ||
"Tobias Bieniek <tobias.bieniek@gmail.com>" | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "git://github.com/yahoo/intl-messageformat-parser.git" | ||
"url": "git://github.com/formatjs/formatjs.git" | ||
}, | ||
@@ -29,18 +42,5 @@ "keywords": [ | ||
"bugs": { | ||
"url": "https://github.com/yahoo/intl-messageformat-parser/issues" | ||
"url": "https://github.com/formatjs/formatjs/issues" | ||
}, | ||
"homepage": "https://github.com/yahoo/intl-messageformat-parser", | ||
"devDependencies": { | ||
"expect.js": "^0.3.1", | ||
"grunt": "^0.4.5", | ||
"grunt-benchmark": "^0.3.0", | ||
"grunt-bundle-jsnext-lib": "^0.5.0", | ||
"grunt-cli": "^0.1.13", | ||
"grunt-contrib-clean": "^0.6.0", | ||
"grunt-contrib-copy": "^0.7.0", | ||
"grunt-peg": "^2.0.1", | ||
"istanbul": "^0.3.2", | ||
"mocha": "^2.0.1", | ||
"xunit-file": "0.0.6" | ||
} | ||
"homepage": "https://github.com/formatjs/formatjs" | ||
} |
@@ -158,6 +158,6 @@ Intl MessageFormat Parser | ||
[npm-badge]: https://img.shields.io/npm/v/intl-messageformat-parser.svg?style=flat-square | ||
[david]: https://david-dm.org/yahoo/intl-messageformat-parser | ||
[david-badge]: https://img.shields.io/david/yahoo/intl-messageformat-parser.svg?style=flat-square | ||
[travis]: https://travis-ci.org/yahoo/intl-messageformat-parser | ||
[travis-badge]: https://img.shields.io/travis/yahoo/intl-messageformat-parser.svg?style=flat-square | ||
[david]: https://david-dm.org/formatjs/formatjs | ||
[david-badge]: https://img.shields.io/david/formatjs/formatjs.svg?style=flat-square | ||
[travis]: https://travis-ci.org/formatjs/formatjs | ||
[travis-badge]: https://img.shields.io/travis/formatjs/formatjs.svg?style=flat-square | ||
[ICU]: http://userguide.icu-project.org/formatparse/messages | ||
@@ -167,2 +167,2 @@ [intl-mf]: https://github.com/yahoo/intl-messageformat | ||
[messageformat.js]: https://github.com/SlexAxton/messageformat.js | ||
[LICENSE file]: https://github.com/yahoo/intl-messageformat-parser/blob/master/LICENSE | ||
[LICENSE file]: https://github.com/formatjs/formatjs/blob/master/LICENSE |
@@ -1,10 +0,9 @@ | ||
export default (function() { | ||
export default /* | ||
* Generated by PEG.js 0.10.0. | ||
* | ||
* http://pegjs.org/ | ||
*/ | ||
(function() { | ||
"use strict"; | ||
/* | ||
* Generated by PEG.js 0.9.0. | ||
* | ||
* http://pegjs.org/ | ||
*/ | ||
function peg$subclass(child, parent) { | ||
@@ -30,8 +29,114 @@ function ctor() { this.constructor = child; } | ||
function peg$parse(input) { | ||
var options = arguments.length > 1 ? arguments[1] : {}, | ||
parser = this, | ||
peg$SyntaxError.buildMessage = function(expected, found) { | ||
var DESCRIBE_EXPECTATION_FNS = { | ||
literal: function(expectation) { | ||
return "\"" + literalEscape(expectation.text) + "\""; | ||
}, | ||
peg$FAILED = {}, | ||
"class": function(expectation) { | ||
var escapedParts = "", | ||
i; | ||
for (i = 0; i < expectation.parts.length; i++) { | ||
escapedParts += expectation.parts[i] instanceof Array | ||
? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) | ||
: classEscape(expectation.parts[i]); | ||
} | ||
return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; | ||
}, | ||
any: function(expectation) { | ||
return "any character"; | ||
}, | ||
end: function(expectation) { | ||
return "end of input"; | ||
}, | ||
other: function(expectation) { | ||
return expectation.description; | ||
} | ||
}; | ||
function hex(ch) { | ||
return ch.charCodeAt(0).toString(16).toUpperCase(); | ||
} | ||
function literalEscape(s) { | ||
return s | ||
.replace(/\\/g, '\\\\') | ||
.replace(/"/g, '\\"') | ||
.replace(/\0/g, '\\0') | ||
.replace(/\t/g, '\\t') | ||
.replace(/\n/g, '\\n') | ||
.replace(/\r/g, '\\r') | ||
.replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) | ||
.replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); | ||
} | ||
function classEscape(s) { | ||
return s | ||
.replace(/\\/g, '\\\\') | ||
.replace(/\]/g, '\\]') | ||
.replace(/\^/g, '\\^') | ||
.replace(/-/g, '\\-') | ||
.replace(/\0/g, '\\0') | ||
.replace(/\t/g, '\\t') | ||
.replace(/\n/g, '\\n') | ||
.replace(/\r/g, '\\r') | ||
.replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) | ||
.replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); | ||
} | ||
function describeExpectation(expectation) { | ||
return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); | ||
} | ||
function describeExpected(expected) { | ||
var descriptions = new Array(expected.length), | ||
i, j; | ||
for (i = 0; i < expected.length; i++) { | ||
descriptions[i] = describeExpectation(expected[i]); | ||
} | ||
descriptions.sort(); | ||
if (descriptions.length > 0) { | ||
for (i = 1, j = 1; i < descriptions.length; i++) { | ||
if (descriptions[i - 1] !== descriptions[i]) { | ||
descriptions[j] = descriptions[i]; | ||
j++; | ||
} | ||
} | ||
descriptions.length = j; | ||
} | ||
switch (descriptions.length) { | ||
case 1: | ||
return descriptions[0]; | ||
case 2: | ||
return descriptions[0] + " or " + descriptions[1]; | ||
default: | ||
return descriptions.slice(0, -1).join(", ") | ||
+ ", or " | ||
+ descriptions[descriptions.length - 1]; | ||
} | ||
} | ||
function describeFound(found) { | ||
return found ? "\"" + literalEscape(found) + "\"" : "end of input"; | ||
} | ||
return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; | ||
}; | ||
function peg$parse(input, options) { | ||
options = options !== void 0 ? options : {}; | ||
var peg$FAILED = {}, | ||
peg$startRuleFunctions = { start: peg$parsestart }, | ||
@@ -47,15 +152,6 @@ peg$startRuleFunction = peg$parsestart, | ||
}, | ||
peg$c1 = function(text) { | ||
var string = '', | ||
i, j, outerLen, inner, innerLen; | ||
for (i = 0, outerLen = text.length; i < outerLen; i += 1) { | ||
inner = text[i]; | ||
for (j = 0, innerLen = inner.length; j < innerLen; j += 1) { | ||
string += inner[j]; | ||
} | ||
} | ||
return string; | ||
peg$c1 = function(chunks) { | ||
return chunks.reduce(function (all, chunk) { | ||
return all.concat(chunk) | ||
}, []).join('') | ||
}, | ||
@@ -70,9 +166,9 @@ peg$c2 = function(messageText) { | ||
peg$c3 = /^[^ \t\n\r,.+={}#]/, | ||
peg$c4 = { type: "class", value: "[^ \\t\\n\\r,.+={}#]", description: "[^ \\t\\n\\r,.+={}#]" }, | ||
peg$c4 = peg$classExpectation([" ", "\t", "\n", "\r", ",", ".", "+", "=", "{", "}", "#"], true, false), | ||
peg$c5 = "{", | ||
peg$c6 = { type: "literal", value: "{", description: "\"{\"" }, | ||
peg$c6 = peg$literalExpectation("{", false), | ||
peg$c7 = ",", | ||
peg$c8 = { type: "literal", value: ",", description: "\",\"" }, | ||
peg$c8 = peg$literalExpectation(",", false), | ||
peg$c9 = "}", | ||
peg$c10 = { type: "literal", value: "}", description: "\"}\"" }, | ||
peg$c10 = peg$literalExpectation("}", false), | ||
peg$c11 = function(id, format) { | ||
@@ -87,7 +183,7 @@ return { | ||
peg$c12 = "number", | ||
peg$c13 = { type: "literal", value: "number", description: "\"number\"" }, | ||
peg$c13 = peg$literalExpectation("number", false), | ||
peg$c14 = "date", | ||
peg$c15 = { type: "literal", value: "date", description: "\"date\"" }, | ||
peg$c15 = peg$literalExpectation("date", false), | ||
peg$c16 = "time", | ||
peg$c17 = { type: "literal", value: "time", description: "\"time\"" }, | ||
peg$c17 = peg$literalExpectation("time", false), | ||
peg$c18 = function(type, style) { | ||
@@ -101,3 +197,3 @@ return { | ||
peg$c19 = "plural", | ||
peg$c20 = { type: "literal", value: "plural", description: "\"plural\"" }, | ||
peg$c20 = peg$literalExpectation("plural", false), | ||
peg$c21 = function(pluralStyle) { | ||
@@ -113,3 +209,3 @@ return { | ||
peg$c22 = "selectordinal", | ||
peg$c23 = { type: "literal", value: "selectordinal", description: "\"selectordinal\"" }, | ||
peg$c23 = peg$literalExpectation("selectordinal", false), | ||
peg$c24 = function(pluralStyle) { | ||
@@ -125,3 +221,3 @@ return { | ||
peg$c25 = "select", | ||
peg$c26 = { type: "literal", value: "select", description: "\"select\"" }, | ||
peg$c26 = peg$literalExpectation("select", false), | ||
peg$c27 = function(options) { | ||
@@ -135,3 +231,3 @@ return { | ||
peg$c28 = "=", | ||
peg$c29 = { type: "literal", value: "=", description: "\"=\"" }, | ||
peg$c29 = peg$literalExpectation("=", false), | ||
peg$c30 = function(selector, pattern) { | ||
@@ -146,3 +242,3 @@ return { | ||
peg$c31 = "offset:", | ||
peg$c32 = { type: "literal", value: "offset:", description: "\"offset:\"" }, | ||
peg$c32 = peg$literalExpectation("offset:", false), | ||
peg$c33 = function(number) { | ||
@@ -159,33 +255,33 @@ return number; | ||
}, | ||
peg$c35 = { type: "other", description: "whitespace" }, | ||
peg$c35 = peg$otherExpectation("whitespace"), | ||
peg$c36 = /^[ \t\n\r]/, | ||
peg$c37 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" }, | ||
peg$c38 = { type: "other", description: "optionalWhitespace" }, | ||
peg$c37 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false), | ||
peg$c38 = peg$otherExpectation("optionalWhitespace"), | ||
peg$c39 = /^[0-9]/, | ||
peg$c40 = { type: "class", value: "[0-9]", description: "[0-9]" }, | ||
peg$c40 = peg$classExpectation([["0", "9"]], false, false), | ||
peg$c41 = /^[0-9a-f]/i, | ||
peg$c42 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]i" }, | ||
peg$c42 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), | ||
peg$c43 = "0", | ||
peg$c44 = { type: "literal", value: "0", description: "\"0\"" }, | ||
peg$c44 = peg$literalExpectation("0", false), | ||
peg$c45 = /^[1-9]/, | ||
peg$c46 = { type: "class", value: "[1-9]", description: "[1-9]" }, | ||
peg$c46 = peg$classExpectation([["1", "9"]], false, false), | ||
peg$c47 = function(digits) { | ||
return parseInt(digits, 10); | ||
}, | ||
peg$c48 = /^[^{}\\\0-\x1F \t\n\r]/, | ||
peg$c49 = { type: "class", value: "[^{}\\\\\\0-\\x1F\\x7f \\t\\n\\r]", description: "[^{}\\\\\\0-\\x1F\\x7f \\t\\n\\r]" }, | ||
peg$c48 = /^[^{}\\\0-\x1F\x7F \t\n\r]/, | ||
peg$c49 = peg$classExpectation(["{", "}", "\\", ["\0", "\x1F"], "\x7F", " ", "\t", "\n", "\r"], true, false), | ||
peg$c50 = "\\\\", | ||
peg$c51 = { type: "literal", value: "\\\\", description: "\"\\\\\\\\\"" }, | ||
peg$c51 = peg$literalExpectation("\\\\", false), | ||
peg$c52 = function() { return '\\'; }, | ||
peg$c53 = "\\#", | ||
peg$c54 = { type: "literal", value: "\\#", description: "\"\\\\#\"" }, | ||
peg$c54 = peg$literalExpectation("\\#", false), | ||
peg$c55 = function() { return '\\#'; }, | ||
peg$c56 = "\\{", | ||
peg$c57 = { type: "literal", value: "\\{", description: "\"\\\\{\"" }, | ||
peg$c57 = peg$literalExpectation("\\{", false), | ||
peg$c58 = function() { return '\u007B'; }, | ||
peg$c59 = "\\}", | ||
peg$c60 = { type: "literal", value: "\\}", description: "\"\\\\}\"" }, | ||
peg$c60 = peg$literalExpectation("\\}", false), | ||
peg$c61 = function() { return '\u007D'; }, | ||
peg$c62 = "\\u", | ||
peg$c63 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, | ||
peg$c63 = peg$literalExpectation("\\u", false), | ||
peg$c64 = function(digits) { | ||
@@ -198,3 +294,3 @@ return String.fromCharCode(parseInt(digits, 16)); | ||
peg$savedPos = 0, | ||
peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], | ||
peg$posDetailsCache = [{ line: 1, column: 1 }], | ||
peg$maxFailPos = 0, | ||
@@ -222,23 +318,40 @@ peg$maxFailExpected = [], | ||
function expected(description) { | ||
throw peg$buildException( | ||
null, | ||
[{ type: "other", description: description }], | ||
function expected(description, location) { | ||
location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) | ||
throw peg$buildStructuredError( | ||
[peg$otherExpectation(description)], | ||
input.substring(peg$savedPos, peg$currPos), | ||
peg$computeLocation(peg$savedPos, peg$currPos) | ||
location | ||
); | ||
} | ||
function error(message) { | ||
throw peg$buildException( | ||
message, | ||
null, | ||
input.substring(peg$savedPos, peg$currPos), | ||
peg$computeLocation(peg$savedPos, peg$currPos) | ||
); | ||
function error(message, location) { | ||
location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) | ||
throw peg$buildSimpleError(message, location); | ||
} | ||
function peg$literalExpectation(text, ignoreCase) { | ||
return { type: "literal", text: text, ignoreCase: ignoreCase }; | ||
} | ||
function peg$classExpectation(parts, inverted, ignoreCase) { | ||
return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; | ||
} | ||
function peg$anyExpectation() { | ||
return { type: "any" }; | ||
} | ||
function peg$endExpectation() { | ||
return { type: "end" }; | ||
} | ||
function peg$otherExpectation(description) { | ||
return { type: "other", description: description }; | ||
} | ||
function peg$computePosDetails(pos) { | ||
var details = peg$posDetailsCache[pos], | ||
p, ch; | ||
var details = peg$posDetailsCache[pos], p; | ||
@@ -256,19 +369,11 @@ if (details) { | ||
line: details.line, | ||
column: details.column, | ||
seenCR: details.seenCR | ||
column: details.column | ||
}; | ||
while (p < pos) { | ||
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") { | ||
if (input.charCodeAt(p) === 10) { | ||
details.line++; | ||
details.column = 1; | ||
details.seenCR = true; | ||
} else { | ||
details.column++; | ||
details.seenCR = false; | ||
} | ||
@@ -313,67 +418,9 @@ | ||
function peg$buildException(message, expected, found, location) { | ||
function cleanupExpected(expected) { | ||
var i = 1; | ||
function peg$buildSimpleError(message, location) { | ||
return new peg$SyntaxError(message, null, null, location); | ||
} | ||
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(/[\u0100-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) | ||
.replace(/[\u1000-\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."; | ||
} | ||
if (expected !== null) { | ||
cleanupExpected(expected); | ||
} | ||
function peg$buildStructuredError(expected, found, location) { | ||
return new peg$SyntaxError( | ||
message !== null ? message : buildMessage(expected, found), | ||
peg$SyntaxError.buildMessage(expected, found), | ||
expected, | ||
@@ -946,3 +993,3 @@ found, | ||
function peg$parseoptionalFormatPattern() { | ||
var s0, s1, s2, s3, s4, s5, s6, s7, s8; | ||
var s0, s1, s2, s3, s4, s5, s6; | ||
@@ -964,27 +1011,15 @@ s0 = peg$currPos; | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parse_(); | ||
s5 = peg$parsemessageFormatPattern(); | ||
if (s5 !== peg$FAILED) { | ||
s6 = peg$parsemessageFormatPattern(); | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s6 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
s7 = peg$parse_(); | ||
if (s7 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 125) { | ||
s8 = peg$c9; | ||
peg$currPos++; | ||
} else { | ||
s8 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c10); } | ||
} | ||
if (s8 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c30(s2, s6); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
peg$savedPos = s0; | ||
s1 = peg$c30(s2, s5); | ||
s0 = s1; | ||
} else { | ||
@@ -1395,7 +1430,6 @@ peg$currPos = s0; | ||
if (peg$result !== peg$FAILED && peg$currPos < input.length) { | ||
peg$fail({ type: "end", description: "end of input" }); | ||
peg$fail(peg$endExpectation()); | ||
} | ||
throw peg$buildException( | ||
null, | ||
throw peg$buildStructuredError( | ||
peg$maxFailExpected, | ||
@@ -1414,2 +1448,2 @@ peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, | ||
}; | ||
})(); | ||
})() |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
0
3977
129008
10
2
1