function a2s(summary){
return summary.split("\n").reduce((g,c,i) => {
let line = c.trimEnd()
if (line == '') return g
let clvl = getlvl(line)
if (g.trimstart == -1){
g.trimstart = clvl
}
if (g.trimstart != -1){
line = line.slice(g.trimstart, line.length)
clvl -= g.trimstart
}
console.log('======================================')
console.log('line+++', line)
line = line.trim()
console.log('line>>>', line)
line = line.replaceAll('\\"', ';;;;;')
let attrs2 = [...line.matchAll(/\w+="([^"]+)"/g)].reduce((g,c,i) => {
console.log('attrs2', c)
line = line.replace(c[0], '')
let [left, ...right] = c[0].split('=')
let val = right.join('=')
val = val.slice(1, val.length-1)
g[left] = val.replaceAll(';;;;;', '\\"')
return g
}, {})
let attrs = [...line.matchAll(/\w+=[^"][^ ]+/g)].reduce((g,c,i) => {
console.log('attrs', c)
line = line.replace(c[0], '')
let [left, ...right] = c[0].split('=')
g[left] = right.join('=')
return g
}, {})
for (let k in attrs2)
attrs[k] = attrs2[k]
line = line.trim()
console.log('line>>>2', line)
let lvl = g.lvl
let arr = g.arr
let db = g.db
let _ = 2
console.log(clvl, lvl, JSON.parse(JSON.stringify(arr)), JSON.parse(JSON.stringify(db)), _)
console.log('arr before', arr.map(d => d.name))
if (clvl > lvl){
if (clvl == 0){
db['name'] = line
db['children'] = []
for (let k in attrs)
db[k] = attrs[k]
arr.push(db)
}else{
let doc = {
'name': line,
'children': [],
...attrs,
}
arr[arr.length-1]['children'].push(doc)
arr.push(doc)
}
}else if (clvl == lvl){
let doc = {
'name': line,
'children': [],
...attrs,
}
arr = arr.slice(0, arr.length-1)
console.log('insert to', Math.floor(clvl/_)-1)
arr[Math.floor(clvl/_)-1]['children'].push(doc)
console.log(JSON.parse(JSON.stringify(db)))
arr.push(doc)
}else if (clvl < lvl){
arr = arr.slice(0, Math.ceil(clvl/_))
let doc = {
'name': line,
'children': [],
...attrs,
}
arr[arr.length-1]['children'].push(doc)
arr.push(doc)
}
g.lvl = clvl
g.arr = arr
console.log('arr after', arr.map(d => d.name))
return g
}, {lvl:-1, _:2, db:{}, arr: [], trimstart: -1})
}