12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- (function() {
- var brackets, last;
- last = function(array) {
- return array[array.length - 1];
- };
- brackets = {
- parse: function(str) {
- var current, j, len, stack, sym;
- current = [''];
- stack = [current];
- for (j = 0, len = str.length; j < len; j++) {
- sym = str[j];
- if (sym === '(') {
- current = [''];
- last(stack).push(current);
- stack.push(current);
- } else if (sym === ')') {
- stack.pop();
- current = last(stack);
- current.push('');
- } else {
- current[current.length - 1] += sym;
- }
- }
- return stack[0];
- },
- stringify: function(ast) {
- var i, j, len, result;
- result = '';
- for (j = 0, len = ast.length; j < len; j++) {
- i = ast[j];
- if (typeof i === 'object') {
- result += '(' + brackets.stringify(i) + ')';
- } else {
- result += i;
- }
- }
- return result;
- }
- };
- module.exports = brackets;
- }).call(this);
|