All files test_util.ts

100% Statements 23/23
100% Branches 6/6
100% Functions 1/1
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27                104x 89x   89x 56x   89x 9x   89x 9x     89x 68x   6x    
import { Word, Lookup } from './types'
 
import { Node } from './node'
 
 
type SimplifiedNode = Word | Lookup | { [x: string]: Node[] } | null
type SimplifiedTrie = (SimplifiedTrie | SimplifiedNode)[]
 
export function simplify(node: Node, simplified: SimplifiedTrie = []): SimplifiedTrie {
    let paths: SimplifiedTrie = []
 
    for (const c of Object.values(node.next.char)) {
        paths.push(simplify(c, [c.value]))
    }     
    for (const w of Object.values(node.next.word)) {
        paths.push(simplify(w, [' ', w.value as string]))
    }
    for (const r of Object.values(node.next.lookup)) {
        paths.push(simplify(r, [{ [r.value as string]: r.contexts }]))
    }
 
    if (paths.length === 0) return simplified
    if (paths.length === 1) return simplified.concat(paths[0])
 
    return [...simplified, paths]
}