-// Generated by Peggy 1.2.0.
+// @generated by Peggy 4.0.2.
//
// https://peggyjs.org/
"use strict";
+
/* Generated code is not pretty, ignore a lot of this horrorstyle. */
-/* eslint-disable quotes */
-/* eslint-disable vars-on-top */
/* eslint-disable no-control-regex */
+/* eslint-disable no-empty */
/* eslint-disable security/detect-object-injection */
-/* eslint-disable vars-on-top */
/* eslint-disable brace-style */
/* eslint-disable comma-dangle */
+/* eslint-disable vars-on-top */
/* eslint-disable no-unused-vars */
+/* eslint-disable camelcase */
+/* eslint-disable indent */
+/* eslint-disable semi */
+/* eslint-disable jsdoc/require-jsdoc */
+/* eslint-disable sonarjs/cognitive-complexity */
+/* eslint-disable sonarjs/no-identical-functions */
function makeString(o) {
return o.join('');
];
-
function peg$subclass(child, parent) {
function C() { this.constructor = child; }
C.prototype = parent.prototype;
function peg$SyntaxError(message, expected, found, location) {
var self = Error.call(this, message);
+ // istanbul ignore next Check is a necessary evil to support older environments
if (Object.setPrototypeOf) {
Object.setPrototypeOf(self, peg$SyntaxError.prototype);
}
}
}
var s = this.location.start;
- var loc = this.location.source + ":" + s.line + ":" + s.column;
+ var offset_s = (this.location.source && (typeof this.location.source.offset === "function"))
+ ? this.location.source.offset(s)
+ : s;
+ var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
if (src) {
var e = this.location.end;
- var filler = peg$padEnd("", s.line.toString().length);
+ var filler = peg$padEnd("", offset_s.line.toString().length, ' ');
var line = src[s.line - 1];
var last = s.line === e.line ? e.column : line.length + 1;
+ var hatLen = (last - s.column) || 1;
str += "\n --> " + loc + "\n"
+ filler + " |\n"
- + s.line + " | " + line + "\n"
- + filler + " | " + peg$padEnd("", s.column - 1)
- + peg$padEnd("", last - s.column, "^");
+ + offset_s.line + " | " + line + "\n"
+ + filler + " | " + peg$padEnd("", s.column - 1, ' ')
+ + peg$padEnd("", hatLen, "^");
} else {
str += "\n at " + loc;
}
: classEscape(part);
});
- return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]";
+ return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
},
any: function() {
var peg$e25 = peg$anyExpectation();
var peg$f0 = function(links) {
- return links;
- };
+ return links;
+ };
var peg$f1 = function(uriReference, attributes) {
- seenAttributes = [];
- return {
- target: uriReference,
- attributes,
- };
+ seenAttributes = [];
+ return {
+ target: uriReference,
+ attributes,
};
+ };
var peg$f2 = function(uri) {
- return uri;
- };
+ return uri;
+ };
var peg$f3 = function(uri) {
- return makeString(uri);
- };
+ return makeString(uri);
+ };
var peg$f4 = function(attrs) {
- return attrs.filter((a) => a);
- };
+ return attrs.filter((a) => a);
+ };
var peg$f5 = function(name, value) {
- if (onlyFirstAttributes.includes(name.name)) {
- if (seenAttributes.includes(name.name)) {
- // Repeat of singleton attribute, ignore it.
- return;
- }
- seenAttributes.push(name.name);
+ if (onlyFirstAttributes.includes(name.name)) {
+ if (seenAttributes.includes(name.name)) {
+ // Repeat of singleton attribute, ignore it.
+ return;
}
- return {
- ...name,
- ...value,
- };
+ seenAttributes.push(name.name);
+ }
+ return {
+ ...name,
+ ...value,
};
+ };
var peg$f6 = function(name) {
- return {
- ...name,
- value: null,
- }
- };
+ return {
+ ...name,
+ value: null,
+ }
+ };
var peg$f7 = function(name, extended) {
- return {
- name: makeString(name.concat(extended)).toLowerCase(),
- extended: !!extended,
- };
+ return {
+ name: makeString(name.concat(extended)).toLowerCase(),
+ extended: !!extended,
};
+ };
var peg$f8 = function(value) {
- return {
- value: makeString(value),
- };
+ return {
+ value: makeString(value),
};
- var peg$f9 = function(encoding, language, value) {
- return {
- encoding: encoding.length ? makeString(encoding) : 'UTF-8',
- language: language.length ? makeString(language) : null,
- value: decodeURIComponent(makeString(value)),
- };
+ };
+ var peg$f9 = function(value) {
+ return {
+ value: makeString(value),
};
- var peg$f10 = function(value) {
- return {
- encoding: null,
- language: null,
- value: makeString(value),
- };
+ };
+ var peg$f10 = function(encoding, language, value) {
+ return {
+ encoding: encoding.length ? makeString(encoding) : 'UTF-8',
+ language: language.length ? makeString(language) : null,
+ value: decodeURIComponent(makeString(value)),
};
-
- var peg$currPos = 0;
- var peg$savedPos = 0;
+ };
+ var peg$f11 = function(value) {
+ return {
+ encoding: null,
+ language: null,
+ value: makeString(value),
+ };
+ };
+ var peg$currPos = options.peg$currPos | 0;
+ var peg$savedPos = peg$currPos;
var peg$posDetailsCache = [{ line: 1, column: 1 }];
- var peg$maxFailPos = 0;
- var peg$maxFailExpected = [];
- var peg$silentFails = 0;
+ var peg$maxFailPos = peg$currPos;
+ var peg$maxFailExpected = options.peg$maxFailExpected || [];
+ var peg$silentFails = options.peg$silentFails | 0;
var peg$result;
- if ("startRule" in options) {
+ if (options.startRule) {
if (!(options.startRule in peg$startRuleFunctions)) {
throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
}
if (details) {
return details;
} else {
- p = pos - 1;
- while (!peg$posDetailsCache[p]) {
- p--;
+ if (pos >= peg$posDetailsCache.length) {
+ p = peg$posDetailsCache.length - 1;
+ } else {
+ p = pos;
+ while (!peg$posDetailsCache[--p]) {}
}
details = peg$posDetailsCache[p];
}
}
- function peg$computeLocation(startPos, endPos) {
+ function peg$computeLocation(startPos, endPos, offset) {
var startPosDetails = peg$computePosDetails(startPos);
var endPosDetails = peg$computePosDetails(endPos);
- return {
+ var res = {
source: peg$source,
start: {
offset: startPos,
column: endPosDetails.column
}
};
+ if (offset && peg$source && (typeof peg$source.offset === "function")) {
+ res.start = peg$source.offset(res.start);
+ res.end = peg$source.offset(res.end);
+ }
+ return res;
}
function peg$fail(expected) {
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
- if (peg$r0.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r0.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
- if (peg$r0.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r0.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
- if (peg$r1.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r1.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
- if (peg$r1.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r1.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
peg$silentFails++;
s0 = peg$currPos;
- if (peg$r2.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
+ s1 = input.charAt(peg$currPos);
+ if (peg$r2.test(s1)) {
peg$currPos++;
} else {
s1 = peg$FAILED;
}
if (s1 !== peg$FAILED) {
s2 = [];
- if (peg$r3.test(input.charAt(peg$currPos))) {
- s3 = input.charAt(peg$currPos);
+ s3 = input.charAt(peg$currPos);
+ if (peg$r3.test(s3)) {
peg$currPos++;
} else {
s3 = peg$FAILED;
if (s3 !== peg$FAILED) {
while (s3 !== peg$FAILED) {
s2.push(s3);
- if (peg$r3.test(input.charAt(peg$currPos))) {
- s3 = input.charAt(peg$currPos);
+ s3 = input.charAt(peg$currPos);
+ if (peg$r3.test(s3)) {
peg$currPos++;
} else {
s3 = peg$FAILED;
s2 = peg$FAILED;
}
if (s2 !== peg$FAILED) {
- if (peg$r2.test(input.charAt(peg$currPos))) {
- s3 = input.charAt(peg$currPos);
+ s3 = input.charAt(peg$currPos);
+ if (peg$r2.test(s3)) {
peg$currPos++;
} else {
s3 = peg$FAILED;
if (s0 === peg$FAILED) {
s0 = peg$currPos;
s1 = [];
- if (peg$r4.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r4.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
- if (peg$r4.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r4.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
}
if (s1 !== peg$FAILED) {
peg$savedPos = s0;
- s1 = peg$f8(s1);
+ s1 = peg$f9(s1);
}
s0 = s1;
}
peg$silentFails++;
s0 = [];
- if (peg$r5.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
+ s1 = input.charAt(peg$currPos);
+ if (peg$r5.test(s1)) {
peg$currPos++;
} else {
s1 = peg$FAILED;
}
while (s1 !== peg$FAILED) {
s0.push(s1);
- if (peg$r5.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
+ s1 = input.charAt(peg$currPos);
+ if (peg$r5.test(s1)) {
peg$currPos++;
} else {
s1 = peg$FAILED;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
- if (peg$r6.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r6.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
}
while (s2 !== peg$FAILED) {
s1.push(s2);
- if (peg$r6.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r6.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$e23); }
}
}
- if (peg$r7.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
+ s2 = input.charAt(peg$currPos);
+ if (peg$r7.test(s2)) {
peg$currPos++;
} else {
s2 = peg$FAILED;
}
if (s2 !== peg$FAILED) {
s3 = [];
- if (peg$r6.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
+ s4 = input.charAt(peg$currPos);
+ if (peg$r6.test(s4)) {
peg$currPos++;
} else {
s4 = peg$FAILED;
}
while (s4 !== peg$FAILED) {
s3.push(s4);
- if (peg$r6.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
+ s4 = input.charAt(peg$currPos);
+ if (peg$r6.test(s4)) {
peg$currPos++;
} else {
s4 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$e23); }
}
}
- if (peg$r7.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
+ s4 = input.charAt(peg$currPos);
+ if (peg$r7.test(s4)) {
peg$currPos++;
} else {
s4 = peg$FAILED;
}
}
peg$savedPos = s0;
- s0 = peg$f9(s1, s3, s5);
+ s0 = peg$f10(s1, s3, s5);
} else {
peg$currPos = s0;
s0 = peg$FAILED;
}
}
peg$savedPos = s0;
- s1 = peg$f10(s1);
+ s1 = peg$f11(s1);
s0 = s1;
}
peg$silentFails--;
}
- // Per-parsing tracking of attributes which should be ignored after first occurrence.
- let seenAttributes = [];
-
+// Per-parsing tracking of attributes which should be ignored after first occurrence.
+let seenAttributes = [];
peg$result = peg$startRuleFunction();
+ if (options.peg$library) {
+ return /** @type {any} */ ({
+ peg$result,
+ peg$currPos,
+ peg$FAILED,
+ peg$maxFailExpected,
+ peg$maxFailPos
+ });
+ }
if (peg$result !== peg$FAILED && peg$currPos === input.length) {
return peg$result;
} else {
}
module.exports = {
+ StartRules: ["links", "extendedValue"],
SyntaxError: peg$SyntaxError,
parse: peg$parse
};