{"version":3,"file":"peberminta-b0fadb05.js","sources":["../../node_modules/peberminta/lib/core.mjs"],"sourcesContent":["import { clamp, escapeWhitespace } from './util.mjs';\n\nfunction emit(value) {\n return (data, i) => ({\n matched: true,\n position: i,\n value: value\n });\n}\nfunction make(\nf) {\n return (data, i) => ({\n matched: true,\n position: i,\n value: f(data, i)\n });\n}\nfunction action(\nf) {\n return (data, i) => {\n f(data, i);\n return {\n matched: true,\n position: i,\n value: null\n };\n };\n}\nfunction fail(\ndata, i) {\n return { matched: false };\n}\nfunction error(message) {\n return (data, i) => {\n throw new Error((message instanceof Function) ? message(data, i) : message);\n };\n}\nfunction token(\nonToken,\nonEnd) {\n return (data, i) => {\n let position = i;\n let value = undefined;\n if (i < data.tokens.length) {\n value = onToken(data.tokens[i], data, i);\n if (value !== undefined) {\n position++;\n }\n }\n else {\n onEnd?.(data, i);\n }\n return (value === undefined)\n ? { matched: false }\n : {\n matched: true,\n position: position,\n value: value\n };\n };\n}\nfunction any(data, i) {\n return (i < data.tokens.length)\n ? {\n matched: true,\n position: i + 1,\n value: data.tokens[i]\n }\n : { matched: false };\n}\nfunction satisfy(\ntest) {\n return (data, i) => (i < data.tokens.length && test(data.tokens[i], data, i))\n ? {\n matched: true,\n position: i + 1,\n value: data.tokens[i]\n }\n : { matched: false };\n}\nfunction mapInner(r, f) {\n return (r.matched) ? ({\n matched: true,\n position: r.position,\n value: f(r.value, r.position)\n }) : r;\n}\nfunction mapOuter(r, f) {\n return (r.matched) ? f(r) : r;\n}\nfunction map(p, mapper) {\n return (data, i) => mapInner(p(data, i), (v, j) => mapper(v, data, i, j));\n}\nfunction map1(p,\nmapper) {\n return (data, i) => mapOuter(p(data, i), (m) => mapper(m, data, i));\n}\nfunction peek(p, f) {\n return (data, i) => {\n const r = p(data, i);\n f(r, data, i);\n return r;\n };\n}\nfunction option(p, def) {\n return (data, i) => {\n const r = p(data, i);\n return (r.matched)\n ? r\n : {\n matched: true,\n position: i,\n value: def\n };\n };\n}\nfunction not(p) {\n return (data, i) => {\n const r = p(data, i);\n return (r.matched)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n };\n}\nfunction choice(...ps) {\n return (data, i) => {\n for (const p of ps) {\n const result = p(data, i);\n if (result.matched) {\n return result;\n }\n }\n return { matched: false };\n };\n}\nfunction otherwise(pa, pb) {\n return (data, i) => {\n const r1 = pa(data, i);\n return (r1.matched)\n ? r1\n : pb(data, i);\n };\n}\nfunction longest(...ps) {\n return (data, i) => {\n let match = undefined;\n for (const p of ps) {\n const result = p(data, i);\n if (result.matched && (!match || match.position < result.position)) {\n match = result;\n }\n }\n return match || { matched: false };\n };\n}\nfunction takeWhile(p,\ntest) {\n return (data, i) => {\n const values = [];\n let success = true;\n do {\n const r = p(data, i);\n if (r.matched && test(r.value, values.length + 1, data, i, r.position)) {\n values.push(r.value);\n i = r.position;\n }\n else {\n success = false;\n }\n } while (success);\n return {\n matched: true,\n position: i,\n value: values\n };\n };\n}\nfunction takeUntil(p,\ntest) {\n return takeWhile(p, (value, n, data, i, j) => !test(value, n, data, i, j));\n}\nfunction takeWhileP(pValue, pTest) {\n return takeWhile(pValue, (value, n, data, i) => pTest(data, i).matched);\n}\nfunction takeUntilP(pValue, pTest) {\n return takeWhile(pValue, (value, n, data, i) => !pTest(data, i).matched);\n}\nfunction many(p) {\n return takeWhile(p, () => true);\n}\nfunction many1(p) {\n return ab(p, many(p), (head, tail) => [head, ...tail]);\n}\nfunction ab(pa, pb, join) {\n return (data, i) => mapOuter(pa(data, i), (ma) => mapInner(pb(data, ma.position), (vb, j) => join(ma.value, vb, data, i, j)));\n}\nfunction left(pa, pb) {\n return ab(pa, pb, (va) => va);\n}\nfunction right(pa, pb) {\n return ab(pa, pb, (va, vb) => vb);\n}\nfunction abc(pa, pb, pc, join) {\n return (data, i) => mapOuter(pa(data, i), (ma) => mapOuter(pb(data, ma.position), (mb) => mapInner(pc(data, mb.position), (vc, j) => join(ma.value, mb.value, vc, data, i, j))));\n}\nfunction middle(pa, pb, pc) {\n return abc(pa, pb, pc, (ra, rb) => rb);\n}\nfunction all(...ps) {\n return (data, i) => {\n const result = [];\n let position = i;\n for (const p of ps) {\n const r1 = p(data, position);\n if (r1.matched) {\n result.push(r1.value);\n position = r1.position;\n }\n else {\n return { matched: false };\n }\n }\n return {\n matched: true,\n position: position,\n value: result\n };\n };\n}\nfunction skip(...ps) {\n return map(all(...ps), () => null);\n}\nfunction flatten(...ps) {\n return flatten1(all(...ps));\n}\nfunction flatten1(p) {\n return map(p, (vs) => vs.flatMap((v) => v));\n}\nfunction sepBy1(pValue, pSep) {\n return ab(pValue, many(right(pSep, pValue)), (head, tail) => [head, ...tail]);\n}\nfunction sepBy(pValue, pSep) {\n return otherwise(sepBy1(pValue, pSep), emit([]));\n}\nfunction chainReduce(acc,\nf) {\n return (data, i) => {\n let loop = true;\n let acc1 = acc;\n let pos = i;\n do {\n const r = f(acc1, data, pos)(data, pos);\n if (r.matched) {\n acc1 = r.value;\n pos = r.position;\n }\n else {\n loop = false;\n }\n } while (loop);\n return {\n matched: true,\n position: pos,\n value: acc1\n };\n };\n}\nfunction reduceLeft(acc, p,\nreducer) {\n return chainReduce(acc, (acc) => map(p, (v, data, i, j) => reducer(acc, v, data, i, j)));\n}\nfunction reduceRight(p, acc,\nreducer) {\n return map(many(p), (vs, data, i, j) => vs.reduceRight((acc, v) => reducer(v, acc, data, i, j), acc));\n}\nfunction leftAssoc1(pLeft, pOper) {\n return chain(pLeft, (v0) => reduceLeft(v0, pOper, (acc, f) => f(acc)));\n}\nfunction rightAssoc1(pOper, pRight) {\n return ab(reduceRight(pOper, (y) => y, (f, acc) => (y) => f(acc(y))), pRight, (f, v) => f(v));\n}\nfunction leftAssoc2(pLeft, pOper, pRight) {\n return chain(pLeft, (v0) => reduceLeft(v0, ab(pOper, pRight, (f, y) => [f, y]), (acc, [f, y]) => f(acc, y)));\n}\nfunction rightAssoc2(pLeft, pOper, pRight) {\n return ab(reduceRight(ab(pLeft, pOper, (x, f) => [x, f]), (y) => y, ([x, f], acc) => (y) => f(x, acc(y))), pRight, (f, v) => f(v));\n}\nfunction condition(cond, pTrue, pFalse) {\n return (data, i) => (cond(data, i))\n ? pTrue(data, i)\n : pFalse(data, i);\n}\nfunction decide(p) {\n return (data, i) => mapOuter(p(data, i), (m1) => m1.value(data, m1.position));\n}\nfunction chain(p,\nf) {\n return (data, i) => mapOuter(p(data, i), (m1) => f(m1.value, data, i, m1.position)(data, m1.position));\n}\nfunction ahead(p) {\n return (data, i) => mapOuter(p(data, i), (m1) => ({\n matched: true,\n position: i,\n value: m1.value\n }));\n}\nfunction recursive(f) {\n return function (data, i) {\n return f()(data, i);\n };\n}\nfunction start(data, i) {\n return (i !== 0)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n}\nfunction end(data, i) {\n return (i < data.tokens.length)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n}\nfunction remainingTokensNumber(data, i) {\n return data.tokens.length - i;\n}\nfunction parserPosition(data, i, formatToken, contextTokens = 3) {\n const len = data.tokens.length;\n const lowIndex = clamp(0, i - contextTokens, len - contextTokens);\n const highIndex = clamp(contextTokens, i + 1 + contextTokens, len);\n const tokensSlice = data.tokens.slice(lowIndex, highIndex);\n const lines = [];\n const indexWidth = String(highIndex - 1).length + 1;\n if (i < 0) {\n lines.push(`${String(i).padStart(indexWidth)} >>`);\n }\n if (0 < lowIndex) {\n lines.push('...'.padStart(indexWidth + 6));\n }\n for (let j = 0; j < tokensSlice.length; j++) {\n const index = lowIndex + j;\n lines.push(`${String(index).padStart(indexWidth)} ${(index === i ? '>' : ' ')} ${escapeWhitespace(formatToken(tokensSlice[j]))}`);\n }\n if (highIndex < len) {\n lines.push('...'.padStart(indexWidth + 6));\n }\n if (len <= i) {\n lines.push(`${String(i).padStart(indexWidth)} >>`);\n }\n return lines.join('\\n');\n}\nfunction parse(parser, tokens, options, formatToken = JSON.stringify) {\n const data = { tokens: tokens, options: options };\n const result = parser(data, 0);\n if (!result.matched) {\n throw new Error('No match');\n }\n if (result.position < data.tokens.length) {\n throw new Error(`Partial match. Parsing stopped at:\\n${parserPosition(data, result.position, formatToken)}`);\n }\n return result.value;\n}\nfunction tryParse(parser, tokens, options) {\n const result = parser({ tokens: tokens, options: options }, 0);\n return (result.matched)\n ? result.value\n : undefined;\n}\nfunction match(matcher, tokens, options) {\n const result = matcher({ tokens: tokens, options: options }, 0);\n return result.value;\n}\n\nexport { ab, abc, action, ahead, all, all as and, any, chain, chainReduce, choice, condition, decide, skip as discard, otherwise as eitherOr, emit, end, end as eof, error, fail, flatten, flatten1, left, leftAssoc1, leftAssoc2, longest, ahead as lookAhead, make, many, many1, map, map1, match, middle, not, emit as of, option, choice as or, otherwise, parse, parserPosition, peek, recursive, reduceLeft, reduceRight, remainingTokensNumber, right, rightAssoc1, rightAssoc2, satisfy, sepBy, sepBy1, skip, many1 as some, start, takeUntil, takeUntilP, takeWhile, takeWhileP, token, tryParse };\n"],"names":["token","onToken","onEnd","data","i","position","value","mapInner","r","f","mapOuter","map","p","mapper","v","j","option","def","choice","ps","result","otherwise","pa","pb","r1","takeWhile","test","values","success","many","many1","ab","head","tail","join","ma","vb","left","va","right","abc","pc","mb","vc","middle","ra","rb","all","flatten","flatten1","vs","chainReduce","acc","loop","acc1","pos","reduceLeft","reducer","leftAssoc2","pLeft","pOper","pRight","chain","v0","y","m1"],"mappings":"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","x_google_ignoreList":[0]}