UNPKG

1.34 kBJavaScriptView Raw
1"use strict";
2
3function last(array) {
4 return array[array.length - 1];
5}
6
7var brackets = {
8 /**
9 * Parse string to nodes tree
10 */
11 parse: function parse(str) {
12 var current = [''];
13 var stack = [current];
14
15 for (var i = 0; i < str.length; i++) {
16 var sym = str[i];
17
18 if (sym === '(') {
19 current = [''];
20 last(stack).push(current);
21 stack.push(current);
22 continue;
23 }
24
25 if (sym === ')') {
26 stack.pop();
27 current = last(stack);
28 current.push('');
29 continue;
30 }
31
32 current[current.length - 1] += sym;
33 }
34
35 return stack[0];
36 },
37
38 /**
39 * Generate output string by nodes tree
40 */
41 stringify: function stringify(ast) {
42 var result = '';
43
44 for (var _iterator = ast, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
45 var _ref;
46
47 if (_isArray) {
48 if (_i >= _iterator.length) break;
49 _ref = _iterator[_i++];
50 } else {
51 _i = _iterator.next();
52 if (_i.done) break;
53 _ref = _i.value;
54 }
55
56 var i = _ref;
57
58 if (typeof i === 'object') {
59 result += "(" + brackets.stringify(i) + ")";
60 continue;
61 }
62
63 result += i;
64 }
65
66 return result;
67 }
68};
69module.exports = brackets;
\No newline at end of file