1 | "use strict";
|
2 |
|
3 | function last(array) {
|
4 | return array[array.length - 1];
|
5 | }
|
6 |
|
7 | var brackets = {
|
8 | |
9 |
|
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 |
|
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 | };
|
69 | module.exports = brackets; |
\ | No newline at end of file |