frontend/.pnpm-store/v3/files/72/200e430feec2373e9001d50efbc974714a6a1a582c2461f7828199211f2ac16a073f4a43102257a3c9c28e41d3e956afd2c2f2af95c09254c179e846b78e76

52 lines
852 B
Plaintext

function last (array) {
return array[array.length - 1]
}
let brackets = {
/**
* Parse string to nodes tree
*/
parse (str) {
let current = ['']
let stack = [current]
for (let sym of str) {
if (sym === '(') {
current = ['']
last(stack).push(current)
stack.push(current)
continue
}
if (sym === ')') {
stack.pop()
current = last(stack)
current.push('')
continue
}
current[current.length - 1] += sym
}
return stack[0]
},
/**
* Generate output string by nodes tree
*/
stringify (ast) {
let result = ''
for (let i of ast) {
if (typeof i === 'object') {
result += `(${brackets.stringify(i)})`
continue
}
result += i
}
return result
}
}
module.exports = brackets