Working on API surface.

This commit is contained in:
Joshua Bemenderfer
2022-11-12 21:30:22 -05:00
parent a0791b0c69
commit 28de2a8e20
18 changed files with 325 additions and 162 deletions

View File

@@ -1 +1,2 @@
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./parser.cjs");function s(a,i=" "){let e=null,t=l.LineData(),n=!1;async function r(){return e=await a(),e===null?n=!0:l.parseLine(e,t,i),{line:e,lineData:t,ended:n,next:r,current:u}}function u(){return{line:e,lineData:t,ended:n,next:r,current:u}}return{next:r,current:u}}exports.document=s;
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./parser.cjs");function a(i,u=" "){let r=s.createLineData(null,u);const t={ended:!1,clone(){return a(i.clone(),u)},async next(){if(r.line=await i.next(),r.line===null)return!0;s.parseLine(r)},current(){return t},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)},async content(e=-1,n=[]){var l;return e===-1&&(e=r.level+1),await t.next()||r.level<e?n.join(`
`):(n.push(((l=r.line)==null?void 0:l.slice(e))||""),t.content(e,n))},async seek(e,n=-1){return n===-1&&(n=r.level),await t.next()?!1:t.head()===e?t:r.level<n?!1:t.seek(e,n)}};return t}exports.useDocument=a;

View File

@@ -1,14 +1,42 @@
import { parseLine as a, LineData as o } from "./parser.js";
function f(u, i = " ") {
let e = null, n = o(), t = !1;
async function r() {
return e = await u(), e === null ? t = !0 : a(e, n, i), { line: e, lineData: n, ended: t, next: r, current: l };
}
function l() {
return { line: e, lineData: n, ended: t, next: r, current: l };
}
return { next: r, current: l };
import { parseLine as f, createLineData as s } from "./parser.js";
function d(t, l = " ") {
let n = s(null, l);
const i = {
ended: !1,
clone() {
return d(t.clone(), l);
},
async next() {
if (n.line = await t.next(), n.line === null)
return !0;
f(n);
},
current() {
return i;
},
line() {
var e;
return (e = n.line) == null ? void 0 : e.slice(n.offsetHead);
},
head() {
var e;
return (e = n.line) == null ? void 0 : e.slice(n.offsetHead, n.offsetTail);
},
tail() {
var e;
return (e = n.line) == null ? void 0 : e.slice(n.offsetTail);
},
async content(e = -1, r = []) {
var u;
return e === -1 && (e = n.level + 1), await i.next() || n.level < e ? r.join(`
`) : (r.push(((u = n.line) == null ? void 0 : u.slice(e)) || ""), i.content(e, r));
},
async seek(e, r = -1) {
return r === -1 && (r = n.level), await i.next() ? !1 : i.head() === e ? i : n.level < r ? !1 : i.seek(e, r);
}
};
return i;
}
export {
f as document
d as useDocument
};

View File

@@ -1 +1 @@
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./parser.cjs"),r=require("./document.cjs");exports.LineData=e.LineData;exports.parseLine=e.parseLine;exports.document=r.document;
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./parser.cjs"),r=require("./document.cjs");exports.createLineData=e.createLineData;exports.parseLine=e.parseLine;exports.useDocument=r.useDocument;

View File

@@ -1,7 +1,7 @@
import { LineData as r, parseLine as t } from "./parser.js";
import { document as m } from "./document.js";
import { createLineData as o, parseLine as t } from "./parser.js";
import { useDocument as m } from "./document.js";
export {
r as LineData,
m as document,
t as parseLine
o as createLineData,
t as parseLine,
m as useDocument
};

View File

@@ -1 +1 @@
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function s(){return{type:0,level:0,offsetHead:0,offsetTail:0}}function p(r,e,f=" "){if(typeof r!="string")throw new Error("'line' must be a string");if(typeof e!="object"||!e||typeof e.type!="number"||typeof e.level!="number")throw new Error("'lineData' must be an object with 'type' and 'level' integer properties");if(typeof f!="string"||f.length===0||f.length>1)throw new Error("'indent' must be a single-character string");let o=0,t=0;if(!r.length)e.type===1&&(t+=1),e.type===0&&(t=e.level),e.type=o,e.level=t,e.offsetHead=0,e.offsetTail=0;else{for(o=1;r[t]===f&&t<=e.level+1;)++t;for(e.type=o,e.level=t,e.offsetHead=t,e.offsetTail=t;r[e.offsetTail]&&r[e.offsetTail]!==" ";)++e.offsetTail}return e}exports.LineData=s;exports.parseLine=p;
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function f(e=null,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,t=0;if(!e.line.length)e.type===1&&(t+=1),e.type===0&&(t=e.level),e.type=r,e.level=t,e.offsetHead=0,e.offsetTail=0;else{for(r=1;e.line[t]===e.indent&&t<=e.level+1;)++t;for(e.type=r,e.level=t,e.offsetHead=t,e.offsetTail=t;e.line[e.offsetTail]&&e.line[e.offsetTail]!==" ";)++e.offsetTail}return e}exports.createLineData=f;exports.parseLine=o;

View File

@@ -1,25 +1,25 @@
function s() {
return { type: 0, level: 0, offsetHead: 0, offsetTail: 0 };
function t(e = null, r = " ") {
return { line: e, indent: r, type: 0, level: 0, offsetHead: 0, offsetTail: 0 };
}
function p(r, e, t = " ") {
if (typeof r != "string")
throw new Error("'line' must be a string");
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 'type' and 'level' integer properties");
if (typeof t != "string" || t.length === 0 || t.length > 1)
throw new Error("'indent' must be a single-character string");
let o = 0, f = 0;
if (!r.length)
e.type === 1 && (f += 1), e.type === 0 && (f = e.level), e.type = o, e.level = f, e.offsetHead = 0, e.offsetTail = 0;
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 (o = 1; r[f] === t && f <= e.level + 1; )
for (r = 1; e.line[f] === e.indent && f <= e.level + 1; )
++f;
for (e.type = o, e.level = f, e.offsetHead = f, e.offsetTail = f; r[e.offsetTail] && r[e.offsetTail] !== " "; )
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 {
s as LineData,
p as parseLine
t as createLineData,
o as parseLine
};

View File

@@ -0,0 +1,2 @@
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function i(r,n=0){const t=Array.isArray(r)?r:r.split(`
`),e={index:n-1,next:()=>(e.index++,e.index>=t.length?null:t[e.index]),clone:l=>i(r,l==null?n:e.index)};return e}exports.createStringReader=i;

View File

@@ -0,0 +1,12 @@
function l(e, r = 0) {
const t = Array.isArray(e) ? e : e.split(`
`), n = {
index: r - 1,
next: () => (n.index++, n.index >= t.length ? null : t[n.index]),
clone: (i) => l(e, i == null ? r : n.index)
};
return n;
}
export {
l as createStringReader
};

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={};function r(t){const a=e.createInterface({input:e.createReadStream(t,"utf-8")})[Symbol.asyncIterator]();return async()=>(await a.next()).value}exports.createReadlineReader=r;

View File

@@ -0,0 +1,10 @@
const e = {};
function n(t) {
const a = e.createInterface({
input: e.createReadStream(t, "utf-8")
})[Symbol.asyncIterator]();
return async () => (await a.next()).value;
}
export {
n as createReadlineReader
};