aboutsummaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/brackets.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/autoprefixer/lib/brackets.js')
-rw-r--r--node_modules/autoprefixer/lib/brackets.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/brackets.js b/node_modules/autoprefixer/lib/brackets.js
new file mode 100644
index 0000000..c548609
--- /dev/null
+++ b/node_modules/autoprefixer/lib/brackets.js
@@ -0,0 +1,80 @@
+"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 _iterator = str, _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 sym = _ref;
+
+ 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 _iterator2 = ast, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
+
+ var i = _ref2;
+
+ if (typeof i === 'object') {
+ result += "(" + brackets.stringify(i) + ")";
+ continue;
+ }
+
+ result += i;
+ }
+
+ return result;
+ }
+};
+module.exports = brackets; \ No newline at end of file