1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- 'use strict';
-
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
- var last = 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 === 'undefined' ? 'undefined' : _typeof(i)) === 'object') {
- result += '(' + brackets.stringify(i) + ')';
- continue;
- }
-
- result += i;
- }
- return result;
- }
- };
-
- module.exports = brackets;
|