Parse parentheses from a string, return folded arrays.
```js
var parse = require('parenthesis')
// Parse into nested format
parse('a(bc{d})')
// 'a(', 'b', 'c{', 'd', '}', '', ')'
// Parse into flat format with cross-references
parse('a(bc{d})', {

brackets: ['()'],
escape: '\\',
flat: true
})
// 'a(\\1)', 'bc{d}'
// Stringify nested format
parse.stringify('a(', 'b', 'c{', 'd', '}', '', ')')
// 'a(bc{d})'
// Stringify flat format with cross-references
parse.stringify('a(\\1)', 'bc{d}', {flat: true, escape: '\\'})
// 'a(bc{d})'
```
API
tokens = paren.parse(string, brackets|opts?)
Return array with tokens. Option | Default | Meaning ---|---|---brackets
| ['{}', '[]', '()']
| Single brackets string or list of strings to detect brackets. Can be repeating brackets eg. "" or ''
.
escape
| '___'
| Escape prefix for flat references.
flat
| false
| Return flat array instead of nested arrays.
str = paren.stringify(tokens, {flat}?)
Stringify tokens back. Pass{flat: true}
flag for flat tokens array.