X-Git-Url: https://dreyeck.freedombox.rocks/gitweb/idiomatic.git/blobdiff_plain/f0a44e8482fdfa29b5a32d6a407509efe9984e3c..1d14f8b4c3061f3bbecbbd2df4c230a9dd1fd985:/index.js diff --git a/index.js b/index.js index 020a168..b1a1a24 100644 --- a/index.js +++ b/index.js @@ -22,14 +22,15 @@ async function load(file) { // P A G E S -const style = title => ` +const style = (title,here='') => ` - — ${title} —` +
— ${title}  ${escape(here)}  —
` const app = express() app.get('/index', async (req,res,next) => { @@ -59,39 +60,46 @@ app.get('/terminal', (req,res) => { const lits = counter() const doit = branch => {if(branch.type==type) lits.count(branch[field])} visitor.wander(mods,doit) - const result = style('terminal')+` + const result = style('terminal',type)+`

${lits.size()} uniques
${lits.total()} total

${lits.tally() - .map(([k,v]) => `
${v}${escape(k)}`) + .map(([k,v]) => `
${v}${escape(k)}`) .join("\n")}
` res.send(result) }) app.get('/usage', (req,res) => { - const {type,field,key,up,see} = req.query + const {type,field,key,width,depth} = req.query const list = [] const files = counter() const doit = (branch,stack) => { if(branch.type==type && branch[field]==key)list.push(` - + ${stack.at(-1)} - ${sxpr(stack[up ?? 2], see ?? 3)}`) + ${sxpr(stack[width ?? 2], depth ?? 3)}`) } visitor.wander(mods,doit) const vis = row => row.split(/\n/)[3].trim().replaceAll(/<.*?>/g,'').replaceAll(/\.\.+/g,'..') list.sort((a,b) => vis(a)>vis(b) ? 1 : -1) - res.send(style('usage')+` -

${files.tally().map(([k,v]) => `
${v}${k}`).join("\n")}
+ const q = (id,delta) => Object.entries(req.query) + .map(([k,v]) => k == id ? `${k}=${+v+delta}` : `${k}=${v}`) + .join('&') + const p = id => ` + ` + const m = id => ` − ` + const d = id => `${id} ${p(id)} ${m(id)}` + res.send(style('usage',key)+` +

${files.total()} uses in ${files.size()} files + ${files.tally().map(([k,v]) => `
${v}${k}`).join("\n")}
+

— ${d('width')} ${d('depth')} —

${list.join("\n")}
`) }) app.get('/nesting', (req,res) => { - const {file,type,start,end} = req.query + const {file,type,key,start,end} = req.query const result = [] const doit = (branch,stack) => { if(stack.at(-1)==file && branch.type==type && branch.start==start && branch.end==end) { - const file = stack.at(-1) const path = stack.slice(0,-1).map((n,i) => ` ${n.type}: @@ -103,7 +111,7 @@ app.get('/nesting', (req,res) => { } } visitor.wander(mods,doit) - res.send(style('nesting')+`${result.join("


")}`) + res.send(style('nesting',key)+`${result.join("
")}`) })