summaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/brackets.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/autoprefixer/lib/brackets.js
Docs
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