summaryrefslogtreecommitdiff
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.js51
1 files changed, 51 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..3bb1dad
--- /dev/null
+++ b/node_modules/autoprefixer/lib/brackets.js
@@ -0,0 +1,51 @@
+function last(array) {
+ return array[array.length - 1]
+}
+
+let brackets = {
+ /**
+ * Parse string to nodes tree
+ */
+ parse(str) {
+ let current = ['']
+ let stack = [current]
+
+ for (let sym of str) {
+ 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(ast) {
+ let result = ''
+ for (let i of ast) {
+ if (typeof i === 'object') {
+ result += `(${brackets.stringify(i)})`
+ continue
+ }
+
+ result += i
+ }
+ return result
+ }
+}
+
+module.exports = brackets