aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/postcss/lib/list.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/postcss/lib/list.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/postcss/lib/list.js')
-rw-r--r--vanilla/node_modules/postcss/lib/list.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/vanilla/node_modules/postcss/lib/list.js b/vanilla/node_modules/postcss/lib/list.js
new file mode 100644
index 0000000..1b31f98
--- /dev/null
+++ b/vanilla/node_modules/postcss/lib/list.js
@@ -0,0 +1,58 @@
+'use strict'
+
+let list = {
+ comma(string) {
+ return list.split(string, [','], true)
+ },
+
+ space(string) {
+ let spaces = [' ', '\n', '\t']
+ return list.split(string, spaces)
+ },
+
+ split(string, separators, last) {
+ let array = []
+ let current = ''
+ let split = false
+
+ let func = 0
+ let inQuote = false
+ let prevQuote = ''
+ let escape = false
+
+ for (let letter of string) {
+ if (escape) {
+ escape = false
+ } else if (letter === '\\') {
+ escape = true
+ } else if (inQuote) {
+ if (letter === prevQuote) {
+ inQuote = false
+ }
+ } else if (letter === '"' || letter === "'") {
+ inQuote = true
+ prevQuote = letter
+ } else if (letter === '(') {
+ func += 1
+ } else if (letter === ')') {
+ if (func > 0) func -= 1
+ } else if (func === 0) {
+ if (separators.includes(letter)) split = true
+ }
+
+ if (split) {
+ if (current !== '') array.push(current.trim())
+ current = ''
+ split = false
+ } else {
+ current += letter
+ }
+ }
+
+ if (last || current !== '') array.push(current.trim())
+ return array
+ }
+}
+
+module.exports = list
+list.default = list