53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
import { parseLine as f, createLineData as s } from "./parser.js";
|
|
function c(l, a = " ") {
|
|
let r = s(null, a);
|
|
const n = {
|
|
ended: !1,
|
|
clone() {
|
|
return c(l.clone(), a);
|
|
},
|
|
async next() {
|
|
if (r.line = await l.next(), r.line === null)
|
|
return !0;
|
|
f(r);
|
|
},
|
|
current() {
|
|
return n;
|
|
},
|
|
line() {
|
|
var e;
|
|
return (e = r.line) == null ? void 0 : e.slice(r.offsetHead);
|
|
},
|
|
head() {
|
|
var e;
|
|
return (e = r.line) == null ? void 0 : e.slice(r.offsetHead, r.offsetTail);
|
|
},
|
|
tail() {
|
|
var e;
|
|
return (e = r.line) == null ? void 0 : e.slice(r.offsetTail);
|
|
},
|
|
level() {
|
|
return r.level;
|
|
},
|
|
async content(e = -1, t = []) {
|
|
var i;
|
|
return e === -1 && (e = r.level + 1), await n.next() || r.level < e ? t : (t.push(((i = r.line) == null ? void 0 : i.slice(e)) || ""), n.content(e, t));
|
|
},
|
|
match(e) {
|
|
return e === n.head();
|
|
},
|
|
async each(e) {
|
|
const t = n.line() !== void 0 ? n.level() : -1;
|
|
for (; !(await n.next() || n.level() <= t || await e()); )
|
|
;
|
|
},
|
|
async seek(e, t = -1) {
|
|
return t === -1 && (t = r.level), await n.next() ? !1 : n.head() === e ? n : r.level < t ? !1 : n.seek(e, t);
|
|
}
|
|
};
|
|
return n;
|
|
}
|
|
export {
|
|
c as useDocument
|
|
};
|