2023-02-05 07:44:11 -05:00

26 lines
910 B
JavaScript

function f(e = "", r = " ") {
return { line: e, indent: r, level: 0, offsetHead: 0, offsetTail: 0 };
}
function o(e) {
if (typeof e != "object" || !e || typeof e.level != "number")
throw new Error("'lineData' must be an object with string line and numeric level properties");
if (typeof e.indent != "string" || e.indent.length === 0 || e.indent.length > 1)
throw new Error("'lineData.indent' must be a single-character string");
if (typeof e.line != "string")
throw new Error("'lineData.line' must be a string");
let r = 0;
if (!e.line.length)
e.level = e.level, e.offsetHead = 0, e.offsetTail = 0;
else {
for (; e.line[r] === e.indent && r <= e.level + 1; )
++r;
for (e.level = r, e.offsetHead = r, e.offsetTail = r; e.line[e.offsetTail] && e.line[e.offsetTail] !== " "; )
++e.offsetTail;
}
return e;
}
export {
f as createLineData,
o as parseLine
};