Fix bug in store, where not all items were connected properly

This commit is contained in:
Peter Stuifzand 2020-10-25 15:18:39 +01:00
parent 057b8d2f46
commit 573a138709
2 changed files with 16 additions and 4 deletions

0
TODO.md Normal file
View File

View File

@ -349,22 +349,34 @@ function Store(inputData) {
const stack = _.reduce(items, (stack, item) => { const stack = _.reduce(items, (stack, item) => {
if (stack.length === 0) { if (stack.length === 0) {
// console.log(`push ${item.text} on stack`)
return [[item]] return [[item]]
} }
const stackIndented = top(stack)[0].indented let stackIndented = top(stack)[0].indented
const itemIndented = item.indented const itemIndented = item.indented
if (itemIndented > stackIndented) { if (itemIndented > stackIndented) {
push(stack, [Object.assign({}, item)]) push(stack, [Object.assign({}, item)]) // [ ... ] => [ ..., item ]
// console.log(`push ${item.text} on stack`)
} else { } else {
// console.log(`itemIndented = ${itemIndented}, stackIndented = ${stackIndented}`)
while (stack.length > 1 && itemIndented < stackIndented) { while (stack.length > 1 && itemIndented < stackIndented) {
let children = top(stack) let children = top(stack)
pop(stack) pop(stack) // [ ..., A ] => [ ... ]
stackIndented = top(stack)[0].indented
// console.log(`pop stack`)
let cur = top(stack) let cur = top(stack)
cur[cur.length - 1].children = children cur[cur.length - 1].children = children
// console.log(`set children for ${cur[cur.length-1].text}`)
} }
if (itemIndented === stackIndented) {
top(stack).push(Object.assign({}, item)) top(stack).push(Object.assign({}, item))
// console.log(`add child ${item.text}`)
} else {
push(stack, [Object.assign({}, item)])
// console.log(`push ${item.text} on stack`)
}
} }
return stack return stack
}, []) }, [])