@weborigami/language 0.2.10 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,6 +19,7 @@
19
19
  import * as ops from "../runtime/ops.js";
20
20
  import {
21
21
  annotate,
22
+ applyMacro,
22
23
  downgradeReference,
23
24
  makeArray,
24
25
  makeBinaryOperation,
@@ -29,8 +30,10 @@ import {
29
30
  makeProperty,
30
31
  makeReference,
31
32
  makeTemplate,
32
- makeUnaryOperation
33
+ makeUnaryOperation,
34
+ makeYamlObject
33
35
  } from "./parserHelpers.js";
36
+ import isOrigamiFrontMatter from "./isOrigamiFrontMatter.js";
34
37
 
35
38
 
36
39
  function peg$subclass(child, parent) {
@@ -202,7 +205,7 @@ function peg$parse(input, options) {
202
205
  var peg$FAILED = {};
203
206
  var peg$source = options.grammarSource;
204
207
 
205
- var peg$startRuleFunctions = { __: peg$parse__, additiveExpression: peg$parseadditiveExpression, additiveOperator: peg$parseadditiveOperator, arguments: peg$parsearguments, arrayLiteral: peg$parsearrayLiteral, arrayEntries: peg$parsearrayEntries, arrayEntry: peg$parsearrayEntry, arrowFunction: peg$parsearrowFunction, bitwiseAndExpression: peg$parsebitwiseAndExpression, bitwiseAndOperator: peg$parsebitwiseAndOperator, bitwiseOrExpression: peg$parsebitwiseOrExpression, bitwiseOrOperator: peg$parsebitwiseOrOperator, bitwiseXorExpression: peg$parsebitwiseXorExpression, bitwiseXorOperator: peg$parsebitwiseXorOperator, callExpression: peg$parsecallExpression, commaExpression: peg$parsecommaExpression, comment: peg$parsecomment, conditionalExpression: peg$parseconditionalExpression, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, ellipsis: peg$parseellipsis, equalityExpression: peg$parseequalityExpression, equalityOperator: peg$parseequalityOperator, escapedChar: peg$parseescapedChar, expectBacktick: peg$parseexpectBacktick, expectClosingBrace: peg$parseexpectClosingBrace, expectClosingBracket: peg$parseexpectClosingBracket, expectClosingParenthesis: peg$parseexpectClosingParenthesis, expectDoubleQuote: peg$parseexpectDoubleQuote, expectGuillemet: peg$parseexpectGuillemet, expectSingleQuote: peg$parseexpectSingleQuote, expectPipelineExpression: peg$parseexpectPipelineExpression, exponentiationExpression: peg$parseexponentiationExpression, expression: peg$parseexpression, floatLiteral: peg$parsefloatLiteral, group: peg$parsegroup, guillemetString: peg$parseguillemetString, guillemetStringChar: peg$parseguillemetStringChar, homeDirectory: peg$parsehomeDirectory, host: peg$parsehost, identifier: peg$parseidentifier, identifierChar: peg$parseidentifierChar, implicitParenthesesCallExpression: peg$parseimplicitParenthesesCallExpression, implicitParensthesesArguments: peg$parseimplicitParensthesesArguments, inlineSpace: peg$parseinlineSpace, integerLiteral: peg$parseintegerLiteral, list: peg$parselist, literal: peg$parseliteral, logicalAndExpression: peg$parselogicalAndExpression, logicalOrExpression: peg$parselogicalOrExpression, multiLineComment: peg$parsemultiLineComment, multiplicativeExpression: peg$parsemultiplicativeExpression, multiplicativeOperator: peg$parsemultiplicativeOperator, namespace: peg$parsenamespace, newLine: peg$parsenewLine, numericLiteral: peg$parsenumericLiteral, nullishCoalescingExpression: peg$parsenullishCoalescingExpression, objectLiteral: peg$parseobjectLiteral, objectEntries: peg$parseobjectEntries, objectEntry: peg$parseobjectEntry, objectGetter: peg$parseobjectGetter, objectHiddenKey: peg$parseobjectHiddenKey, objectKey: peg$parseobjectKey, objectProperty: peg$parseobjectProperty, objectShorthandProperty: peg$parseobjectShorthandProperty, objectPublicKey: peg$parseobjectPublicKey, parameter: peg$parseparameter, parameterList: peg$parseparameterList, parameterSingleton: peg$parseparameterSingleton, parenthesesArguments: peg$parseparenthesesArguments, path: peg$parsepath, pathArguments: peg$parsepathArguments, pathKey: peg$parsepathKey, pathSegment: peg$parsepathSegment, pathSegmentChar: peg$parsepathSegmentChar, pipelineExpression: peg$parsepipelineExpression, primary: peg$parseprimary, program: peg$parseprogram, protocolExpression: peg$parseprotocolExpression, qualifiedReference: peg$parsequalifiedReference, inherited: peg$parseinherited, relationalExpression: peg$parserelationalExpression, relationalOperator: peg$parserelationalOperator, rootDirectory: peg$parserootDirectory, scopeReference: peg$parsescopeReference, separator: peg$parseseparator, shebang: peg$parseshebang, shiftExpression: peg$parseshiftExpression, shiftOperator: peg$parseshiftOperator, shorthandFunction: peg$parseshorthandFunction, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, slash: peg$parseslash, slashFollows: peg$parseslashFollows, spreadElement: peg$parsespreadElement, stringLiteral: peg$parsestringLiteral, templateDocument: peg$parsetemplateDocument, templateDocumentChar: peg$parsetemplateDocumentChar, templateDocumentText: peg$parsetemplateDocumentText, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, unaryExpression: peg$parseunaryExpression, unaryOperator: peg$parseunaryOperator, whitespace: peg$parsewhitespace, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
208
+ var peg$startRuleFunctions = { __: peg$parse__, additiveExpression: peg$parseadditiveExpression, additiveOperator: peg$parseadditiveOperator, arguments: peg$parsearguments, arrayLiteral: peg$parsearrayLiteral, arrayEntries: peg$parsearrayEntries, arrayEntry: peg$parsearrayEntry, arrowFunction: peg$parsearrowFunction, bitwiseAndExpression: peg$parsebitwiseAndExpression, bitwiseAndOperator: peg$parsebitwiseAndOperator, bitwiseOrExpression: peg$parsebitwiseOrExpression, bitwiseOrOperator: peg$parsebitwiseOrOperator, bitwiseXorExpression: peg$parsebitwiseXorExpression, bitwiseXorOperator: peg$parsebitwiseXorOperator, callExpression: peg$parsecallExpression, commaExpression: peg$parsecommaExpression, comment: peg$parsecomment, conditionalExpression: peg$parseconditionalExpression, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, ellipsis: peg$parseellipsis, equalityExpression: peg$parseequalityExpression, equalityOperator: peg$parseequalityOperator, escapedChar: peg$parseescapedChar, expectBacktick: peg$parseexpectBacktick, expectClosingBrace: peg$parseexpectClosingBrace, expectClosingBracket: peg$parseexpectClosingBracket, expectClosingParenthesis: peg$parseexpectClosingParenthesis, expectDoubleQuote: peg$parseexpectDoubleQuote, expectExpression: peg$parseexpectExpression, expectFrontDelimiter: peg$parseexpectFrontDelimiter, expectGuillemet: peg$parseexpectGuillemet, expectSingleQuote: peg$parseexpectSingleQuote, expectPipelineExpression: peg$parseexpectPipelineExpression, exponentiationExpression: peg$parseexponentiationExpression, expression: peg$parseexpression, floatLiteral: peg$parsefloatLiteral, frontDelimiter: peg$parsefrontDelimiter, frontMatterExpression: peg$parsefrontMatterExpression, frontMatterText: peg$parsefrontMatterText, frontMatterYaml: peg$parsefrontMatterYaml, group: peg$parsegroup, guillemetString: peg$parseguillemetString, guillemetStringChar: peg$parseguillemetStringChar, homeDirectory: peg$parsehomeDirectory, host: peg$parsehost, identifier: peg$parseidentifier, identifierChar: peg$parseidentifierChar, implicitParenthesesCallExpression: peg$parseimplicitParenthesesCallExpression, implicitParensthesesArguments: peg$parseimplicitParensthesesArguments, inlineSpace: peg$parseinlineSpace, integerLiteral: peg$parseintegerLiteral, list: peg$parselist, literal: peg$parseliteral, logicalAndExpression: peg$parselogicalAndExpression, logicalOrExpression: peg$parselogicalOrExpression, multiLineComment: peg$parsemultiLineComment, multiplicativeExpression: peg$parsemultiplicativeExpression, multiplicativeOperator: peg$parsemultiplicativeOperator, namespace: peg$parsenamespace, newLine: peg$parsenewLine, numericLiteral: peg$parsenumericLiteral, nullishCoalescingExpression: peg$parsenullishCoalescingExpression, objectLiteral: peg$parseobjectLiteral, objectEntries: peg$parseobjectEntries, objectEntry: peg$parseobjectEntry, objectGetter: peg$parseobjectGetter, objectHiddenKey: peg$parseobjectHiddenKey, objectKey: peg$parseobjectKey, objectProperty: peg$parseobjectProperty, objectShorthandProperty: peg$parseobjectShorthandProperty, objectPublicKey: peg$parseobjectPublicKey, parameter: peg$parseparameter, parameterList: peg$parseparameterList, parameterSingleton: peg$parseparameterSingleton, parenthesesArguments: peg$parseparenthesesArguments, path: peg$parsepath, pathArguments: peg$parsepathArguments, pathKey: peg$parsepathKey, pathSegment: peg$parsepathSegment, pathSegmentChar: peg$parsepathSegmentChar, pipelineExpression: peg$parsepipelineExpression, primary: peg$parseprimary, program: peg$parseprogram, protocolExpression: peg$parseprotocolExpression, qualifiedReference: peg$parsequalifiedReference, inherited: peg$parseinherited, relationalExpression: peg$parserelationalExpression, relationalOperator: peg$parserelationalOperator, rootDirectory: peg$parserootDirectory, scopeReference: peg$parsescopeReference, separator: peg$parseseparator, shebang: peg$parseshebang, shiftExpression: peg$parseshiftExpression, shiftOperator: peg$parseshiftOperator, shorthandFunction: peg$parseshorthandFunction, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, slash: peg$parseslash, slashFollows: peg$parseslashFollows, spreadElement: peg$parsespreadElement, stringLiteral: peg$parsestringLiteral, templateBody: peg$parsetemplateBody, templateBodyChar: peg$parsetemplateBodyChar, templateBodyText: peg$parsetemplateBodyText, templateDocument: peg$parsetemplateDocument, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, unaryExpression: peg$parseunaryExpression, unaryOperator: peg$parseunaryOperator, whitespace: peg$parsewhitespace, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
206
209
  var peg$startRuleFunction = peg$parse__;
207
210
 
208
211
  var peg$c0 = "[";
@@ -238,32 +241,33 @@ function peg$parse(input, options) {
238
241
  var peg$c30 = "'";
239
242
  var peg$c31 = "**";
240
243
  var peg$c32 = ".";
241
- var peg$c33 = "\xAB";
242
- var peg$c34 = "~";
243
- var peg$c35 = "-";
244
- var peg$c36 = ">";
245
- var peg$c37 = "&&";
246
- var peg$c38 = "||";
247
- var peg$c39 = "/*";
248
- var peg$c40 = "*/";
249
- var peg$c41 = "\n";
250
- var peg$c42 = "\r\n";
251
- var peg$c43 = "\r";
252
- var peg$c44 = "??";
253
- var peg$c45 = "{";
254
- var peg$c46 = "=";
255
- var peg$c47 = "/";
256
- var peg$c48 = "//";
257
- var peg$c49 = "<=";
258
- var peg$c50 = "<";
259
- var peg$c51 = ">=";
260
- var peg$c52 = "#!";
261
- var peg$c53 = "<<";
262
- var peg$c54 = ">>>";
263
- var peg$c55 = ">>";
264
- var peg$c56 = "\u2192";
265
- var peg$c57 = "->";
266
- var peg$c58 = "${";
244
+ var peg$c33 = "---\n";
245
+ var peg$c34 = "\xAB";
246
+ var peg$c35 = "~";
247
+ var peg$c36 = "-";
248
+ var peg$c37 = ">";
249
+ var peg$c38 = "&&";
250
+ var peg$c39 = "||";
251
+ var peg$c40 = "/*";
252
+ var peg$c41 = "*/";
253
+ var peg$c42 = "\n";
254
+ var peg$c43 = "\r\n";
255
+ var peg$c44 = "\r";
256
+ var peg$c45 = "??";
257
+ var peg$c46 = "{";
258
+ var peg$c47 = "=";
259
+ var peg$c48 = "/";
260
+ var peg$c49 = "//";
261
+ var peg$c50 = "<=";
262
+ var peg$c51 = "<";
263
+ var peg$c52 = ">=";
264
+ var peg$c53 = "#!";
265
+ var peg$c54 = "<<";
266
+ var peg$c55 = ">>>";
267
+ var peg$c56 = ">>";
268
+ var peg$c57 = "\u2192";
269
+ var peg$c58 = "->";
270
+ var peg$c59 = "${";
267
271
 
268
272
  var peg$r0 = /^[+\-]/;
269
273
  var peg$r1 = /^[0-9]/;
@@ -318,63 +322,66 @@ function peg$parse(input, options) {
318
322
  var peg$e40 = peg$literalExpectation("**", false);
319
323
  var peg$e41 = peg$otherExpectation("floating-point number");
320
324
  var peg$e42 = peg$literalExpectation(".", false);
321
- var peg$e43 = peg$otherExpectation("parenthetical group");
322
- var peg$e44 = peg$otherExpectation("guillemet string");
323
- var peg$e45 = peg$literalExpectation("\xAB", false);
324
- var peg$e46 = peg$literalExpectation("~", false);
325
- var peg$e47 = peg$otherExpectation("HTTP/HTTPS host");
326
- var peg$e48 = peg$otherExpectation("identifier");
327
- var peg$e49 = peg$classExpectation(["(", ")", "{", "}", "[", "]", "<", ">", "?", "!", "|", "-", "=", ",", "/", ":", "`", "\"", "'", "\xAB", "\xBB", "\\", "\u2192", "\u21D2", "\u2026", " ", "\t", "\n", "\r"], true, false);
328
- var peg$e50 = peg$literalExpectation("-", false);
329
- var peg$e51 = peg$literalExpectation(">", false);
330
- var peg$e52 = peg$otherExpectation("function call with implicit parentheses");
331
- var peg$e53 = peg$classExpectation([" ", "\t"], false, false);
332
- var peg$e54 = peg$otherExpectation("integer");
333
- var peg$e55 = peg$otherExpectation("list");
334
- var peg$e56 = peg$literalExpectation("&&", false);
335
- var peg$e57 = peg$literalExpectation("||", false);
336
- var peg$e58 = peg$literalExpectation("/*", false);
337
- var peg$e59 = peg$literalExpectation("*/", false);
338
- var peg$e60 = peg$classExpectation(["%", "*", "/"], false, false);
339
- var peg$e61 = peg$classExpectation([["A", "Z"], ["a", "z"]], false, false);
340
- var peg$e62 = peg$literalExpectation("\n", false);
341
- var peg$e63 = peg$literalExpectation("\r\n", false);
342
- var peg$e64 = peg$literalExpectation("\r", false);
343
- var peg$e65 = peg$otherExpectation("number");
344
- var peg$e66 = peg$literalExpectation("??", false);
345
- var peg$e67 = peg$otherExpectation("object literal");
346
- var peg$e68 = peg$literalExpectation("{", false);
347
- var peg$e69 = peg$otherExpectation("object getter");
348
- var peg$e70 = peg$literalExpectation("=", false);
349
- var peg$e71 = peg$otherExpectation("object key");
350
- var peg$e72 = peg$otherExpectation("object property");
351
- var peg$e73 = peg$otherExpectation("object identifier");
352
- var peg$e74 = peg$literalExpectation("/", false);
353
- var peg$e75 = peg$otherExpectation("function arguments in parentheses");
354
- var peg$e76 = peg$otherExpectation("slash-separated path");
355
- var peg$e77 = peg$classExpectation(["(", ")", "{", "}", "[", "]", ",", ":", "/", "\\", " ", "\t", "\n", "\r"], true, false);
356
- var peg$e78 = peg$otherExpectation("Origami program");
357
- var peg$e79 = peg$literalExpectation("//", false);
358
- var peg$e80 = peg$literalExpectation("<=", false);
359
- var peg$e81 = peg$literalExpectation("<", false);
360
- var peg$e82 = peg$literalExpectation(">=", false);
361
- var peg$e83 = peg$otherExpectation("scope reference");
362
- var peg$e84 = peg$literalExpectation("#!", false);
363
- var peg$e85 = peg$classExpectation(["\n", "\r"], true, false);
364
- var peg$e86 = peg$literalExpectation("<<", false);
365
- var peg$e87 = peg$literalExpectation(">>>", false);
366
- var peg$e88 = peg$literalExpectation(">>", false);
367
- var peg$e89 = peg$otherExpectation("lambda function");
368
- var peg$e90 = peg$literalExpectation("\u2192", false);
369
- var peg$e91 = peg$literalExpectation("->", false);
370
- var peg$e92 = peg$otherExpectation("single quote string");
371
- var peg$e93 = peg$otherExpectation("string");
372
- var peg$e94 = peg$otherExpectation("template");
373
- var peg$e95 = peg$literalExpectation("${", false);
374
- var peg$e96 = peg$otherExpectation("template text");
375
- var peg$e97 = peg$otherExpectation("template literal");
376
- var peg$e98 = peg$otherExpectation("template substitution");
377
- var peg$e99 = peg$classExpectation(["!", "+", "-", "~"], false, false);
325
+ var peg$e43 = peg$literalExpectation("---\n", false);
326
+ var peg$e44 = peg$otherExpectation("YAML front matter");
327
+ var peg$e45 = peg$otherExpectation("parenthetical group");
328
+ var peg$e46 = peg$otherExpectation("guillemet string");
329
+ var peg$e47 = peg$literalExpectation("\xAB", false);
330
+ var peg$e48 = peg$literalExpectation("~", false);
331
+ var peg$e49 = peg$otherExpectation("HTTP/HTTPS host");
332
+ var peg$e50 = peg$otherExpectation("identifier");
333
+ var peg$e51 = peg$classExpectation(["(", ")", "{", "}", "[", "]", "<", ">", "?", "!", "|", "-", "=", ",", "/", ":", "`", "\"", "'", "\xAB", "\xBB", "\\", "\u2192", "\u21D2", "\u2026", " ", "\t", "\n", "\r"], true, false);
334
+ var peg$e52 = peg$literalExpectation("-", false);
335
+ var peg$e53 = peg$literalExpectation(">", false);
336
+ var peg$e54 = peg$otherExpectation("function call with implicit parentheses");
337
+ var peg$e55 = peg$classExpectation([" ", "\t"], false, false);
338
+ var peg$e56 = peg$otherExpectation("integer");
339
+ var peg$e57 = peg$otherExpectation("list");
340
+ var peg$e58 = peg$literalExpectation("&&", false);
341
+ var peg$e59 = peg$literalExpectation("||", false);
342
+ var peg$e60 = peg$literalExpectation("/*", false);
343
+ var peg$e61 = peg$literalExpectation("*/", false);
344
+ var peg$e62 = peg$classExpectation(["%", "*", "/"], false, false);
345
+ var peg$e63 = peg$classExpectation([["A", "Z"], ["a", "z"]], false, false);
346
+ var peg$e64 = peg$literalExpectation("\n", false);
347
+ var peg$e65 = peg$literalExpectation("\r\n", false);
348
+ var peg$e66 = peg$literalExpectation("\r", false);
349
+ var peg$e67 = peg$otherExpectation("number");
350
+ var peg$e68 = peg$literalExpectation("??", false);
351
+ var peg$e69 = peg$otherExpectation("object literal");
352
+ var peg$e70 = peg$literalExpectation("{", false);
353
+ var peg$e71 = peg$otherExpectation("object getter");
354
+ var peg$e72 = peg$literalExpectation("=", false);
355
+ var peg$e73 = peg$otherExpectation("object key");
356
+ var peg$e74 = peg$otherExpectation("object property");
357
+ var peg$e75 = peg$otherExpectation("object identifier");
358
+ var peg$e76 = peg$literalExpectation("/", false);
359
+ var peg$e77 = peg$otherExpectation("function arguments in parentheses");
360
+ var peg$e78 = peg$otherExpectation("slash-separated path");
361
+ var peg$e79 = peg$classExpectation(["(", ")", "{", "}", "[", "]", ",", ":", "/", "\\", " ", "\t", "\n", "\r"], true, false);
362
+ var peg$e80 = peg$otherExpectation("Origami program");
363
+ var peg$e81 = peg$literalExpectation("//", false);
364
+ var peg$e82 = peg$literalExpectation("<=", false);
365
+ var peg$e83 = peg$literalExpectation("<", false);
366
+ var peg$e84 = peg$literalExpectation(">=", false);
367
+ var peg$e85 = peg$otherExpectation("scope reference");
368
+ var peg$e86 = peg$literalExpectation("#!", false);
369
+ var peg$e87 = peg$classExpectation(["\n", "\r"], true, false);
370
+ var peg$e88 = peg$literalExpectation("<<", false);
371
+ var peg$e89 = peg$literalExpectation(">>>", false);
372
+ var peg$e90 = peg$literalExpectation(">>", false);
373
+ var peg$e91 = peg$otherExpectation("lambda function");
374
+ var peg$e92 = peg$literalExpectation("\u2192", false);
375
+ var peg$e93 = peg$literalExpectation("->", false);
376
+ var peg$e94 = peg$otherExpectation("single quote string");
377
+ var peg$e95 = peg$otherExpectation("string");
378
+ var peg$e96 = peg$otherExpectation("template");
379
+ var peg$e97 = peg$literalExpectation("${", false);
380
+ var peg$e98 = peg$otherExpectation("template text");
381
+ var peg$e99 = peg$otherExpectation("template document");
382
+ var peg$e100 = peg$otherExpectation("template literal");
383
+ var peg$e101 = peg$otherExpectation("template substitution");
384
+ var peg$e102 = peg$classExpectation(["!", "+", "-", "~"], false, false);
378
385
 
379
386
  var peg$f0 = function() {
380
387
  return null;
@@ -456,49 +463,64 @@ function peg$parse(input, options) {
456
463
  error("Expected closing quote");
457
464
  };
458
465
  var peg$f27 = function() {
459
- error("Expected closing guillemet");
466
+ error("Expected an Origami expression");
460
467
  };
461
468
  var peg$f28 = function() {
462
- error("Expected closing quote");
469
+ error("Expected \"---\"");
463
470
  };
464
471
  var peg$f29 = function() {
472
+ error("Expected closing guillemet");
473
+ };
474
+ var peg$f30 = function() {
475
+ error("Expected closing quote");
476
+ };
477
+ var peg$f31 = function() {
465
478
  error("Expected an expression");
466
479
  };
467
- var peg$f30 = function(left, right) {
480
+ var peg$f32 = function(left, right) {
468
481
  return right ? annotate([ops.exponentiation, left, right], location()) : left;
469
482
  };
470
- var peg$f31 = function() {
483
+ var peg$f33 = function() {
471
484
  return annotate([ops.literal, parseFloat(text())], location());
472
485
  };
473
- var peg$f32 = function(expression) {
486
+ var peg$f34 = function() {
487
+ return isOrigamiFrontMatter(input.slice(location().end.offset))
488
+ };
489
+ var peg$f35 = function(chars) {
490
+ return chars.join("");
491
+ };
492
+ var peg$f36 = function(yaml) {
493
+ return makeYamlObject(yaml, location());
494
+ };
495
+ var peg$f37 = function(expression) {
474
496
  return annotate(downgradeReference(expression), location());
475
497
  };
476
- var peg$f33 = function(chars) {
498
+ var peg$f38 = function(chars) {
477
499
  return annotate([ops.literal, chars.join("")], location());
478
500
  };
479
- var peg$f34 = function() {
501
+ var peg$f39 = function() {
480
502
  return annotate([ops.homeDirectory], location());
481
503
  };
482
- var peg$f35 = function(identifier, port, slashFollows) {
504
+ var peg$f40 = function(identifier, port, slashFollows) {
483
505
  const portText = port ? `:${port[1]}` : "";
484
506
  const slashText = slashFollows ? "/" : "";
485
507
  const hostText = identifier + portText + slashText;
486
508
  return annotate([ops.literal, hostText], location());
487
509
  };
488
- var peg$f36 = function(chars) { return chars.join(""); };
489
- var peg$f37 = function(head, args) {
510
+ var peg$f41 = function(chars) { return chars.join(""); };
511
+ var peg$f42 = function(head, args) {
490
512
  return args ? makeCall(head, args) : head;
491
513
  };
492
- var peg$f38 = function(values) {
514
+ var peg$f43 = function(values) {
493
515
  return annotate(values, location());
494
516
  };
495
- var peg$f39 = function() {
517
+ var peg$f44 = function() {
496
518
  return annotate([ops.literal, parseInt(text())], location());
497
519
  };
498
- var peg$f40 = function(values) {
520
+ var peg$f45 = function(values) {
499
521
  return annotate(values, location());
500
522
  };
501
- var peg$f41 = function(head, tail) {
523
+ var peg$f46 = function(head, tail) {
502
524
  return tail.length === 0
503
525
  ? head
504
526
  : annotate(
@@ -506,7 +528,7 @@ function peg$parse(input, options) {
506
528
  location()
507
529
  );
508
530
  };
509
- var peg$f42 = function(head, tail) {
531
+ var peg$f47 = function(head, tail) {
510
532
  return tail.length === 0
511
533
  ? head
512
534
  : annotate(
@@ -514,14 +536,14 @@ function peg$parse(input, options) {
514
536
  location()
515
537
  );
516
538
  };
517
- var peg$f43 = function() { return null; };
518
- var peg$f44 = function(head, tail) {
539
+ var peg$f48 = function() { return null; };
540
+ var peg$f49 = function(head, tail) {
519
541
  return tail.reduce(makeBinaryOperation, head);
520
542
  };
521
- var peg$f45 = function(chars) {
543
+ var peg$f50 = function(chars) {
522
544
  return annotate([ops.builtin, chars.join("") + ":"], location());
523
545
  };
524
- var peg$f46 = function(head, tail) {
546
+ var peg$f51 = function(head, tail) {
525
547
  return tail.length === 0
526
548
  ? head
527
549
  : annotate(
@@ -529,113 +551,113 @@ function peg$parse(input, options) {
529
551
  location()
530
552
  );
531
553
  };
532
- var peg$f47 = function(entries) {
554
+ var peg$f52 = function(entries) {
533
555
  return makeObject(entries ?? [], location());
534
556
  };
535
- var peg$f48 = function(entries) {
557
+ var peg$f53 = function(entries) {
536
558
  return annotate(entries, location());
537
559
  };
538
- var peg$f49 = function(key, pipeline) {
560
+ var peg$f54 = function(key, pipeline) {
539
561
  return annotate(
540
562
  makeProperty(key, annotate([ops.getter, pipeline], location())),
541
563
  location()
542
564
  );
543
565
  };
544
- var peg$f50 = function(hiddenKey) { return hiddenKey.join(""); };
545
- var peg$f51 = function(key, pipeline) {
566
+ var peg$f55 = function(hiddenKey) { return hiddenKey.join(""); };
567
+ var peg$f56 = function(key, pipeline) {
546
568
  return annotate(makeProperty(key, pipeline), location());
547
569
  };
548
- var peg$f52 = function(key) {
570
+ var peg$f57 = function(key) {
549
571
  const inherited = annotate([ops.inherited, key], location());
550
572
  return annotate([key, inherited], location());
551
573
  };
552
- var peg$f53 = function(identifier, slash) {
574
+ var peg$f58 = function(identifier, slash) {
553
575
  return identifier + (slash ?? "");
554
576
  };
555
- var peg$f54 = function(string) {
577
+ var peg$f59 = function(string) {
556
578
  // Remove `ops.literal` from the string code
557
579
  return string[1];
558
580
  };
559
- var peg$f55 = function(identifier) {
581
+ var peg$f60 = function(identifier) {
560
582
  return annotate([ops.literal, identifier], location());
561
583
  };
562
- var peg$f56 = function(list) {
584
+ var peg$f61 = function(list) {
563
585
  return annotate(list, location());
564
586
  };
565
- var peg$f57 = function(identifier) {
587
+ var peg$f62 = function(identifier) {
566
588
  return annotate(
567
589
  [annotate([ops.literal, identifier], location())],
568
590
  location()
569
591
  );
570
592
  };
571
- var peg$f58 = function(list) {
593
+ var peg$f63 = function(list) {
572
594
  return annotate(list ?? [undefined], location());
573
595
  };
574
- var peg$f59 = function(segments) {
596
+ var peg$f64 = function(segments) {
575
597
  // Drop empty segments that represent consecutive or final slashes
576
598
  segments = segments.filter(segment => segment);
577
599
  return annotate(segments, location());
578
600
  };
579
- var peg$f60 = function(path) {
601
+ var peg$f65 = function(path) {
580
602
  return annotate([ops.traverse, ...path], location());
581
603
  };
582
- var peg$f61 = function(chars, slashFollows) {
604
+ var peg$f66 = function(chars, slashFollows) {
583
605
  // Append a trailing slash if one follows (but don't consume it)
584
606
  const key = chars.join("") + (slashFollows ? "/" : "");
585
607
  return annotate([ops.literal, key], location());
586
608
  };
587
- var peg$f62 = function(head, tail) {
609
+ var peg$f67 = function(head, tail) {
588
610
  return annotate(
589
611
  tail.reduce(makePipeline, downgradeReference(head)),
590
612
  location()
591
613
  );
592
614
  };
593
- var peg$f63 = function(fn, host, path) {
615
+ var peg$f68 = function(fn, host, path) {
594
616
  const keys = annotate([host, ...(path ?? [])], location());
595
617
  return makeCall(fn, keys);
596
618
  };
597
- var peg$f64 = function(fn, reference) {
619
+ var peg$f69 = function(fn, reference) {
598
620
  const literal = annotate([ops.literal, reference[1]], reference.location);
599
621
  return makeCall(fn, [literal]);
600
622
  };
601
- var peg$f65 = function(head, tail) {
623
+ var peg$f70 = function(head, tail) {
602
624
  return tail.reduce(makeBinaryOperation, head);
603
625
  };
604
- var peg$f66 = function(key) {
626
+ var peg$f71 = function(key) {
605
627
  return annotate([ops.rootDirectory, key], location());
606
628
  };
607
- var peg$f67 = function() {
629
+ var peg$f72 = function() {
608
630
  return annotate([ops.rootDirectory], location());
609
631
  };
610
- var peg$f68 = function(identifier, slashFollows) {
632
+ var peg$f73 = function(identifier, slashFollows) {
611
633
  const id = identifier + (slashFollows ? "/" : "");
612
634
  return annotate(makeReference(id), location());
613
635
  };
614
- var peg$f69 = function() { return null; };
615
- var peg$f70 = function(head, tail) {
636
+ var peg$f74 = function() { return null; };
637
+ var peg$f75 = function(head, tail) {
616
638
  return tail.reduce(makeBinaryOperation, head);
617
639
  };
618
- var peg$f71 = function(definition) {
640
+ var peg$f76 = function(definition) {
619
641
  const lambdaParameters = annotate(
620
642
  [annotate([ops.literal, "_"], location())],
621
643
  location()
622
644
  );
623
645
  return annotate([ops.lambda, lambdaParameters, definition], location());
624
646
  };
625
- var peg$f72 = function() { return null; };
626
- var peg$f73 = function(chars) {
647
+ var peg$f77 = function() { return null; };
648
+ var peg$f78 = function(chars) {
627
649
  return annotate([ops.literal, chars.join("")], location());
628
650
  };
629
- var peg$f74 = function() {
651
+ var peg$f79 = function() {
630
652
  return annotate([ops.literal, "/"], location());
631
653
  };
632
- var peg$f75 = function() {
654
+ var peg$f80 = function() {
633
655
  return true;
634
656
  };
635
- var peg$f76 = function(value) {
657
+ var peg$f81 = function(value) {
636
658
  return annotate([ops.spread, value], location());
637
659
  };
638
- var peg$f77 = function(head, tail) {
660
+ var peg$f82 = function(head, tail) {
639
661
  const lambdaParameters = annotate(
640
662
  [annotate([ops.literal, "_"], location())],
641
663
  location()
@@ -645,19 +667,27 @@ function peg$parse(input, options) {
645
667
  location()
646
668
  );
647
669
  };
648
- var peg$f78 = function(chars) {
670
+ var peg$f83 = function(chars) {
649
671
  return annotate([ops.literal, chars.join("")], location());
650
672
  };
651
- var peg$f79 = function(head, tail) {
673
+ var peg$f84 = function(front, body) {
674
+ return annotate(applyMacro(front, "@template", body), location());
675
+ };
676
+ var peg$f85 = function(front, body) {
677
+ return front
678
+ ? annotate([ops.document, front, body], location())
679
+ : annotate(body, location());
680
+ };
681
+ var peg$f86 = function(head, tail) {
652
682
  return makeTemplate(ops.template, head, tail, location());
653
683
  };
654
- var peg$f80 = function(chars) {
684
+ var peg$f87 = function(chars) {
655
685
  return annotate([ops.literal, chars.join("")], location());
656
686
  };
657
- var peg$f81 = function(expression) {
687
+ var peg$f88 = function(expression) {
658
688
  return annotate(expression, location());
659
689
  };
660
- var peg$f82 = function(operator, expression) {
690
+ var peg$f89 = function(operator, expression) {
661
691
  return makeUnaryOperation(operator, expression, location());
662
692
  };
663
693
  var peg$currPos = options.peg$currPos | 0;
@@ -2111,6 +2141,54 @@ function peg$parse(input, options) {
2111
2141
  return s0;
2112
2142
  }
2113
2143
 
2144
+ function peg$parseexpectExpression() {
2145
+ var s0, s1;
2146
+
2147
+ s0 = peg$parseexpression();
2148
+ if (s0 === peg$FAILED) {
2149
+ s0 = peg$currPos;
2150
+ if (input.length > peg$currPos) {
2151
+ s1 = input.charAt(peg$currPos);
2152
+ peg$currPos++;
2153
+ } else {
2154
+ s1 = peg$FAILED;
2155
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2156
+ }
2157
+ if (s1 === peg$FAILED) {
2158
+ s1 = null;
2159
+ }
2160
+ peg$savedPos = s0;
2161
+ s1 = peg$f27();
2162
+ s0 = s1;
2163
+ }
2164
+
2165
+ return s0;
2166
+ }
2167
+
2168
+ function peg$parseexpectFrontDelimiter() {
2169
+ var s0, s1;
2170
+
2171
+ s0 = peg$parsefrontDelimiter();
2172
+ if (s0 === peg$FAILED) {
2173
+ s0 = peg$currPos;
2174
+ if (input.length > peg$currPos) {
2175
+ s1 = input.charAt(peg$currPos);
2176
+ peg$currPos++;
2177
+ } else {
2178
+ s1 = peg$FAILED;
2179
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2180
+ }
2181
+ if (s1 === peg$FAILED) {
2182
+ s1 = null;
2183
+ }
2184
+ peg$savedPos = s0;
2185
+ s1 = peg$f28();
2186
+ s0 = s1;
2187
+ }
2188
+
2189
+ return s0;
2190
+ }
2191
+
2114
2192
  function peg$parseexpectGuillemet() {
2115
2193
  var s0, s1;
2116
2194
 
@@ -2134,7 +2212,7 @@ function peg$parse(input, options) {
2134
2212
  s1 = null;
2135
2213
  }
2136
2214
  peg$savedPos = s0;
2137
- s1 = peg$f27();
2215
+ s1 = peg$f29();
2138
2216
  s0 = s1;
2139
2217
  }
2140
2218
 
@@ -2164,7 +2242,7 @@ function peg$parse(input, options) {
2164
2242
  s1 = null;
2165
2243
  }
2166
2244
  peg$savedPos = s0;
2167
- s1 = peg$f28();
2245
+ s1 = peg$f30();
2168
2246
  s0 = s1;
2169
2247
  }
2170
2248
 
@@ -2188,7 +2266,7 @@ function peg$parse(input, options) {
2188
2266
  s1 = null;
2189
2267
  }
2190
2268
  peg$savedPos = s0;
2191
- s1 = peg$f29();
2269
+ s1 = peg$f31();
2192
2270
  s0 = s1;
2193
2271
  }
2194
2272
 
@@ -2227,7 +2305,7 @@ function peg$parse(input, options) {
2227
2305
  s2 = null;
2228
2306
  }
2229
2307
  peg$savedPos = s0;
2230
- s0 = peg$f30(s1, s2);
2308
+ s0 = peg$f32(s1, s2);
2231
2309
  } else {
2232
2310
  peg$currPos = s0;
2233
2311
  s0 = peg$FAILED;
@@ -2273,7 +2351,7 @@ function peg$parse(input, options) {
2273
2351
  s3 = peg$parsedigits();
2274
2352
  if (s3 !== peg$FAILED) {
2275
2353
  peg$savedPos = s0;
2276
- s0 = peg$f31();
2354
+ s0 = peg$f33();
2277
2355
  } else {
2278
2356
  peg$currPos = s0;
2279
2357
  s0 = peg$FAILED;
@@ -2291,6 +2369,161 @@ function peg$parse(input, options) {
2291
2369
  return s0;
2292
2370
  }
2293
2371
 
2372
+ function peg$parsefrontDelimiter() {
2373
+ var s0;
2374
+
2375
+ if (input.substr(peg$currPos, 4) === peg$c33) {
2376
+ s0 = peg$c33;
2377
+ peg$currPos += 4;
2378
+ } else {
2379
+ s0 = peg$FAILED;
2380
+ if (peg$silentFails === 0) { peg$fail(peg$e43); }
2381
+ }
2382
+
2383
+ return s0;
2384
+ }
2385
+
2386
+ function peg$parsefrontMatterExpression() {
2387
+ var s0, s1, s2, s3, s4;
2388
+
2389
+ s0 = peg$currPos;
2390
+ s1 = peg$parsefrontDelimiter();
2391
+ if (s1 !== peg$FAILED) {
2392
+ peg$savedPos = peg$currPos;
2393
+ s2 = peg$f34();
2394
+ if (s2) {
2395
+ s2 = undefined;
2396
+ } else {
2397
+ s2 = peg$FAILED;
2398
+ }
2399
+ if (s2 !== peg$FAILED) {
2400
+ s3 = peg$parseexpectExpression();
2401
+ if (s3 !== peg$FAILED) {
2402
+ s4 = peg$parseexpectFrontDelimiter();
2403
+ if (s4 !== peg$FAILED) {
2404
+ s0 = s3;
2405
+ } else {
2406
+ peg$currPos = s0;
2407
+ s0 = peg$FAILED;
2408
+ }
2409
+ } else {
2410
+ peg$currPos = s0;
2411
+ s0 = peg$FAILED;
2412
+ }
2413
+ } else {
2414
+ peg$currPos = s0;
2415
+ s0 = peg$FAILED;
2416
+ }
2417
+ } else {
2418
+ peg$currPos = s0;
2419
+ s0 = peg$FAILED;
2420
+ }
2421
+
2422
+ return s0;
2423
+ }
2424
+
2425
+ function peg$parsefrontMatterText() {
2426
+ var s0, s1, s2, s3, s4;
2427
+
2428
+ s0 = peg$currPos;
2429
+ s1 = [];
2430
+ s2 = peg$currPos;
2431
+ s3 = peg$currPos;
2432
+ peg$silentFails++;
2433
+ s4 = peg$parsefrontDelimiter();
2434
+ peg$silentFails--;
2435
+ if (s4 === peg$FAILED) {
2436
+ s3 = undefined;
2437
+ } else {
2438
+ peg$currPos = s3;
2439
+ s3 = peg$FAILED;
2440
+ }
2441
+ if (s3 !== peg$FAILED) {
2442
+ if (input.length > peg$currPos) {
2443
+ s4 = input.charAt(peg$currPos);
2444
+ peg$currPos++;
2445
+ } else {
2446
+ s4 = peg$FAILED;
2447
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2448
+ }
2449
+ if (s4 !== peg$FAILED) {
2450
+ s2 = s4;
2451
+ } else {
2452
+ peg$currPos = s2;
2453
+ s2 = peg$FAILED;
2454
+ }
2455
+ } else {
2456
+ peg$currPos = s2;
2457
+ s2 = peg$FAILED;
2458
+ }
2459
+ while (s2 !== peg$FAILED) {
2460
+ s1.push(s2);
2461
+ s2 = peg$currPos;
2462
+ s3 = peg$currPos;
2463
+ peg$silentFails++;
2464
+ s4 = peg$parsefrontDelimiter();
2465
+ peg$silentFails--;
2466
+ if (s4 === peg$FAILED) {
2467
+ s3 = undefined;
2468
+ } else {
2469
+ peg$currPos = s3;
2470
+ s3 = peg$FAILED;
2471
+ }
2472
+ if (s3 !== peg$FAILED) {
2473
+ if (input.length > peg$currPos) {
2474
+ s4 = input.charAt(peg$currPos);
2475
+ peg$currPos++;
2476
+ } else {
2477
+ s4 = peg$FAILED;
2478
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2479
+ }
2480
+ if (s4 !== peg$FAILED) {
2481
+ s2 = s4;
2482
+ } else {
2483
+ peg$currPos = s2;
2484
+ s2 = peg$FAILED;
2485
+ }
2486
+ } else {
2487
+ peg$currPos = s2;
2488
+ s2 = peg$FAILED;
2489
+ }
2490
+ }
2491
+ peg$savedPos = s0;
2492
+ s1 = peg$f35(s1);
2493
+ s0 = s1;
2494
+
2495
+ return s0;
2496
+ }
2497
+
2498
+ function peg$parsefrontMatterYaml() {
2499
+ var s0, s1, s2, s3;
2500
+
2501
+ peg$silentFails++;
2502
+ s0 = peg$currPos;
2503
+ s1 = peg$parsefrontDelimiter();
2504
+ if (s1 !== peg$FAILED) {
2505
+ s2 = peg$parsefrontMatterText();
2506
+ s3 = peg$parsefrontDelimiter();
2507
+ if (s3 !== peg$FAILED) {
2508
+ peg$savedPos = s0;
2509
+ s0 = peg$f36(s2);
2510
+ } else {
2511
+ peg$currPos = s0;
2512
+ s0 = peg$FAILED;
2513
+ }
2514
+ } else {
2515
+ peg$currPos = s0;
2516
+ s0 = peg$FAILED;
2517
+ }
2518
+ peg$silentFails--;
2519
+ if (s0 === peg$FAILED) {
2520
+ s1 = peg$FAILED;
2521
+ if (peg$silentFails === 0) { peg$fail(peg$e44); }
2522
+ }
2523
+
2524
+ return s0;
2525
+ }
2526
+
2294
2527
  function peg$parsegroup() {
2295
2528
  var s0, s1, s2, s3;
2296
2529
 
@@ -2309,7 +2542,7 @@ function peg$parse(input, options) {
2309
2542
  s3 = peg$parseexpectClosingParenthesis();
2310
2543
  if (s3 !== peg$FAILED) {
2311
2544
  peg$savedPos = s0;
2312
- s0 = peg$f32(s2);
2545
+ s0 = peg$f37(s2);
2313
2546
  } else {
2314
2547
  peg$currPos = s0;
2315
2548
  s0 = peg$FAILED;
@@ -2325,7 +2558,7 @@ function peg$parse(input, options) {
2325
2558
  peg$silentFails--;
2326
2559
  if (s0 === peg$FAILED) {
2327
2560
  s1 = peg$FAILED;
2328
- if (peg$silentFails === 0) { peg$fail(peg$e43); }
2561
+ if (peg$silentFails === 0) { peg$fail(peg$e45); }
2329
2562
  }
2330
2563
 
2331
2564
  return s0;
@@ -2337,11 +2570,11 @@ function peg$parse(input, options) {
2337
2570
  peg$silentFails++;
2338
2571
  s0 = peg$currPos;
2339
2572
  if (input.charCodeAt(peg$currPos) === 171) {
2340
- s1 = peg$c33;
2573
+ s1 = peg$c34;
2341
2574
  peg$currPos++;
2342
2575
  } else {
2343
2576
  s1 = peg$FAILED;
2344
- if (peg$silentFails === 0) { peg$fail(peg$e45); }
2577
+ if (peg$silentFails === 0) { peg$fail(peg$e47); }
2345
2578
  }
2346
2579
  if (s1 !== peg$FAILED) {
2347
2580
  s2 = [];
@@ -2353,7 +2586,7 @@ function peg$parse(input, options) {
2353
2586
  s3 = peg$parseexpectGuillemet();
2354
2587
  if (s3 !== peg$FAILED) {
2355
2588
  peg$savedPos = s0;
2356
- s0 = peg$f33(s2);
2589
+ s0 = peg$f38(s2);
2357
2590
  } else {
2358
2591
  peg$currPos = s0;
2359
2592
  s0 = peg$FAILED;
@@ -2365,7 +2598,7 @@ function peg$parse(input, options) {
2365
2598
  peg$silentFails--;
2366
2599
  if (s0 === peg$FAILED) {
2367
2600
  s1 = peg$FAILED;
2368
- if (peg$silentFails === 0) { peg$fail(peg$e44); }
2601
+ if (peg$silentFails === 0) { peg$fail(peg$e46); }
2369
2602
  }
2370
2603
 
2371
2604
  return s0;
@@ -2415,15 +2648,15 @@ function peg$parse(input, options) {
2415
2648
 
2416
2649
  s0 = peg$currPos;
2417
2650
  if (input.charCodeAt(peg$currPos) === 126) {
2418
- s1 = peg$c34;
2651
+ s1 = peg$c35;
2419
2652
  peg$currPos++;
2420
2653
  } else {
2421
2654
  s1 = peg$FAILED;
2422
- if (peg$silentFails === 0) { peg$fail(peg$e46); }
2655
+ if (peg$silentFails === 0) { peg$fail(peg$e48); }
2423
2656
  }
2424
2657
  if (s1 !== peg$FAILED) {
2425
2658
  peg$savedPos = s0;
2426
- s1 = peg$f34();
2659
+ s1 = peg$f39();
2427
2660
  }
2428
2661
  s0 = s1;
2429
2662
 
@@ -2465,7 +2698,7 @@ function peg$parse(input, options) {
2465
2698
  s3 = null;
2466
2699
  }
2467
2700
  peg$savedPos = s0;
2468
- s0 = peg$f35(s1, s2, s3);
2701
+ s0 = peg$f40(s1, s2, s3);
2469
2702
  } else {
2470
2703
  peg$currPos = s0;
2471
2704
  s0 = peg$FAILED;
@@ -2473,7 +2706,7 @@ function peg$parse(input, options) {
2473
2706
  peg$silentFails--;
2474
2707
  if (s0 === peg$FAILED) {
2475
2708
  s1 = peg$FAILED;
2476
- if (peg$silentFails === 0) { peg$fail(peg$e47); }
2709
+ if (peg$silentFails === 0) { peg$fail(peg$e49); }
2477
2710
  }
2478
2711
 
2479
2712
  return s0;
@@ -2496,13 +2729,13 @@ function peg$parse(input, options) {
2496
2729
  }
2497
2730
  if (s1 !== peg$FAILED) {
2498
2731
  peg$savedPos = s0;
2499
- s1 = peg$f36(s1);
2732
+ s1 = peg$f41(s1);
2500
2733
  }
2501
2734
  s0 = s1;
2502
2735
  peg$silentFails--;
2503
2736
  if (s0 === peg$FAILED) {
2504
2737
  s1 = peg$FAILED;
2505
- if (peg$silentFails === 0) { peg$fail(peg$e48); }
2738
+ if (peg$silentFails === 0) { peg$fail(peg$e50); }
2506
2739
  }
2507
2740
 
2508
2741
  return s0;
@@ -2516,26 +2749,26 @@ function peg$parse(input, options) {
2516
2749
  peg$currPos++;
2517
2750
  } else {
2518
2751
  s0 = peg$FAILED;
2519
- if (peg$silentFails === 0) { peg$fail(peg$e49); }
2752
+ if (peg$silentFails === 0) { peg$fail(peg$e51); }
2520
2753
  }
2521
2754
  if (s0 === peg$FAILED) {
2522
2755
  s0 = peg$currPos;
2523
2756
  if (input.charCodeAt(peg$currPos) === 45) {
2524
- s1 = peg$c35;
2757
+ s1 = peg$c36;
2525
2758
  peg$currPos++;
2526
2759
  } else {
2527
2760
  s1 = peg$FAILED;
2528
- if (peg$silentFails === 0) { peg$fail(peg$e50); }
2761
+ if (peg$silentFails === 0) { peg$fail(peg$e52); }
2529
2762
  }
2530
2763
  if (s1 !== peg$FAILED) {
2531
2764
  s2 = peg$currPos;
2532
2765
  peg$silentFails++;
2533
2766
  if (input.charCodeAt(peg$currPos) === 62) {
2534
- s3 = peg$c36;
2767
+ s3 = peg$c37;
2535
2768
  peg$currPos++;
2536
2769
  } else {
2537
2770
  s3 = peg$FAILED;
2538
- if (peg$silentFails === 0) { peg$fail(peg$e51); }
2771
+ if (peg$silentFails === 0) { peg$fail(peg$e53); }
2539
2772
  }
2540
2773
  peg$silentFails--;
2541
2774
  if (s3 === peg$FAILED) {
@@ -2596,7 +2829,7 @@ function peg$parse(input, options) {
2596
2829
  s2 = null;
2597
2830
  }
2598
2831
  peg$savedPos = s0;
2599
- s0 = peg$f37(s1, s2);
2832
+ s0 = peg$f42(s1, s2);
2600
2833
  } else {
2601
2834
  peg$currPos = s0;
2602
2835
  s0 = peg$FAILED;
@@ -2604,7 +2837,7 @@ function peg$parse(input, options) {
2604
2837
  peg$silentFails--;
2605
2838
  if (s0 === peg$FAILED) {
2606
2839
  s1 = peg$FAILED;
2607
- if (peg$silentFails === 0) { peg$fail(peg$e52); }
2840
+ if (peg$silentFails === 0) { peg$fail(peg$e54); }
2608
2841
  }
2609
2842
 
2610
2843
  return s0;
@@ -2645,7 +2878,7 @@ function peg$parse(input, options) {
2645
2878
  s2 = null;
2646
2879
  }
2647
2880
  peg$savedPos = s0;
2648
- s0 = peg$f38(s1);
2881
+ s0 = peg$f43(s1);
2649
2882
  } else {
2650
2883
  peg$currPos = s0;
2651
2884
  s0 = peg$FAILED;
@@ -2662,7 +2895,7 @@ function peg$parse(input, options) {
2662
2895
  peg$currPos++;
2663
2896
  } else {
2664
2897
  s0 = peg$FAILED;
2665
- if (peg$silentFails === 0) { peg$fail(peg$e53); }
2898
+ if (peg$silentFails === 0) { peg$fail(peg$e55); }
2666
2899
  }
2667
2900
 
2668
2901
  return s0;
@@ -2676,13 +2909,13 @@ function peg$parse(input, options) {
2676
2909
  s1 = peg$parsedigits();
2677
2910
  if (s1 !== peg$FAILED) {
2678
2911
  peg$savedPos = s0;
2679
- s1 = peg$f39();
2912
+ s1 = peg$f44();
2680
2913
  }
2681
2914
  s0 = s1;
2682
2915
  peg$silentFails--;
2683
2916
  if (s0 === peg$FAILED) {
2684
2917
  s1 = peg$FAILED;
2685
- if (peg$silentFails === 0) { peg$fail(peg$e54); }
2918
+ if (peg$silentFails === 0) { peg$fail(peg$e56); }
2686
2919
  }
2687
2920
 
2688
2921
  return s0;
@@ -2724,7 +2957,7 @@ function peg$parse(input, options) {
2724
2957
  s2 = null;
2725
2958
  }
2726
2959
  peg$savedPos = s0;
2727
- s0 = peg$f40(s1);
2960
+ s0 = peg$f45(s1);
2728
2961
  } else {
2729
2962
  peg$currPos = s0;
2730
2963
  s0 = peg$FAILED;
@@ -2732,7 +2965,7 @@ function peg$parse(input, options) {
2732
2965
  peg$silentFails--;
2733
2966
  if (s0 === peg$FAILED) {
2734
2967
  s1 = peg$FAILED;
2735
- if (peg$silentFails === 0) { peg$fail(peg$e55); }
2968
+ if (peg$silentFails === 0) { peg$fail(peg$e57); }
2736
2969
  }
2737
2970
 
2738
2971
  return s0;
@@ -2758,12 +2991,12 @@ function peg$parse(input, options) {
2758
2991
  s2 = [];
2759
2992
  s3 = peg$currPos;
2760
2993
  s4 = peg$parse__();
2761
- if (input.substr(peg$currPos, 2) === peg$c37) {
2762
- s5 = peg$c37;
2994
+ if (input.substr(peg$currPos, 2) === peg$c38) {
2995
+ s5 = peg$c38;
2763
2996
  peg$currPos += 2;
2764
2997
  } else {
2765
2998
  s5 = peg$FAILED;
2766
- if (peg$silentFails === 0) { peg$fail(peg$e56); }
2999
+ if (peg$silentFails === 0) { peg$fail(peg$e58); }
2767
3000
  }
2768
3001
  if (s5 !== peg$FAILED) {
2769
3002
  s6 = peg$parse__();
@@ -2782,12 +3015,12 @@ function peg$parse(input, options) {
2782
3015
  s2.push(s3);
2783
3016
  s3 = peg$currPos;
2784
3017
  s4 = peg$parse__();
2785
- if (input.substr(peg$currPos, 2) === peg$c37) {
2786
- s5 = peg$c37;
3018
+ if (input.substr(peg$currPos, 2) === peg$c38) {
3019
+ s5 = peg$c38;
2787
3020
  peg$currPos += 2;
2788
3021
  } else {
2789
3022
  s5 = peg$FAILED;
2790
- if (peg$silentFails === 0) { peg$fail(peg$e56); }
3023
+ if (peg$silentFails === 0) { peg$fail(peg$e58); }
2791
3024
  }
2792
3025
  if (s5 !== peg$FAILED) {
2793
3026
  s6 = peg$parse__();
@@ -2804,7 +3037,7 @@ function peg$parse(input, options) {
2804
3037
  }
2805
3038
  }
2806
3039
  peg$savedPos = s0;
2807
- s0 = peg$f41(s1, s2);
3040
+ s0 = peg$f46(s1, s2);
2808
3041
  } else {
2809
3042
  peg$currPos = s0;
2810
3043
  s0 = peg$FAILED;
@@ -2822,12 +3055,12 @@ function peg$parse(input, options) {
2822
3055
  s2 = [];
2823
3056
  s3 = peg$currPos;
2824
3057
  s4 = peg$parse__();
2825
- if (input.substr(peg$currPos, 2) === peg$c38) {
2826
- s5 = peg$c38;
3058
+ if (input.substr(peg$currPos, 2) === peg$c39) {
3059
+ s5 = peg$c39;
2827
3060
  peg$currPos += 2;
2828
3061
  } else {
2829
3062
  s5 = peg$FAILED;
2830
- if (peg$silentFails === 0) { peg$fail(peg$e57); }
3063
+ if (peg$silentFails === 0) { peg$fail(peg$e59); }
2831
3064
  }
2832
3065
  if (s5 !== peg$FAILED) {
2833
3066
  s6 = peg$parse__();
@@ -2846,12 +3079,12 @@ function peg$parse(input, options) {
2846
3079
  s2.push(s3);
2847
3080
  s3 = peg$currPos;
2848
3081
  s4 = peg$parse__();
2849
- if (input.substr(peg$currPos, 2) === peg$c38) {
2850
- s5 = peg$c38;
3082
+ if (input.substr(peg$currPos, 2) === peg$c39) {
3083
+ s5 = peg$c39;
2851
3084
  peg$currPos += 2;
2852
3085
  } else {
2853
3086
  s5 = peg$FAILED;
2854
- if (peg$silentFails === 0) { peg$fail(peg$e57); }
3087
+ if (peg$silentFails === 0) { peg$fail(peg$e59); }
2855
3088
  }
2856
3089
  if (s5 !== peg$FAILED) {
2857
3090
  s6 = peg$parse__();
@@ -2868,7 +3101,7 @@ function peg$parse(input, options) {
2868
3101
  }
2869
3102
  }
2870
3103
  peg$savedPos = s0;
2871
- s0 = peg$f42(s1, s2);
3104
+ s0 = peg$f47(s1, s2);
2872
3105
  } else {
2873
3106
  peg$currPos = s0;
2874
3107
  s0 = peg$FAILED;
@@ -2881,24 +3114,24 @@ function peg$parse(input, options) {
2881
3114
  var s0, s1, s2, s3, s4, s5;
2882
3115
 
2883
3116
  s0 = peg$currPos;
2884
- if (input.substr(peg$currPos, 2) === peg$c39) {
2885
- s1 = peg$c39;
3117
+ if (input.substr(peg$currPos, 2) === peg$c40) {
3118
+ s1 = peg$c40;
2886
3119
  peg$currPos += 2;
2887
3120
  } else {
2888
3121
  s1 = peg$FAILED;
2889
- if (peg$silentFails === 0) { peg$fail(peg$e58); }
3122
+ if (peg$silentFails === 0) { peg$fail(peg$e60); }
2890
3123
  }
2891
3124
  if (s1 !== peg$FAILED) {
2892
3125
  s2 = [];
2893
3126
  s3 = peg$currPos;
2894
3127
  s4 = peg$currPos;
2895
3128
  peg$silentFails++;
2896
- if (input.substr(peg$currPos, 2) === peg$c40) {
2897
- s5 = peg$c40;
3129
+ if (input.substr(peg$currPos, 2) === peg$c41) {
3130
+ s5 = peg$c41;
2898
3131
  peg$currPos += 2;
2899
3132
  } else {
2900
3133
  s5 = peg$FAILED;
2901
- if (peg$silentFails === 0) { peg$fail(peg$e59); }
3134
+ if (peg$silentFails === 0) { peg$fail(peg$e61); }
2902
3135
  }
2903
3136
  peg$silentFails--;
2904
3137
  if (s5 === peg$FAILED) {
@@ -2931,12 +3164,12 @@ function peg$parse(input, options) {
2931
3164
  s3 = peg$currPos;
2932
3165
  s4 = peg$currPos;
2933
3166
  peg$silentFails++;
2934
- if (input.substr(peg$currPos, 2) === peg$c40) {
2935
- s5 = peg$c40;
3167
+ if (input.substr(peg$currPos, 2) === peg$c41) {
3168
+ s5 = peg$c41;
2936
3169
  peg$currPos += 2;
2937
3170
  } else {
2938
3171
  s5 = peg$FAILED;
2939
- if (peg$silentFails === 0) { peg$fail(peg$e59); }
3172
+ if (peg$silentFails === 0) { peg$fail(peg$e61); }
2940
3173
  }
2941
3174
  peg$silentFails--;
2942
3175
  if (s5 === peg$FAILED) {
@@ -2965,16 +3198,16 @@ function peg$parse(input, options) {
2965
3198
  s3 = peg$FAILED;
2966
3199
  }
2967
3200
  }
2968
- if (input.substr(peg$currPos, 2) === peg$c40) {
2969
- s3 = peg$c40;
3201
+ if (input.substr(peg$currPos, 2) === peg$c41) {
3202
+ s3 = peg$c41;
2970
3203
  peg$currPos += 2;
2971
3204
  } else {
2972
3205
  s3 = peg$FAILED;
2973
- if (peg$silentFails === 0) { peg$fail(peg$e59); }
3206
+ if (peg$silentFails === 0) { peg$fail(peg$e61); }
2974
3207
  }
2975
3208
  if (s3 !== peg$FAILED) {
2976
3209
  peg$savedPos = s0;
2977
- s0 = peg$f43();
3210
+ s0 = peg$f48();
2978
3211
  } else {
2979
3212
  peg$currPos = s0;
2980
3213
  s0 = peg$FAILED;
@@ -3050,7 +3283,7 @@ function peg$parse(input, options) {
3050
3283
  }
3051
3284
  }
3052
3285
  peg$savedPos = s0;
3053
- s0 = peg$f44(s1, s2);
3286
+ s0 = peg$f49(s1, s2);
3054
3287
  } else {
3055
3288
  peg$currPos = s0;
3056
3289
  s0 = peg$FAILED;
@@ -3067,7 +3300,7 @@ function peg$parse(input, options) {
3067
3300
  peg$currPos++;
3068
3301
  } else {
3069
3302
  s0 = peg$FAILED;
3070
- if (peg$silentFails === 0) { peg$fail(peg$e60); }
3303
+ if (peg$silentFails === 0) { peg$fail(peg$e62); }
3071
3304
  }
3072
3305
 
3073
3306
  return s0;
@@ -3083,7 +3316,7 @@ function peg$parse(input, options) {
3083
3316
  peg$currPos++;
3084
3317
  } else {
3085
3318
  s2 = peg$FAILED;
3086
- if (peg$silentFails === 0) { peg$fail(peg$e61); }
3319
+ if (peg$silentFails === 0) { peg$fail(peg$e63); }
3087
3320
  }
3088
3321
  if (s2 !== peg$FAILED) {
3089
3322
  while (s2 !== peg$FAILED) {
@@ -3093,7 +3326,7 @@ function peg$parse(input, options) {
3093
3326
  peg$currPos++;
3094
3327
  } else {
3095
3328
  s2 = peg$FAILED;
3096
- if (peg$silentFails === 0) { peg$fail(peg$e61); }
3329
+ if (peg$silentFails === 0) { peg$fail(peg$e63); }
3097
3330
  }
3098
3331
  }
3099
3332
  } else {
@@ -3109,7 +3342,7 @@ function peg$parse(input, options) {
3109
3342
  }
3110
3343
  if (s2 !== peg$FAILED) {
3111
3344
  peg$savedPos = s0;
3112
- s0 = peg$f45(s1);
3345
+ s0 = peg$f50(s1);
3113
3346
  } else {
3114
3347
  peg$currPos = s0;
3115
3348
  s0 = peg$FAILED;
@@ -3126,27 +3359,27 @@ function peg$parse(input, options) {
3126
3359
  var s0;
3127
3360
 
3128
3361
  if (input.charCodeAt(peg$currPos) === 10) {
3129
- s0 = peg$c41;
3362
+ s0 = peg$c42;
3130
3363
  peg$currPos++;
3131
3364
  } else {
3132
3365
  s0 = peg$FAILED;
3133
- if (peg$silentFails === 0) { peg$fail(peg$e62); }
3366
+ if (peg$silentFails === 0) { peg$fail(peg$e64); }
3134
3367
  }
3135
3368
  if (s0 === peg$FAILED) {
3136
- if (input.substr(peg$currPos, 2) === peg$c42) {
3137
- s0 = peg$c42;
3369
+ if (input.substr(peg$currPos, 2) === peg$c43) {
3370
+ s0 = peg$c43;
3138
3371
  peg$currPos += 2;
3139
3372
  } else {
3140
3373
  s0 = peg$FAILED;
3141
- if (peg$silentFails === 0) { peg$fail(peg$e63); }
3374
+ if (peg$silentFails === 0) { peg$fail(peg$e65); }
3142
3375
  }
3143
3376
  if (s0 === peg$FAILED) {
3144
3377
  if (input.charCodeAt(peg$currPos) === 13) {
3145
- s0 = peg$c43;
3378
+ s0 = peg$c44;
3146
3379
  peg$currPos++;
3147
3380
  } else {
3148
3381
  s0 = peg$FAILED;
3149
- if (peg$silentFails === 0) { peg$fail(peg$e64); }
3382
+ if (peg$silentFails === 0) { peg$fail(peg$e66); }
3150
3383
  }
3151
3384
  }
3152
3385
  }
@@ -3165,7 +3398,7 @@ function peg$parse(input, options) {
3165
3398
  peg$silentFails--;
3166
3399
  if (s0 === peg$FAILED) {
3167
3400
  s1 = peg$FAILED;
3168
- if (peg$silentFails === 0) { peg$fail(peg$e65); }
3401
+ if (peg$silentFails === 0) { peg$fail(peg$e67); }
3169
3402
  }
3170
3403
 
3171
3404
  return s0;
@@ -3180,12 +3413,12 @@ function peg$parse(input, options) {
3180
3413
  s2 = [];
3181
3414
  s3 = peg$currPos;
3182
3415
  s4 = peg$parse__();
3183
- if (input.substr(peg$currPos, 2) === peg$c44) {
3184
- s5 = peg$c44;
3416
+ if (input.substr(peg$currPos, 2) === peg$c45) {
3417
+ s5 = peg$c45;
3185
3418
  peg$currPos += 2;
3186
3419
  } else {
3187
3420
  s5 = peg$FAILED;
3188
- if (peg$silentFails === 0) { peg$fail(peg$e66); }
3421
+ if (peg$silentFails === 0) { peg$fail(peg$e68); }
3189
3422
  }
3190
3423
  if (s5 !== peg$FAILED) {
3191
3424
  s6 = peg$parse__();
@@ -3204,12 +3437,12 @@ function peg$parse(input, options) {
3204
3437
  s2.push(s3);
3205
3438
  s3 = peg$currPos;
3206
3439
  s4 = peg$parse__();
3207
- if (input.substr(peg$currPos, 2) === peg$c44) {
3208
- s5 = peg$c44;
3440
+ if (input.substr(peg$currPos, 2) === peg$c45) {
3441
+ s5 = peg$c45;
3209
3442
  peg$currPos += 2;
3210
3443
  } else {
3211
3444
  s5 = peg$FAILED;
3212
- if (peg$silentFails === 0) { peg$fail(peg$e66); }
3445
+ if (peg$silentFails === 0) { peg$fail(peg$e68); }
3213
3446
  }
3214
3447
  if (s5 !== peg$FAILED) {
3215
3448
  s6 = peg$parse__();
@@ -3226,7 +3459,7 @@ function peg$parse(input, options) {
3226
3459
  }
3227
3460
  }
3228
3461
  peg$savedPos = s0;
3229
- s0 = peg$f46(s1, s2);
3462
+ s0 = peg$f51(s1, s2);
3230
3463
  } else {
3231
3464
  peg$currPos = s0;
3232
3465
  s0 = peg$FAILED;
@@ -3241,11 +3474,11 @@ function peg$parse(input, options) {
3241
3474
  peg$silentFails++;
3242
3475
  s0 = peg$currPos;
3243
3476
  if (input.charCodeAt(peg$currPos) === 123) {
3244
- s1 = peg$c45;
3477
+ s1 = peg$c46;
3245
3478
  peg$currPos++;
3246
3479
  } else {
3247
3480
  s1 = peg$FAILED;
3248
- if (peg$silentFails === 0) { peg$fail(peg$e68); }
3481
+ if (peg$silentFails === 0) { peg$fail(peg$e70); }
3249
3482
  }
3250
3483
  if (s1 !== peg$FAILED) {
3251
3484
  s2 = peg$parse__();
@@ -3257,7 +3490,7 @@ function peg$parse(input, options) {
3257
3490
  s5 = peg$parseexpectClosingBrace();
3258
3491
  if (s5 !== peg$FAILED) {
3259
3492
  peg$savedPos = s0;
3260
- s0 = peg$f47(s3);
3493
+ s0 = peg$f52(s3);
3261
3494
  } else {
3262
3495
  peg$currPos = s0;
3263
3496
  s0 = peg$FAILED;
@@ -3269,7 +3502,7 @@ function peg$parse(input, options) {
3269
3502
  peg$silentFails--;
3270
3503
  if (s0 === peg$FAILED) {
3271
3504
  s1 = peg$FAILED;
3272
- if (peg$silentFails === 0) { peg$fail(peg$e67); }
3505
+ if (peg$silentFails === 0) { peg$fail(peg$e69); }
3273
3506
  }
3274
3507
 
3275
3508
  return s0;
@@ -3310,7 +3543,7 @@ function peg$parse(input, options) {
3310
3543
  s2 = null;
3311
3544
  }
3312
3545
  peg$savedPos = s0;
3313
- s0 = peg$f48(s1);
3546
+ s0 = peg$f53(s1);
3314
3547
  } else {
3315
3548
  peg$currPos = s0;
3316
3549
  s0 = peg$FAILED;
@@ -3345,18 +3578,18 @@ function peg$parse(input, options) {
3345
3578
  if (s1 !== peg$FAILED) {
3346
3579
  s2 = peg$parse__();
3347
3580
  if (input.charCodeAt(peg$currPos) === 61) {
3348
- s3 = peg$c46;
3581
+ s3 = peg$c47;
3349
3582
  peg$currPos++;
3350
3583
  } else {
3351
3584
  s3 = peg$FAILED;
3352
- if (peg$silentFails === 0) { peg$fail(peg$e70); }
3585
+ if (peg$silentFails === 0) { peg$fail(peg$e72); }
3353
3586
  }
3354
3587
  if (s3 !== peg$FAILED) {
3355
3588
  s4 = peg$parse__();
3356
3589
  s5 = peg$parseexpectPipelineExpression();
3357
3590
  if (s5 !== peg$FAILED) {
3358
3591
  peg$savedPos = s0;
3359
- s0 = peg$f49(s1, s5);
3592
+ s0 = peg$f54(s1, s5);
3360
3593
  } else {
3361
3594
  peg$currPos = s0;
3362
3595
  s0 = peg$FAILED;
@@ -3372,7 +3605,7 @@ function peg$parse(input, options) {
3372
3605
  peg$silentFails--;
3373
3606
  if (s0 === peg$FAILED) {
3374
3607
  s1 = peg$FAILED;
3375
- if (peg$silentFails === 0) { peg$fail(peg$e69); }
3608
+ if (peg$silentFails === 0) { peg$fail(peg$e71); }
3376
3609
  }
3377
3610
 
3378
3611
  return s0;
@@ -3417,7 +3650,7 @@ function peg$parse(input, options) {
3417
3650
  }
3418
3651
  if (s1 !== peg$FAILED) {
3419
3652
  peg$savedPos = s0;
3420
- s1 = peg$f50(s1);
3653
+ s1 = peg$f55(s1);
3421
3654
  }
3422
3655
  s0 = s1;
3423
3656
 
@@ -3435,7 +3668,7 @@ function peg$parse(input, options) {
3435
3668
  peg$silentFails--;
3436
3669
  if (s0 === peg$FAILED) {
3437
3670
  s1 = peg$FAILED;
3438
- if (peg$silentFails === 0) { peg$fail(peg$e71); }
3671
+ if (peg$silentFails === 0) { peg$fail(peg$e73); }
3439
3672
  }
3440
3673
 
3441
3674
  return s0;
@@ -3461,7 +3694,7 @@ function peg$parse(input, options) {
3461
3694
  s5 = peg$parseexpectPipelineExpression();
3462
3695
  if (s5 !== peg$FAILED) {
3463
3696
  peg$savedPos = s0;
3464
- s0 = peg$f51(s1, s5);
3697
+ s0 = peg$f56(s1, s5);
3465
3698
  } else {
3466
3699
  peg$currPos = s0;
3467
3700
  s0 = peg$FAILED;
@@ -3477,7 +3710,7 @@ function peg$parse(input, options) {
3477
3710
  peg$silentFails--;
3478
3711
  if (s0 === peg$FAILED) {
3479
3712
  s1 = peg$FAILED;
3480
- if (peg$silentFails === 0) { peg$fail(peg$e72); }
3713
+ if (peg$silentFails === 0) { peg$fail(peg$e74); }
3481
3714
  }
3482
3715
 
3483
3716
  return s0;
@@ -3491,13 +3724,13 @@ function peg$parse(input, options) {
3491
3724
  s1 = peg$parseobjectPublicKey();
3492
3725
  if (s1 !== peg$FAILED) {
3493
3726
  peg$savedPos = s0;
3494
- s1 = peg$f52(s1);
3727
+ s1 = peg$f57(s1);
3495
3728
  }
3496
3729
  s0 = s1;
3497
3730
  peg$silentFails--;
3498
3731
  if (s0 === peg$FAILED) {
3499
3732
  s1 = peg$FAILED;
3500
- if (peg$silentFails === 0) { peg$fail(peg$e73); }
3733
+ if (peg$silentFails === 0) { peg$fail(peg$e75); }
3501
3734
  }
3502
3735
 
3503
3736
  return s0;
@@ -3510,17 +3743,17 @@ function peg$parse(input, options) {
3510
3743
  s1 = peg$parseidentifier();
3511
3744
  if (s1 !== peg$FAILED) {
3512
3745
  if (input.charCodeAt(peg$currPos) === 47) {
3513
- s2 = peg$c47;
3746
+ s2 = peg$c48;
3514
3747
  peg$currPos++;
3515
3748
  } else {
3516
3749
  s2 = peg$FAILED;
3517
- if (peg$silentFails === 0) { peg$fail(peg$e74); }
3750
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
3518
3751
  }
3519
3752
  if (s2 === peg$FAILED) {
3520
3753
  s2 = null;
3521
3754
  }
3522
3755
  peg$savedPos = s0;
3523
- s0 = peg$f53(s1, s2);
3756
+ s0 = peg$f58(s1, s2);
3524
3757
  } else {
3525
3758
  peg$currPos = s0;
3526
3759
  s0 = peg$FAILED;
@@ -3530,7 +3763,7 @@ function peg$parse(input, options) {
3530
3763
  s1 = peg$parsestringLiteral();
3531
3764
  if (s1 !== peg$FAILED) {
3532
3765
  peg$savedPos = s0;
3533
- s1 = peg$f54(s1);
3766
+ s1 = peg$f59(s1);
3534
3767
  }
3535
3768
  s0 = s1;
3536
3769
  }
@@ -3545,7 +3778,7 @@ function peg$parse(input, options) {
3545
3778
  s1 = peg$parseidentifier();
3546
3779
  if (s1 !== peg$FAILED) {
3547
3780
  peg$savedPos = s0;
3548
- s1 = peg$f55(s1);
3781
+ s1 = peg$f60(s1);
3549
3782
  }
3550
3783
  s0 = s1;
3551
3784
 
@@ -3587,7 +3820,7 @@ function peg$parse(input, options) {
3587
3820
  s2 = null;
3588
3821
  }
3589
3822
  peg$savedPos = s0;
3590
- s0 = peg$f56(s1);
3823
+ s0 = peg$f61(s1);
3591
3824
  } else {
3592
3825
  peg$currPos = s0;
3593
3826
  s0 = peg$FAILED;
@@ -3603,7 +3836,7 @@ function peg$parse(input, options) {
3603
3836
  s1 = peg$parseidentifier();
3604
3837
  if (s1 !== peg$FAILED) {
3605
3838
  peg$savedPos = s0;
3606
- s1 = peg$f57(s1);
3839
+ s1 = peg$f62(s1);
3607
3840
  }
3608
3841
  s0 = s1;
3609
3842
 
@@ -3632,7 +3865,7 @@ function peg$parse(input, options) {
3632
3865
  s5 = peg$parseexpectClosingParenthesis();
3633
3866
  if (s5 !== peg$FAILED) {
3634
3867
  peg$savedPos = s0;
3635
- s0 = peg$f58(s3);
3868
+ s0 = peg$f63(s3);
3636
3869
  } else {
3637
3870
  peg$currPos = s0;
3638
3871
  s0 = peg$FAILED;
@@ -3644,7 +3877,7 @@ function peg$parse(input, options) {
3644
3877
  peg$silentFails--;
3645
3878
  if (s0 === peg$FAILED) {
3646
3879
  s1 = peg$FAILED;
3647
- if (peg$silentFails === 0) { peg$fail(peg$e75); }
3880
+ if (peg$silentFails === 0) { peg$fail(peg$e77); }
3648
3881
  }
3649
3882
 
3650
3883
  return s0;
@@ -3670,13 +3903,13 @@ function peg$parse(input, options) {
3670
3903
  }
3671
3904
  if (s1 !== peg$FAILED) {
3672
3905
  peg$savedPos = s0;
3673
- s1 = peg$f59(s1);
3906
+ s1 = peg$f64(s1);
3674
3907
  }
3675
3908
  s0 = s1;
3676
3909
  peg$silentFails--;
3677
3910
  if (s0 === peg$FAILED) {
3678
3911
  s1 = peg$FAILED;
3679
- if (peg$silentFails === 0) { peg$fail(peg$e76); }
3912
+ if (peg$silentFails === 0) { peg$fail(peg$e78); }
3680
3913
  }
3681
3914
 
3682
3915
  return s0;
@@ -3689,7 +3922,7 @@ function peg$parse(input, options) {
3689
3922
  s1 = peg$parsepath();
3690
3923
  if (s1 !== peg$FAILED) {
3691
3924
  peg$savedPos = s0;
3692
- s1 = peg$f60(s1);
3925
+ s1 = peg$f65(s1);
3693
3926
  }
3694
3927
  s0 = s1;
3695
3928
 
@@ -3716,7 +3949,7 @@ function peg$parse(input, options) {
3716
3949
  s2 = null;
3717
3950
  }
3718
3951
  peg$savedPos = s0;
3719
- s0 = peg$f61(s1, s2);
3952
+ s0 = peg$f66(s1, s2);
3720
3953
  } else {
3721
3954
  peg$currPos = s0;
3722
3955
  s0 = peg$FAILED;
@@ -3730,11 +3963,11 @@ function peg$parse(input, options) {
3730
3963
 
3731
3964
  s0 = peg$currPos;
3732
3965
  if (input.charCodeAt(peg$currPos) === 47) {
3733
- s1 = peg$c47;
3966
+ s1 = peg$c48;
3734
3967
  peg$currPos++;
3735
3968
  } else {
3736
3969
  s1 = peg$FAILED;
3737
- if (peg$silentFails === 0) { peg$fail(peg$e74); }
3970
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
3738
3971
  }
3739
3972
  if (s1 !== peg$FAILED) {
3740
3973
  s2 = peg$parsepathKey();
@@ -3758,7 +3991,7 @@ function peg$parse(input, options) {
3758
3991
  peg$currPos++;
3759
3992
  } else {
3760
3993
  s0 = peg$FAILED;
3761
- if (peg$silentFails === 0) { peg$fail(peg$e77); }
3994
+ if (peg$silentFails === 0) { peg$fail(peg$e79); }
3762
3995
  }
3763
3996
  if (s0 === peg$FAILED) {
3764
3997
  s0 = peg$parseescapedChar();
@@ -3810,7 +4043,7 @@ function peg$parse(input, options) {
3810
4043
  }
3811
4044
  }
3812
4045
  peg$savedPos = s0;
3813
- s0 = peg$f62(s1, s2);
4046
+ s0 = peg$f67(s1, s2);
3814
4047
  } else {
3815
4048
  peg$currPos = s0;
3816
4049
  s0 = peg$FAILED;
@@ -3861,7 +4094,7 @@ function peg$parse(input, options) {
3861
4094
  peg$silentFails--;
3862
4095
  if (s0 === peg$FAILED) {
3863
4096
  s1 = peg$FAILED;
3864
- if (peg$silentFails === 0) { peg$fail(peg$e78); }
4097
+ if (peg$silentFails === 0) { peg$fail(peg$e80); }
3865
4098
  }
3866
4099
 
3867
4100
  return s0;
@@ -3873,12 +4106,12 @@ function peg$parse(input, options) {
3873
4106
  s0 = peg$currPos;
3874
4107
  s1 = peg$parsenamespace();
3875
4108
  if (s1 !== peg$FAILED) {
3876
- if (input.substr(peg$currPos, 2) === peg$c48) {
3877
- s2 = peg$c48;
4109
+ if (input.substr(peg$currPos, 2) === peg$c49) {
4110
+ s2 = peg$c49;
3878
4111
  peg$currPos += 2;
3879
4112
  } else {
3880
4113
  s2 = peg$FAILED;
3881
- if (peg$silentFails === 0) { peg$fail(peg$e79); }
4114
+ if (peg$silentFails === 0) { peg$fail(peg$e81); }
3882
4115
  }
3883
4116
  if (s2 !== peg$FAILED) {
3884
4117
  s3 = peg$parsehost();
@@ -3891,7 +4124,7 @@ function peg$parse(input, options) {
3891
4124
  s4 = null;
3892
4125
  }
3893
4126
  peg$savedPos = s0;
3894
- s0 = peg$f63(s1, s3, s4);
4127
+ s0 = peg$f68(s1, s3, s4);
3895
4128
  } else {
3896
4129
  peg$currPos = s0;
3897
4130
  s0 = peg$FAILED;
@@ -3920,7 +4153,7 @@ function peg$parse(input, options) {
3920
4153
  s2 = peg$parsescopeReference();
3921
4154
  if (s2 !== peg$FAILED) {
3922
4155
  peg$savedPos = s0;
3923
- s0 = peg$f64(s1, s2);
4156
+ s0 = peg$f69(s1, s2);
3924
4157
  } else {
3925
4158
  peg$currPos = s0;
3926
4159
  s0 = peg$FAILED;
@@ -3996,7 +4229,7 @@ function peg$parse(input, options) {
3996
4229
  }
3997
4230
  }
3998
4231
  peg$savedPos = s0;
3999
- s0 = peg$f65(s1, s2);
4232
+ s0 = peg$f70(s1, s2);
4000
4233
  } else {
4001
4234
  peg$currPos = s0;
4002
4235
  s0 = peg$FAILED;
@@ -4008,36 +4241,36 @@ function peg$parse(input, options) {
4008
4241
  function peg$parserelationalOperator() {
4009
4242
  var s0;
4010
4243
 
4011
- if (input.substr(peg$currPos, 2) === peg$c49) {
4012
- s0 = peg$c49;
4244
+ if (input.substr(peg$currPos, 2) === peg$c50) {
4245
+ s0 = peg$c50;
4013
4246
  peg$currPos += 2;
4014
4247
  } else {
4015
4248
  s0 = peg$FAILED;
4016
- if (peg$silentFails === 0) { peg$fail(peg$e80); }
4249
+ if (peg$silentFails === 0) { peg$fail(peg$e82); }
4017
4250
  }
4018
4251
  if (s0 === peg$FAILED) {
4019
4252
  if (input.charCodeAt(peg$currPos) === 60) {
4020
- s0 = peg$c50;
4253
+ s0 = peg$c51;
4021
4254
  peg$currPos++;
4022
4255
  } else {
4023
4256
  s0 = peg$FAILED;
4024
- if (peg$silentFails === 0) { peg$fail(peg$e81); }
4257
+ if (peg$silentFails === 0) { peg$fail(peg$e83); }
4025
4258
  }
4026
4259
  if (s0 === peg$FAILED) {
4027
- if (input.substr(peg$currPos, 2) === peg$c51) {
4028
- s0 = peg$c51;
4260
+ if (input.substr(peg$currPos, 2) === peg$c52) {
4261
+ s0 = peg$c52;
4029
4262
  peg$currPos += 2;
4030
4263
  } else {
4031
4264
  s0 = peg$FAILED;
4032
- if (peg$silentFails === 0) { peg$fail(peg$e82); }
4265
+ if (peg$silentFails === 0) { peg$fail(peg$e84); }
4033
4266
  }
4034
4267
  if (s0 === peg$FAILED) {
4035
4268
  if (input.charCodeAt(peg$currPos) === 62) {
4036
- s0 = peg$c36;
4269
+ s0 = peg$c37;
4037
4270
  peg$currPos++;
4038
4271
  } else {
4039
4272
  s0 = peg$FAILED;
4040
- if (peg$silentFails === 0) { peg$fail(peg$e51); }
4273
+ if (peg$silentFails === 0) { peg$fail(peg$e53); }
4041
4274
  }
4042
4275
  }
4043
4276
  }
@@ -4051,17 +4284,17 @@ function peg$parse(input, options) {
4051
4284
 
4052
4285
  s0 = peg$currPos;
4053
4286
  if (input.charCodeAt(peg$currPos) === 47) {
4054
- s1 = peg$c47;
4287
+ s1 = peg$c48;
4055
4288
  peg$currPos++;
4056
4289
  } else {
4057
4290
  s1 = peg$FAILED;
4058
- if (peg$silentFails === 0) { peg$fail(peg$e74); }
4291
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
4059
4292
  }
4060
4293
  if (s1 !== peg$FAILED) {
4061
4294
  s2 = peg$parsepathKey();
4062
4295
  if (s2 !== peg$FAILED) {
4063
4296
  peg$savedPos = s0;
4064
- s0 = peg$f66(s2);
4297
+ s0 = peg$f71(s2);
4065
4298
  } else {
4066
4299
  peg$currPos = s0;
4067
4300
  s0 = peg$FAILED;
@@ -4073,21 +4306,21 @@ function peg$parse(input, options) {
4073
4306
  if (s0 === peg$FAILED) {
4074
4307
  s0 = peg$currPos;
4075
4308
  if (input.charCodeAt(peg$currPos) === 47) {
4076
- s1 = peg$c47;
4309
+ s1 = peg$c48;
4077
4310
  peg$currPos++;
4078
4311
  } else {
4079
4312
  s1 = peg$FAILED;
4080
- if (peg$silentFails === 0) { peg$fail(peg$e74); }
4313
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
4081
4314
  }
4082
4315
  if (s1 !== peg$FAILED) {
4083
4316
  s2 = peg$currPos;
4084
4317
  peg$silentFails++;
4085
4318
  if (input.charCodeAt(peg$currPos) === 47) {
4086
- s3 = peg$c47;
4319
+ s3 = peg$c48;
4087
4320
  peg$currPos++;
4088
4321
  } else {
4089
4322
  s3 = peg$FAILED;
4090
- if (peg$silentFails === 0) { peg$fail(peg$e74); }
4323
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
4091
4324
  }
4092
4325
  peg$silentFails--;
4093
4326
  if (s3 === peg$FAILED) {
@@ -4098,7 +4331,7 @@ function peg$parse(input, options) {
4098
4331
  }
4099
4332
  if (s2 !== peg$FAILED) {
4100
4333
  peg$savedPos = s0;
4101
- s0 = peg$f67();
4334
+ s0 = peg$f72();
4102
4335
  } else {
4103
4336
  peg$currPos = s0;
4104
4337
  s0 = peg$FAILED;
@@ -4124,7 +4357,7 @@ function peg$parse(input, options) {
4124
4357
  s2 = null;
4125
4358
  }
4126
4359
  peg$savedPos = s0;
4127
- s0 = peg$f68(s1, s2);
4360
+ s0 = peg$f73(s1, s2);
4128
4361
  } else {
4129
4362
  peg$currPos = s0;
4130
4363
  s0 = peg$FAILED;
@@ -4132,7 +4365,7 @@ function peg$parse(input, options) {
4132
4365
  peg$silentFails--;
4133
4366
  if (s0 === peg$FAILED) {
4134
4367
  s1 = peg$FAILED;
4135
- if (peg$silentFails === 0) { peg$fail(peg$e83); }
4368
+ if (peg$silentFails === 0) { peg$fail(peg$e85); }
4136
4369
  }
4137
4370
 
4138
4371
  return s0;
@@ -4169,12 +4402,12 @@ function peg$parse(input, options) {
4169
4402
  var s0, s1, s2, s3;
4170
4403
 
4171
4404
  s0 = peg$currPos;
4172
- if (input.substr(peg$currPos, 2) === peg$c52) {
4173
- s1 = peg$c52;
4405
+ if (input.substr(peg$currPos, 2) === peg$c53) {
4406
+ s1 = peg$c53;
4174
4407
  peg$currPos += 2;
4175
4408
  } else {
4176
4409
  s1 = peg$FAILED;
4177
- if (peg$silentFails === 0) { peg$fail(peg$e84); }
4410
+ if (peg$silentFails === 0) { peg$fail(peg$e86); }
4178
4411
  }
4179
4412
  if (s1 !== peg$FAILED) {
4180
4413
  s2 = [];
@@ -4183,7 +4416,7 @@ function peg$parse(input, options) {
4183
4416
  peg$currPos++;
4184
4417
  } else {
4185
4418
  s3 = peg$FAILED;
4186
- if (peg$silentFails === 0) { peg$fail(peg$e85); }
4419
+ if (peg$silentFails === 0) { peg$fail(peg$e87); }
4187
4420
  }
4188
4421
  while (s3 !== peg$FAILED) {
4189
4422
  s2.push(s3);
@@ -4192,11 +4425,11 @@ function peg$parse(input, options) {
4192
4425
  peg$currPos++;
4193
4426
  } else {
4194
4427
  s3 = peg$FAILED;
4195
- if (peg$silentFails === 0) { peg$fail(peg$e85); }
4428
+ if (peg$silentFails === 0) { peg$fail(peg$e87); }
4196
4429
  }
4197
4430
  }
4198
4431
  peg$savedPos = s0;
4199
- s0 = peg$f69();
4432
+ s0 = peg$f74();
4200
4433
  } else {
4201
4434
  peg$currPos = s0;
4202
4435
  s0 = peg$FAILED;
@@ -4248,7 +4481,7 @@ function peg$parse(input, options) {
4248
4481
  }
4249
4482
  }
4250
4483
  peg$savedPos = s0;
4251
- s0 = peg$f70(s1, s2);
4484
+ s0 = peg$f75(s1, s2);
4252
4485
  } else {
4253
4486
  peg$currPos = s0;
4254
4487
  s0 = peg$FAILED;
@@ -4260,28 +4493,28 @@ function peg$parse(input, options) {
4260
4493
  function peg$parseshiftOperator() {
4261
4494
  var s0;
4262
4495
 
4263
- if (input.substr(peg$currPos, 2) === peg$c53) {
4264
- s0 = peg$c53;
4496
+ if (input.substr(peg$currPos, 2) === peg$c54) {
4497
+ s0 = peg$c54;
4265
4498
  peg$currPos += 2;
4266
4499
  } else {
4267
4500
  s0 = peg$FAILED;
4268
- if (peg$silentFails === 0) { peg$fail(peg$e86); }
4501
+ if (peg$silentFails === 0) { peg$fail(peg$e88); }
4269
4502
  }
4270
4503
  if (s0 === peg$FAILED) {
4271
- if (input.substr(peg$currPos, 3) === peg$c54) {
4272
- s0 = peg$c54;
4504
+ if (input.substr(peg$currPos, 3) === peg$c55) {
4505
+ s0 = peg$c55;
4273
4506
  peg$currPos += 3;
4274
4507
  } else {
4275
4508
  s0 = peg$FAILED;
4276
- if (peg$silentFails === 0) { peg$fail(peg$e87); }
4509
+ if (peg$silentFails === 0) { peg$fail(peg$e89); }
4277
4510
  }
4278
4511
  if (s0 === peg$FAILED) {
4279
- if (input.substr(peg$currPos, 2) === peg$c55) {
4280
- s0 = peg$c55;
4512
+ if (input.substr(peg$currPos, 2) === peg$c56) {
4513
+ s0 = peg$c56;
4281
4514
  peg$currPos += 2;
4282
4515
  } else {
4283
4516
  s0 = peg$FAILED;
4284
- if (peg$silentFails === 0) { peg$fail(peg$e88); }
4517
+ if (peg$silentFails === 0) { peg$fail(peg$e90); }
4285
4518
  }
4286
4519
  }
4287
4520
  }
@@ -4295,21 +4528,21 @@ function peg$parse(input, options) {
4295
4528
  peg$silentFails++;
4296
4529
  s0 = peg$currPos;
4297
4530
  if (input.charCodeAt(peg$currPos) === 61) {
4298
- s1 = peg$c46;
4531
+ s1 = peg$c47;
4299
4532
  peg$currPos++;
4300
4533
  } else {
4301
4534
  s1 = peg$FAILED;
4302
- if (peg$silentFails === 0) { peg$fail(peg$e70); }
4535
+ if (peg$silentFails === 0) { peg$fail(peg$e72); }
4303
4536
  }
4304
4537
  if (s1 !== peg$FAILED) {
4305
4538
  s2 = peg$currPos;
4306
4539
  peg$silentFails++;
4307
4540
  if (input.charCodeAt(peg$currPos) === 61) {
4308
- s3 = peg$c46;
4541
+ s3 = peg$c47;
4309
4542
  peg$currPos++;
4310
4543
  } else {
4311
4544
  s3 = peg$FAILED;
4312
- if (peg$silentFails === 0) { peg$fail(peg$e70); }
4545
+ if (peg$silentFails === 0) { peg$fail(peg$e72); }
4313
4546
  }
4314
4547
  peg$silentFails--;
4315
4548
  if (s3 === peg$FAILED) {
@@ -4323,7 +4556,7 @@ function peg$parse(input, options) {
4323
4556
  s4 = peg$parseimplicitParenthesesCallExpression();
4324
4557
  if (s4 !== peg$FAILED) {
4325
4558
  peg$savedPos = s0;
4326
- s0 = peg$f71(s4);
4559
+ s0 = peg$f76(s4);
4327
4560
  } else {
4328
4561
  peg$currPos = s0;
4329
4562
  s0 = peg$FAILED;
@@ -4342,7 +4575,7 @@ function peg$parse(input, options) {
4342
4575
  peg$silentFails--;
4343
4576
  if (s0 === peg$FAILED) {
4344
4577
  s1 = peg$FAILED;
4345
- if (peg$silentFails === 0) { peg$fail(peg$e89); }
4578
+ if (peg$silentFails === 0) { peg$fail(peg$e91); }
4346
4579
  }
4347
4580
 
4348
4581
  return s0;
@@ -4352,19 +4585,19 @@ function peg$parse(input, options) {
4352
4585
  var s0;
4353
4586
 
4354
4587
  if (input.charCodeAt(peg$currPos) === 8594) {
4355
- s0 = peg$c56;
4588
+ s0 = peg$c57;
4356
4589
  peg$currPos++;
4357
4590
  } else {
4358
4591
  s0 = peg$FAILED;
4359
- if (peg$silentFails === 0) { peg$fail(peg$e90); }
4592
+ if (peg$silentFails === 0) { peg$fail(peg$e92); }
4360
4593
  }
4361
4594
  if (s0 === peg$FAILED) {
4362
- if (input.substr(peg$currPos, 2) === peg$c57) {
4363
- s0 = peg$c57;
4595
+ if (input.substr(peg$currPos, 2) === peg$c58) {
4596
+ s0 = peg$c58;
4364
4597
  peg$currPos += 2;
4365
4598
  } else {
4366
4599
  s0 = peg$FAILED;
4367
- if (peg$silentFails === 0) { peg$fail(peg$e91); }
4600
+ if (peg$silentFails === 0) { peg$fail(peg$e93); }
4368
4601
  }
4369
4602
  }
4370
4603
 
@@ -4375,12 +4608,12 @@ function peg$parse(input, options) {
4375
4608
  var s0, s1, s2, s3;
4376
4609
 
4377
4610
  s0 = peg$currPos;
4378
- if (input.substr(peg$currPos, 2) === peg$c48) {
4379
- s1 = peg$c48;
4611
+ if (input.substr(peg$currPos, 2) === peg$c49) {
4612
+ s1 = peg$c49;
4380
4613
  peg$currPos += 2;
4381
4614
  } else {
4382
4615
  s1 = peg$FAILED;
4383
- if (peg$silentFails === 0) { peg$fail(peg$e79); }
4616
+ if (peg$silentFails === 0) { peg$fail(peg$e81); }
4384
4617
  }
4385
4618
  if (s1 !== peg$FAILED) {
4386
4619
  s2 = [];
@@ -4389,7 +4622,7 @@ function peg$parse(input, options) {
4389
4622
  peg$currPos++;
4390
4623
  } else {
4391
4624
  s3 = peg$FAILED;
4392
- if (peg$silentFails === 0) { peg$fail(peg$e85); }
4625
+ if (peg$silentFails === 0) { peg$fail(peg$e87); }
4393
4626
  }
4394
4627
  while (s3 !== peg$FAILED) {
4395
4628
  s2.push(s3);
@@ -4398,11 +4631,11 @@ function peg$parse(input, options) {
4398
4631
  peg$currPos++;
4399
4632
  } else {
4400
4633
  s3 = peg$FAILED;
4401
- if (peg$silentFails === 0) { peg$fail(peg$e85); }
4634
+ if (peg$silentFails === 0) { peg$fail(peg$e87); }
4402
4635
  }
4403
4636
  }
4404
4637
  peg$savedPos = s0;
4405
- s0 = peg$f72();
4638
+ s0 = peg$f77();
4406
4639
  } else {
4407
4640
  peg$currPos = s0;
4408
4641
  s0 = peg$FAILED;
@@ -4433,7 +4666,7 @@ function peg$parse(input, options) {
4433
4666
  s3 = peg$parseexpectSingleQuote();
4434
4667
  if (s3 !== peg$FAILED) {
4435
4668
  peg$savedPos = s0;
4436
- s0 = peg$f73(s2);
4669
+ s0 = peg$f78(s2);
4437
4670
  } else {
4438
4671
  peg$currPos = s0;
4439
4672
  s0 = peg$FAILED;
@@ -4445,7 +4678,7 @@ function peg$parse(input, options) {
4445
4678
  peg$silentFails--;
4446
4679
  if (s0 === peg$FAILED) {
4447
4680
  s1 = peg$FAILED;
4448
- if (peg$silentFails === 0) { peg$fail(peg$e92); }
4681
+ if (peg$silentFails === 0) { peg$fail(peg$e94); }
4449
4682
  }
4450
4683
 
4451
4684
  return s0;
@@ -4497,7 +4730,7 @@ function peg$parse(input, options) {
4497
4730
  s1 = peg$parseslashFollows();
4498
4731
  if (s1 !== peg$FAILED) {
4499
4732
  peg$savedPos = s0;
4500
- s1 = peg$f74();
4733
+ s1 = peg$f79();
4501
4734
  }
4502
4735
  s0 = s1;
4503
4736
 
@@ -4511,11 +4744,11 @@ function peg$parse(input, options) {
4511
4744
  s1 = peg$currPos;
4512
4745
  peg$silentFails++;
4513
4746
  if (input.charCodeAt(peg$currPos) === 47) {
4514
- s2 = peg$c47;
4747
+ s2 = peg$c48;
4515
4748
  peg$currPos++;
4516
4749
  } else {
4517
4750
  s2 = peg$FAILED;
4518
- if (peg$silentFails === 0) { peg$fail(peg$e74); }
4751
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
4519
4752
  }
4520
4753
  peg$silentFails--;
4521
4754
  if (s2 !== peg$FAILED) {
@@ -4526,7 +4759,7 @@ function peg$parse(input, options) {
4526
4759
  }
4527
4760
  if (s1 !== peg$FAILED) {
4528
4761
  peg$savedPos = s0;
4529
- s1 = peg$f75();
4762
+ s1 = peg$f80();
4530
4763
  }
4531
4764
  s0 = s1;
4532
4765
 
@@ -4543,7 +4776,7 @@ function peg$parse(input, options) {
4543
4776
  s3 = peg$parsepipelineExpression();
4544
4777
  if (s3 !== peg$FAILED) {
4545
4778
  peg$savedPos = s0;
4546
- s0 = peg$f76(s3);
4779
+ s0 = peg$f81(s3);
4547
4780
  } else {
4548
4781
  peg$currPos = s0;
4549
4782
  s0 = peg$FAILED;
@@ -4570,23 +4803,23 @@ function peg$parse(input, options) {
4570
4803
  peg$silentFails--;
4571
4804
  if (s0 === peg$FAILED) {
4572
4805
  s1 = peg$FAILED;
4573
- if (peg$silentFails === 0) { peg$fail(peg$e93); }
4806
+ if (peg$silentFails === 0) { peg$fail(peg$e95); }
4574
4807
  }
4575
4808
 
4576
4809
  return s0;
4577
4810
  }
4578
4811
 
4579
- function peg$parsetemplateDocument() {
4812
+ function peg$parsetemplateBody() {
4580
4813
  var s0, s1, s2, s3, s4, s5;
4581
4814
 
4582
4815
  peg$silentFails++;
4583
4816
  s0 = peg$currPos;
4584
- s1 = peg$parsetemplateDocumentText();
4817
+ s1 = peg$parsetemplateBodyText();
4585
4818
  s2 = [];
4586
4819
  s3 = peg$currPos;
4587
4820
  s4 = peg$parsetemplateSubstitution();
4588
4821
  if (s4 !== peg$FAILED) {
4589
- s5 = peg$parsetemplateDocumentText();
4822
+ s5 = peg$parsetemplateBodyText();
4590
4823
  s4 = [s4, s5];
4591
4824
  s3 = s4;
4592
4825
  } else {
@@ -4598,7 +4831,7 @@ function peg$parse(input, options) {
4598
4831
  s3 = peg$currPos;
4599
4832
  s4 = peg$parsetemplateSubstitution();
4600
4833
  if (s4 !== peg$FAILED) {
4601
- s5 = peg$parsetemplateDocumentText();
4834
+ s5 = peg$parsetemplateBodyText();
4602
4835
  s4 = [s4, s5];
4603
4836
  s3 = s4;
4604
4837
  } else {
@@ -4607,26 +4840,26 @@ function peg$parse(input, options) {
4607
4840
  }
4608
4841
  }
4609
4842
  peg$savedPos = s0;
4610
- s0 = peg$f77(s1, s2);
4843
+ s0 = peg$f82(s1, s2);
4611
4844
  peg$silentFails--;
4612
4845
  s1 = peg$FAILED;
4613
- if (peg$silentFails === 0) { peg$fail(peg$e94); }
4846
+ if (peg$silentFails === 0) { peg$fail(peg$e96); }
4614
4847
 
4615
4848
  return s0;
4616
4849
  }
4617
4850
 
4618
- function peg$parsetemplateDocumentChar() {
4851
+ function peg$parsetemplateBodyChar() {
4619
4852
  var s0, s1, s2;
4620
4853
 
4621
4854
  s0 = peg$currPos;
4622
4855
  s1 = peg$currPos;
4623
4856
  peg$silentFails++;
4624
- if (input.substr(peg$currPos, 2) === peg$c58) {
4625
- s2 = peg$c58;
4857
+ if (input.substr(peg$currPos, 2) === peg$c59) {
4858
+ s2 = peg$c59;
4626
4859
  peg$currPos += 2;
4627
4860
  } else {
4628
4861
  s2 = peg$FAILED;
4629
- if (peg$silentFails === 0) { peg$fail(peg$e95); }
4862
+ if (peg$silentFails === 0) { peg$fail(peg$e97); }
4630
4863
  }
4631
4864
  peg$silentFails--;
4632
4865
  if (s2 === peg$FAILED) {
@@ -4651,23 +4884,57 @@ function peg$parse(input, options) {
4651
4884
  return s0;
4652
4885
  }
4653
4886
 
4654
- function peg$parsetemplateDocumentText() {
4887
+ function peg$parsetemplateBodyText() {
4655
4888
  var s0, s1, s2;
4656
4889
 
4657
4890
  peg$silentFails++;
4658
4891
  s0 = peg$currPos;
4659
4892
  s1 = [];
4660
- s2 = peg$parsetemplateDocumentChar();
4893
+ s2 = peg$parsetemplateBodyChar();
4661
4894
  while (s2 !== peg$FAILED) {
4662
4895
  s1.push(s2);
4663
- s2 = peg$parsetemplateDocumentChar();
4896
+ s2 = peg$parsetemplateBodyChar();
4664
4897
  }
4665
4898
  peg$savedPos = s0;
4666
- s1 = peg$f78(s1);
4899
+ s1 = peg$f83(s1);
4667
4900
  s0 = s1;
4668
4901
  peg$silentFails--;
4669
4902
  s1 = peg$FAILED;
4670
- if (peg$silentFails === 0) { peg$fail(peg$e96); }
4903
+ if (peg$silentFails === 0) { peg$fail(peg$e98); }
4904
+
4905
+ return s0;
4906
+ }
4907
+
4908
+ function peg$parsetemplateDocument() {
4909
+ var s0, s1, s2, s3;
4910
+
4911
+ peg$silentFails++;
4912
+ s0 = peg$currPos;
4913
+ s1 = peg$parsefrontMatterExpression();
4914
+ if (s1 !== peg$FAILED) {
4915
+ s2 = peg$parse__();
4916
+ s3 = peg$parsetemplateBody();
4917
+ peg$savedPos = s0;
4918
+ s0 = peg$f84(s1, s3);
4919
+ } else {
4920
+ peg$currPos = s0;
4921
+ s0 = peg$FAILED;
4922
+ }
4923
+ if (s0 === peg$FAILED) {
4924
+ s0 = peg$currPos;
4925
+ s1 = peg$parsefrontMatterYaml();
4926
+ if (s1 === peg$FAILED) {
4927
+ s1 = null;
4928
+ }
4929
+ s2 = peg$parsetemplateBody();
4930
+ peg$savedPos = s0;
4931
+ s0 = peg$f85(s1, s2);
4932
+ }
4933
+ peg$silentFails--;
4934
+ if (s0 === peg$FAILED) {
4935
+ s1 = peg$FAILED;
4936
+ if (peg$silentFails === 0) { peg$fail(peg$e99); }
4937
+ }
4671
4938
 
4672
4939
  return s0;
4673
4940
  }
@@ -4713,7 +4980,7 @@ function peg$parse(input, options) {
4713
4980
  s4 = peg$parseexpectBacktick();
4714
4981
  if (s4 !== peg$FAILED) {
4715
4982
  peg$savedPos = s0;
4716
- s0 = peg$f79(s2, s3);
4983
+ s0 = peg$f86(s2, s3);
4717
4984
  } else {
4718
4985
  peg$currPos = s0;
4719
4986
  s0 = peg$FAILED;
@@ -4725,7 +4992,7 @@ function peg$parse(input, options) {
4725
4992
  peg$silentFails--;
4726
4993
  if (s0 === peg$FAILED) {
4727
4994
  s1 = peg$FAILED;
4728
- if (peg$silentFails === 0) { peg$fail(peg$e97); }
4995
+ if (peg$silentFails === 0) { peg$fail(peg$e100); }
4729
4996
  }
4730
4997
 
4731
4998
  return s0;
@@ -4745,12 +5012,12 @@ function peg$parse(input, options) {
4745
5012
  if (peg$silentFails === 0) { peg$fail(peg$e36); }
4746
5013
  }
4747
5014
  if (s2 === peg$FAILED) {
4748
- if (input.substr(peg$currPos, 2) === peg$c58) {
4749
- s2 = peg$c58;
5015
+ if (input.substr(peg$currPos, 2) === peg$c59) {
5016
+ s2 = peg$c59;
4750
5017
  peg$currPos += 2;
4751
5018
  } else {
4752
5019
  s2 = peg$FAILED;
4753
- if (peg$silentFails === 0) { peg$fail(peg$e95); }
5020
+ if (peg$silentFails === 0) { peg$fail(peg$e97); }
4754
5021
  }
4755
5022
  }
4756
5023
  peg$silentFails--;
@@ -4787,7 +5054,7 @@ function peg$parse(input, options) {
4787
5054
  s2 = peg$parsetemplateLiteralChar();
4788
5055
  }
4789
5056
  peg$savedPos = s0;
4790
- s1 = peg$f80(s1);
5057
+ s1 = peg$f87(s1);
4791
5058
  s0 = s1;
4792
5059
 
4793
5060
  return s0;
@@ -4798,15 +5065,15 @@ function peg$parse(input, options) {
4798
5065
 
4799
5066
  peg$silentFails++;
4800
5067
  s0 = peg$currPos;
4801
- if (input.substr(peg$currPos, 2) === peg$c58) {
4802
- s1 = peg$c58;
5068
+ if (input.substr(peg$currPos, 2) === peg$c59) {
5069
+ s1 = peg$c59;
4803
5070
  peg$currPos += 2;
4804
5071
  } else {
4805
5072
  s1 = peg$FAILED;
4806
- if (peg$silentFails === 0) { peg$fail(peg$e95); }
5073
+ if (peg$silentFails === 0) { peg$fail(peg$e97); }
4807
5074
  }
4808
5075
  if (s1 !== peg$FAILED) {
4809
- s2 = peg$parseexpression();
5076
+ s2 = peg$parseexpectExpression();
4810
5077
  if (s2 !== peg$FAILED) {
4811
5078
  if (input.charCodeAt(peg$currPos) === 125) {
4812
5079
  s3 = peg$c28;
@@ -4817,7 +5084,7 @@ function peg$parse(input, options) {
4817
5084
  }
4818
5085
  if (s3 !== peg$FAILED) {
4819
5086
  peg$savedPos = s0;
4820
- s0 = peg$f81(s2);
5087
+ s0 = peg$f88(s2);
4821
5088
  } else {
4822
5089
  peg$currPos = s0;
4823
5090
  s0 = peg$FAILED;
@@ -4833,7 +5100,7 @@ function peg$parse(input, options) {
4833
5100
  peg$silentFails--;
4834
5101
  if (s0 === peg$FAILED) {
4835
5102
  s1 = peg$FAILED;
4836
- if (peg$silentFails === 0) { peg$fail(peg$e98); }
5103
+ if (peg$silentFails === 0) { peg$fail(peg$e101); }
4837
5104
  }
4838
5105
 
4839
5106
  return s0;
@@ -4866,7 +5133,7 @@ function peg$parse(input, options) {
4866
5133
  s3 = peg$parseunaryExpression();
4867
5134
  if (s3 !== peg$FAILED) {
4868
5135
  peg$savedPos = s0;
4869
- s0 = peg$f82(s1, s3);
5136
+ s0 = peg$f89(s1, s3);
4870
5137
  } else {
4871
5138
  peg$currPos = s0;
4872
5139
  s0 = peg$FAILED;
@@ -4890,7 +5157,7 @@ function peg$parse(input, options) {
4890
5157
  peg$currPos++;
4891
5158
  } else {
4892
5159
  s0 = peg$FAILED;
4893
- if (peg$silentFails === 0) { peg$fail(peg$e99); }
5160
+ if (peg$silentFails === 0) { peg$fail(peg$e102); }
4894
5161
  }
4895
5162
 
4896
5163
  return s0;
@@ -4997,12 +5264,18 @@ const peg$allowedStartRules = [
4997
5264
  "expectClosingBracket",
4998
5265
  "expectClosingParenthesis",
4999
5266
  "expectDoubleQuote",
5267
+ "expectExpression",
5268
+ "expectFrontDelimiter",
5000
5269
  "expectGuillemet",
5001
5270
  "expectSingleQuote",
5002
5271
  "expectPipelineExpression",
5003
5272
  "exponentiationExpression",
5004
5273
  "expression",
5005
5274
  "floatLiteral",
5275
+ "frontDelimiter",
5276
+ "frontMatterExpression",
5277
+ "frontMatterText",
5278
+ "frontMatterYaml",
5006
5279
  "group",
5007
5280
  "guillemetString",
5008
5281
  "guillemetStringChar",
@@ -5066,9 +5339,10 @@ const peg$allowedStartRules = [
5066
5339
  "slashFollows",
5067
5340
  "spreadElement",
5068
5341
  "stringLiteral",
5342
+ "templateBody",
5343
+ "templateBodyChar",
5344
+ "templateBodyText",
5069
5345
  "templateDocument",
5070
- "templateDocumentChar",
5071
- "templateDocumentText",
5072
5346
  "templateLiteral",
5073
5347
  "templateLiteralChar",
5074
5348
  "templateLiteralText",