26 lines
1.0 KiB
JavaScript
26 lines
1.0 KiB
JavaScript
function t(e = "", r = " ") {
|
|
return { line: e, indent: r, type: 0, level: 0, offsetHead: 0, offsetTail: 0 };
|
|
}
|
|
function o(e) {
|
|
if (typeof e != "object" || !e || typeof e.type != "number" || typeof e.level != "number")
|
|
throw new Error("'lineData' must be an object with 'line' string, and 'type' and 'level' integer 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, f = 0;
|
|
if (!e.line.length)
|
|
e.type === 1 && (f += 1), e.type === 0 && (f = e.level), e.type = r, e.level = f, e.offsetHead = 0, e.offsetTail = 0;
|
|
else {
|
|
for (r = 1; e.line[f] === e.indent && f <= e.level + 1; )
|
|
++f;
|
|
for (e.type = r, e.level = f, e.offsetHead = f, e.offsetTail = f; e.line[e.offsetTail] && e.line[e.offsetTail] !== " "; )
|
|
++e.offsetTail;
|
|
}
|
|
return e;
|
|
}
|
|
export {
|
|
t as createLineData,
|
|
o as parseLine
|
|
};
|