Last active
April 29, 2016 19:43
-
-
Save flaviocysne/eb2b8197d00dc1adbaa8ceeb481dfa30 to your computer and use it in GitHub Desktop.
Angular-UI - UI Bootstrap - Dateparser - PEGjs Parser & Expression for uibDateParser's format codes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var uibDateParser_parser = (function() { | |
"use strict"; | |
/* | |
* Generated by PEG.js 0.9.0. | |
* | |
* http://pegjs.org/ | |
*/ | |
function peg$subclass(child, parent) { | |
function ctor() { this.constructor = child; } | |
ctor.prototype = parent.prototype; | |
child.prototype = new ctor(); | |
} | |
function peg$SyntaxError(message, expected, found, location) { | |
this.message = message; | |
this.expected = expected; | |
this.found = found; | |
this.location = location; | |
this.name = "SyntaxError"; | |
if (typeof Error.captureStackTrace === "function") { | |
Error.captureStackTrace(this, peg$SyntaxError); | |
} | |
} | |
peg$subclass(peg$SyntaxError, Error); | |
function peg$parse(input) { | |
var options = arguments.length > 1 ? arguments[1] : {}, | |
parser = this, | |
peg$FAILED = {}, | |
peg$startRuleFunctions = { Expression: peg$parseExpression }, | |
peg$startRuleFunction = peg$parseExpression, | |
peg$c0 = "yyyy", | |
peg$c1 = { type: "literal", value: "yyyy", description: "\"yyyy\"" }, | |
peg$c2 = "yy", | |
peg$c3 = { type: "literal", value: "yy", description: "\"yy\"" }, | |
peg$c4 = "y", | |
peg$c5 = { type: "literal", value: "y", description: "\"y\"" }, | |
peg$c6 = "MMMM", | |
peg$c7 = { type: "literal", value: "MMMM", description: "\"MMMM\"" }, | |
peg$c8 = "MMM", | |
peg$c9 = { type: "literal", value: "MMM", description: "\"MMM\"" }, | |
peg$c10 = "MM", | |
peg$c11 = { type: "literal", value: "MM", description: "\"MM\"" }, | |
peg$c12 = "M!", | |
peg$c13 = { type: "literal", value: "M!", description: "\"M!\"" }, | |
peg$c14 = "M", | |
peg$c15 = { type: "literal", value: "M", description: "\"M\"" }, | |
peg$c16 = "EEEE", | |
peg$c17 = { type: "literal", value: "EEEE", description: "\"EEEE\"" }, | |
peg$c18 = "EEE", | |
peg$c19 = { type: "literal", value: "EEE", description: "\"EEE\"" }, | |
peg$c20 = "ww", | |
peg$c21 = { type: "literal", value: "ww", description: "\"ww\"" }, | |
peg$c22 = "w", | |
peg$c23 = { type: "literal", value: "w", description: "\"w\"" }, | |
peg$c24 = "dd", | |
peg$c25 = { type: "literal", value: "dd", description: "\"dd\"" }, | |
peg$c26 = "d!", | |
peg$c27 = { type: "literal", value: "d!", description: "\"d!\"" }, | |
peg$c28 = "d", | |
peg$c29 = { type: "literal", value: "d", description: "\"d\"" }, | |
peg$c30 = "HH", | |
peg$c31 = { type: "literal", value: "HH", description: "\"HH\"" }, | |
peg$c32 = "H", | |
peg$c33 = { type: "literal", value: "H", description: "\"H\"" }, | |
peg$c34 = "hh", | |
peg$c35 = { type: "literal", value: "hh", description: "\"hh\"" }, | |
peg$c36 = "h", | |
peg$c37 = { type: "literal", value: "h", description: "\"h\"" }, | |
peg$c38 = "mm", | |
peg$c39 = { type: "literal", value: "mm", description: "\"mm\"" }, | |
peg$c40 = "m", | |
peg$c41 = { type: "literal", value: "m", description: "\"m\"" }, | |
peg$c42 = "sss", | |
peg$c43 = { type: "literal", value: "sss", description: "\"sss\"" }, | |
peg$c44 = "ss", | |
peg$c45 = { type: "literal", value: "ss", description: "\"ss\"" }, | |
peg$c46 = "s", | |
peg$c47 = { type: "literal", value: "s", description: "\"s\"" }, | |
peg$c48 = "a", | |
peg$c49 = { type: "literal", value: "a", description: "\"a\"" }, | |
peg$c50 = "ZZ", | |
peg$c51 = { type: "literal", value: "ZZ", description: "\"ZZ\"" }, | |
peg$c52 = "Z", | |
peg$c53 = { type: "literal", value: "Z", description: "\"Z\"" }, | |
peg$c54 = "GGGG", | |
peg$c55 = { type: "literal", value: "GGGG", description: "\"GGGG\"" }, | |
peg$c56 = "GGG", | |
peg$c57 = { type: "literal", value: "GGG", description: "\"GGG\"" }, | |
peg$c58 = "GG", | |
peg$c59 = { type: "literal", value: "GG", description: "\"GG\"" }, | |
peg$c60 = "G", | |
peg$c61 = { type: "literal", value: "G", description: "\"G\"" }, | |
peg$c62 = "fullDate", | |
peg$c63 = { type: "literal", value: "fullDate", description: "\"fullDate\"" }, | |
peg$c64 = "longDate", | |
peg$c65 = { type: "literal", value: "longDate", description: "\"longDate\"" }, | |
peg$c66 = "medium", | |
peg$c67 = { type: "literal", value: "medium", description: "\"medium\"" }, | |
peg$c68 = "mediumDate", | |
peg$c69 = { type: "literal", value: "mediumDate", description: "\"mediumDate\"" }, | |
peg$c70 = "mediumTime", | |
peg$c71 = { type: "literal", value: "mediumTime", description: "\"mediumTime\"" }, | |
peg$c72 = "short", | |
peg$c73 = { type: "literal", value: "short", description: "\"short\"" }, | |
peg$c74 = "shortDate", | |
peg$c75 = { type: "literal", value: "shortDate", description: "\"shortDate\"" }, | |
peg$c76 = "shortTime", | |
peg$c77 = { type: "literal", value: "shortTime", description: "\"shortTime\"" }, | |
peg$c78 = "'", | |
peg$c79 = { type: "literal", value: "'", description: "\"'\"" }, | |
peg$c80 = /^[^']/, | |
peg$c81 = { type: "class", value: "[^']", description: "[^']" }, | |
peg$c82 = function(expr) { return text(); }, | |
peg$c83 = "\"", | |
peg$c84 = { type: "literal", value: "\"", description: "\"\\\"\"" }, | |
peg$c85 = /^[^"]/, | |
peg$c86 = { type: "class", value: "[^\"]", description: "[^\"]" }, | |
peg$c87 = /^[ \t\r\n]/, | |
peg$c88 = { type: "class", value: "[ \\t\\r\\n]", description: "[ \\t\\r\\n]" }, | |
peg$c89 = function() { return text(); }, | |
peg$currPos = 0, | |
peg$savedPos = 0, | |
peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], | |
peg$maxFailPos = 0, | |
peg$maxFailExpected = [], | |
peg$silentFails = 0, | |
peg$result; | |
if ("startRule" in options) { | |
if (!(options.startRule in peg$startRuleFunctions)) { | |
throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); | |
} | |
peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; | |
} | |
function text() { | |
return input.substring(peg$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 error(message) { | |
throw peg$buildException( | |
message, | |
null, | |
input.substring(peg$savedPos, peg$currPos), | |
peg$computeLocation(peg$savedPos, peg$currPos) | |
); | |
} | |
function peg$computePosDetails(pos) { | |
var details = peg$posDetailsCache[pos], | |
p, ch; | |
if (details) { | |
return details; | |
} else { | |
p = pos - 1; | |
while (!peg$posDetailsCache[p]) { | |
p--; | |
} | |
details = peg$posDetailsCache[p]; | |
details = { | |
line: details.line, | |
column: details.column, | |
seenCR: details.seenCR | |
}; | |
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; | |
} | |
p++; | |
} | |
peg$posDetailsCache[pos] = details; | |
return details; | |
} | |
} | |
function peg$computeLocation(startPos, endPos) { | |
var startPosDetails = peg$computePosDetails(startPos), | |
endPosDetails = peg$computePosDetails(endPos); | |
return { | |
start: { | |
offset: startPos, | |
line: startPosDetails.line, | |
column: startPosDetails.column | |
}, | |
end: { | |
offset: endPos, | |
line: endPosDetails.line, | |
column: endPosDetails.column | |
} | |
}; | |
} | |
function peg$fail(expected) { | |
if (peg$currPos < peg$maxFailPos) { return; } | |
if (peg$currPos > peg$maxFailPos) { | |
peg$maxFailPos = peg$currPos; | |
peg$maxFailExpected = []; | |
} | |
peg$maxFailExpected.push(expected); | |
} | |
function peg$buildException(message, expected, found, location) { | |
function cleanupExpected(expected) { | |
var i = 1; | |
expected.sort(function(a, b) { | |
if (a.description < b.description) { | |
return -1; | |
} else if (a.description > b.description) { | |
return 1; | |
} else { | |
return 0; | |
} | |
}); | |
while (i < expected.length) { | |
if (expected[i - 1] === expected[i]) { | |
expected.splice(i, 1); | |
} else { | |
i++; | |
} | |
} | |
} | |
function buildMessage(expected, found) { | |
function stringEscape(s) { | |
function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } | |
return s | |
.replace(/\\/g, '\\\\') | |
.replace(/"/g, '\\"') | |
.replace(/\x08/g, '\\b') | |
.replace(/\t/g, '\\t') | |
.replace(/\n/g, '\\n') | |
.replace(/\f/g, '\\f') | |
.replace(/\r/g, '\\r') | |
.replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) | |
.replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); }) | |
.replace(/[\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); | |
} | |
return new peg$SyntaxError( | |
message !== null ? message : buildMessage(expected, found), | |
expected, | |
found, | |
location | |
); | |
} | |
function peg$parseExpression() { | |
var s0, s1, s2, s3, s4; | |
s0 = []; | |
s1 = peg$currPos; | |
s2 = peg$parseWhitespace(); | |
if (s2 === peg$FAILED) { | |
s2 = null; | |
} | |
if (s2 !== peg$FAILED) { | |
s3 = peg$parseTerm(); | |
if (s3 !== peg$FAILED) { | |
s4 = peg$parseWhitespace(); | |
if (s4 === peg$FAILED) { | |
s4 = null; | |
} | |
if (s4 !== peg$FAILED) { | |
s2 = [s2, s3, s4]; | |
s1 = s2; | |
} else { | |
peg$currPos = s1; | |
s1 = peg$FAILED; | |
} | |
} else { | |
peg$currPos = s1; | |
s1 = peg$FAILED; | |
} | |
} else { | |
peg$currPos = s1; | |
s1 = peg$FAILED; | |
} | |
while (s1 !== peg$FAILED) { | |
s0.push(s1); | |
s1 = peg$currPos; | |
s2 = peg$parseWhitespace(); | |
if (s2 === peg$FAILED) { | |
s2 = null; | |
} | |
if (s2 !== peg$FAILED) { | |
s3 = peg$parseTerm(); | |
if (s3 !== peg$FAILED) { | |
s4 = peg$parseWhitespace(); | |
if (s4 === peg$FAILED) { | |
s4 = null; | |
} | |
if (s4 !== peg$FAILED) { | |
s2 = [s2, s3, s4]; | |
s1 = s2; | |
} else { | |
peg$currPos = s1; | |
s1 = peg$FAILED; | |
} | |
} else { | |
peg$currPos = s1; | |
s1 = peg$FAILED; | |
} | |
} else { | |
peg$currPos = s1; | |
s1 = peg$FAILED; | |
} | |
} | |
return s0; | |
} | |
function peg$parseTerm() { | |
var s0; | |
s0 = peg$parseLiteral(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseYearFull(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseYearShort(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseYearAny(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseMonthFullName(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseMonthShortName(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseMonthZeroPad(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseMonthOptionalPad(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseMonth(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseWeekFullName(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseWeekShortName(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseWeekNumberZeroPad(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseWeekNumber(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseDayOfMonthZeroPad(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseDayOfMonthOptionalPad(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseDayOfMonth(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseMillisecond(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseSecondZeroPad(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseSecond(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseAmPm(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseTimezoneWithColon(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseTimezone(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseEraFullName(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseEraShortName(); | |
if (s0 === peg$FAILED) { | |
s0 = peg$parseFormatName(); | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
return s0; | |
} | |
function peg$parseYearFull() { | |
var s0; | |
if (input.substr(peg$currPos, 4) === peg$c0) { | |
s0 = peg$c0; | |
peg$currPos += 4; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c1); } | |
} | |
return s0; | |
} | |
function peg$parseYearShort() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c2) { | |
s0 = peg$c2; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c3); } | |
} | |
return s0; | |
} | |
function peg$parseYearAny() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 121) { | |
s0 = peg$c4; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c5); } | |
} | |
return s0; | |
} | |
function peg$parseMonthFullName() { | |
var s0; | |
if (input.substr(peg$currPos, 4) === peg$c6) { | |
s0 = peg$c6; | |
peg$currPos += 4; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c7); } | |
} | |
return s0; | |
} | |
function peg$parseMonthShortName() { | |
var s0; | |
if (input.substr(peg$currPos, 3) === peg$c8) { | |
s0 = peg$c8; | |
peg$currPos += 3; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c9); } | |
} | |
return s0; | |
} | |
function peg$parseMonthZeroPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c10) { | |
s0 = peg$c10; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c11); } | |
} | |
return s0; | |
} | |
function peg$parseMonthOptionalPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c12) { | |
s0 = peg$c12; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c13); } | |
} | |
return s0; | |
} | |
function peg$parseMonth() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 77) { | |
s0 = peg$c14; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c15); } | |
} | |
return s0; | |
} | |
function peg$parseWeekFullName() { | |
var s0; | |
if (input.substr(peg$currPos, 4) === peg$c16) { | |
s0 = peg$c16; | |
peg$currPos += 4; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c17); } | |
} | |
return s0; | |
} | |
function peg$parseWeekShortName() { | |
var s0; | |
if (input.substr(peg$currPos, 3) === peg$c18) { | |
s0 = peg$c18; | |
peg$currPos += 3; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c19); } | |
} | |
return s0; | |
} | |
function peg$parseWeekNumberZeroPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c20) { | |
s0 = peg$c20; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c21); } | |
} | |
return s0; | |
} | |
function peg$parseWeekNumber() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 119) { | |
s0 = peg$c22; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c23); } | |
} | |
return s0; | |
} | |
function peg$parseDayOfMonthZeroPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c24) { | |
s0 = peg$c24; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c25); } | |
} | |
return s0; | |
} | |
function peg$parseDayOfMonthOptionalPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c26) { | |
s0 = peg$c26; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c27); } | |
} | |
return s0; | |
} | |
function peg$parseDayOfMonth() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 100) { | |
s0 = peg$c28; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c29); } | |
} | |
return s0; | |
} | |
function peg$parseHour24ZeroPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c30) { | |
s0 = peg$c30; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c31); } | |
} | |
return s0; | |
} | |
function peg$parseHour24() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 72) { | |
s0 = peg$c32; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c33); } | |
} | |
return s0; | |
} | |
function peg$parseHour12ZeroPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c34) { | |
s0 = peg$c34; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c35); } | |
} | |
return s0; | |
} | |
function peg$parseHour12() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 104) { | |
s0 = peg$c36; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c37); } | |
} | |
return s0; | |
} | |
function peg$parseMinuteZeroPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c38) { | |
s0 = peg$c38; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c39); } | |
} | |
return s0; | |
} | |
function peg$parseMinute() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 109) { | |
s0 = peg$c40; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c41); } | |
} | |
return s0; | |
} | |
function peg$parseMillisecond() { | |
var s0; | |
if (input.substr(peg$currPos, 3) === peg$c42) { | |
s0 = peg$c42; | |
peg$currPos += 3; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c43); } | |
} | |
return s0; | |
} | |
function peg$parseSecondZeroPad() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c44) { | |
s0 = peg$c44; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c45); } | |
} | |
return s0; | |
} | |
function peg$parseSecond() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 115) { | |
s0 = peg$c46; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c47); } | |
} | |
return s0; | |
} | |
function peg$parseAmPm() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 97) { | |
s0 = peg$c48; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c49); } | |
} | |
return s0; | |
} | |
function peg$parseTimezoneWithColon() { | |
var s0; | |
if (input.substr(peg$currPos, 2) === peg$c50) { | |
s0 = peg$c50; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c51); } | |
} | |
return s0; | |
} | |
function peg$parseTimezone() { | |
var s0; | |
if (input.charCodeAt(peg$currPos) === 90) { | |
s0 = peg$c52; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c53); } | |
} | |
return s0; | |
} | |
function peg$parseEraFullName() { | |
var s0; | |
if (input.substr(peg$currPos, 4) === peg$c54) { | |
s0 = peg$c54; | |
peg$currPos += 4; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c55); } | |
} | |
return s0; | |
} | |
function peg$parseEraShortName() { | |
var s0; | |
if (input.substr(peg$currPos, 3) === peg$c56) { | |
s0 = peg$c56; | |
peg$currPos += 3; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c57); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 2) === peg$c58) { | |
s0 = peg$c58; | |
peg$currPos += 2; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c59); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.charCodeAt(peg$currPos) === 71) { | |
s0 = peg$c60; | |
peg$currPos++; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c61); } | |
} | |
} | |
} | |
return s0; | |
} | |
function peg$parseFormatName() { | |
var s0; | |
if (input.substr(peg$currPos, 8) === peg$c62) { | |
s0 = peg$c62; | |
peg$currPos += 8; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c63); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 8) === peg$c64) { | |
s0 = peg$c64; | |
peg$currPos += 8; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c65); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 6) === peg$c66) { | |
s0 = peg$c66; | |
peg$currPos += 6; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c67); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 10) === peg$c68) { | |
s0 = peg$c68; | |
peg$currPos += 10; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c69); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 10) === peg$c70) { | |
s0 = peg$c70; | |
peg$currPos += 10; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c71); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 5) === peg$c72) { | |
s0 = peg$c72; | |
peg$currPos += 5; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c73); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 9) === peg$c74) { | |
s0 = peg$c74; | |
peg$currPos += 9; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c75); } | |
} | |
if (s0 === peg$FAILED) { | |
if (input.substr(peg$currPos, 9) === peg$c76) { | |
s0 = peg$c76; | |
peg$currPos += 9; | |
} else { | |
s0 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c77); } | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
return s0; | |
} | |
function peg$parseLiteral() { | |
var s0, s1, s2, s3; | |
s0 = peg$currPos; | |
if (input.charCodeAt(peg$currPos) === 39) { | |
s1 = peg$c78; | |
peg$currPos++; | |
} else { | |
s1 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c79); } | |
} | |
if (s1 !== peg$FAILED) { | |
s2 = []; | |
if (peg$c80.test(input.charAt(peg$currPos))) { | |
s3 = input.charAt(peg$currPos); | |
peg$currPos++; | |
} else { | |
s3 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c81); } | |
} | |
while (s3 !== peg$FAILED) { | |
s2.push(s3); | |
if (peg$c80.test(input.charAt(peg$currPos))) { | |
s3 = input.charAt(peg$currPos); | |
peg$currPos++; | |
} else { | |
s3 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c81); } | |
} | |
} | |
if (s2 !== peg$FAILED) { | |
if (input.charCodeAt(peg$currPos) === 39) { | |
s3 = peg$c78; | |
peg$currPos++; | |
} else { | |
s3 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c79); } | |
} | |
if (s3 !== peg$FAILED) { | |
peg$savedPos = s0; | |
s1 = peg$c82(s2); | |
s0 = s1; | |
} else { | |
peg$currPos = s0; | |
s0 = peg$FAILED; | |
} | |
} else { | |
peg$currPos = s0; | |
s0 = peg$FAILED; | |
} | |
} else { | |
peg$currPos = s0; | |
s0 = peg$FAILED; | |
} | |
if (s0 === peg$FAILED) { | |
s0 = peg$currPos; | |
if (input.charCodeAt(peg$currPos) === 34) { | |
s1 = peg$c83; | |
peg$currPos++; | |
} else { | |
s1 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c84); } | |
} | |
if (s1 !== peg$FAILED) { | |
s2 = []; | |
if (peg$c85.test(input.charAt(peg$currPos))) { | |
s3 = input.charAt(peg$currPos); | |
peg$currPos++; | |
} else { | |
s3 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c86); } | |
} | |
while (s3 !== peg$FAILED) { | |
s2.push(s3); | |
if (peg$c85.test(input.charAt(peg$currPos))) { | |
s3 = input.charAt(peg$currPos); | |
peg$currPos++; | |
} else { | |
s3 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c86); } | |
} | |
} | |
if (s2 !== peg$FAILED) { | |
if (input.charCodeAt(peg$currPos) === 34) { | |
s3 = peg$c83; | |
peg$currPos++; | |
} else { | |
s3 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c84); } | |
} | |
if (s3 !== peg$FAILED) { | |
peg$savedPos = s0; | |
s1 = peg$c82(s2); | |
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; | |
} | |
function peg$parseWhitespace() { | |
var s0, s1, s2; | |
s0 = peg$currPos; | |
s1 = []; | |
if (peg$c87.test(input.charAt(peg$currPos))) { | |
s2 = input.charAt(peg$currPos); | |
peg$currPos++; | |
} else { | |
s2 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c88); } | |
} | |
while (s2 !== peg$FAILED) { | |
s1.push(s2); | |
if (peg$c87.test(input.charAt(peg$currPos))) { | |
s2 = input.charAt(peg$currPos); | |
peg$currPos++; | |
} else { | |
s2 = peg$FAILED; | |
if (peg$silentFails === 0) { peg$fail(peg$c88); } | |
} | |
} | |
if (s1 !== peg$FAILED) { | |
peg$savedPos = s0; | |
s1 = peg$c89(); | |
} | |
s0 = s1; | |
return s0; | |
} | |
peg$result = peg$startRuleFunction(); | |
if (peg$result !== peg$FAILED && peg$currPos === input.length) { | |
return peg$result; | |
} else { | |
if (peg$result !== peg$FAILED && peg$currPos < input.length) { | |
peg$fail({ type: "end", description: "end of input" }); | |
} | |
throw peg$buildException( | |
null, | |
peg$maxFailExpected, | |
peg$maxFailPos < 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 | |
}; | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Expression | |
= (Whitespace? Term Whitespace?)* | |
Term | |
= Literal | |
/ YearFull | |
/ YearShort | |
/ YearAny | |
/ MonthFullName | |
/ MonthShortName | |
/ MonthZeroPad | |
/ MonthOptionalPad | |
/ Month | |
/ WeekFullName | |
/ WeekShortName | |
/ WeekNumberZeroPad | |
/ WeekNumber | |
/ DayOfMonthZeroPad | |
/ DayOfMonthOptionalPad | |
/ DayOfMonth | |
/ Millisecond | |
/ SecondZeroPad | |
/ Second | |
/ AmPm | |
/ TimezoneWithColon | |
/ Timezone | |
/ EraFullName | |
/ EraShortName | |
/ FormatName | |
YearFull | |
= "yyyy" | |
YearShort | |
= "yy" | |
YearAny | |
= "y" | |
MonthFullName | |
= "MMMM" | |
MonthShortName | |
= "MMM" | |
MonthZeroPad | |
= "MM" | |
MonthOptionalPad | |
= "M!" | |
Month | |
= "M" | |
WeekFullName | |
= "EEEE" | |
WeekShortName | |
= "EEE" | |
WeekNumberZeroPad | |
= "ww" | |
WeekNumber | |
= "w" | |
DayOfMonthZeroPad | |
= "dd" | |
DayOfMonthOptionalPad | |
= "d!" | |
DayOfMonth | |
= "d" | |
Hour24ZeroPad | |
= "HH" | |
Hour24 | |
= "H" | |
Hour12ZeroPad | |
= "hh" | |
Hour12 | |
= "h" | |
MinuteZeroPad | |
= "mm" | |
Minute | |
= "m" | |
Millisecond | |
= "sss" | |
SecondZeroPad | |
= "ss" | |
Second | |
= "s" | |
AmPm | |
= "a" | |
TimezoneWithColon | |
= "ZZ" | |
Timezone | |
= "Z" | |
EraFullName | |
= "GGGG" | |
EraShortName | |
= "GGG" | |
/ "GG" | |
/ "G" | |
FormatName | |
= "fullDate" | |
/ "longDate" | |
/ "medium" | |
/ "mediumDate" | |
/ "mediumTime" | |
/ "short" | |
/ "shortDate" | |
/ "shortTime" | |
Literal | |
= "'" expr:( [^']* ) "'" { return text(); } | |
/ '"' expr:( [^"]* ) '"' { return text(); } | |
Whitespace | |
= ( [ \t\r\n]* ) { return text(); } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment