Terrace/packages/js/core/dist/document.js
2023-01-29 17:25:43 -05:00

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
};