123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- "use strict";
- function last(array) {
- return array[array.length - 1];
- }
- var brackets = {
- /**
- * Parse string to nodes tree
- */
- parse: function parse(str) {
- var current = [''];
- var stack = [current];
- for (var i = 0; i < str.length; i++) {
- var sym = str[i];
- 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: function stringify(ast) {
- var result = '';
- for (var _iterator = ast, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
- var i = _ref;
- if (typeof i === 'object') {
- result += "(" + brackets.stringify(i) + ")";
- continue;
- }
- result += i;
- }
- return result;
- }
- };
- module.exports = brackets;
|