-// Generated by Peggy 2.0.1.
+// @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('');
}
}
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"
+ + offset_s.line + " | " + line + "\n"
+ filler + " | " + peg$padEnd("", s.column - 1, ' ')
+ peg$padEnd("", hatLen, "^");
} else {
value: makeString(value),
};
};
- var peg$currPos = 0;
- var peg$savedPos = 0;
+ 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;
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$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
};