Sha256: 6df35bac40d4c449ae8e9078776e5c17c529337830a01472761902a546032f52

Contents?: true

Size: 1.2 KB

Versions: 27

Compression:

Stored size: 1.2 KB

Contents

'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

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
clapton-0.0.6 lib/clapton/javascripts/node_modules/postcss/lib/list.js
clapton-0.0.5 lib/clapton/javascripts/node_modules/postcss/lib/list.js
clapton-0.0.4 lib/clapton/javascripts/node_modules/postcss/lib/list.js
clapton-0.0.3 lib/clapton/javascripts/node_modules/postcss/lib/list.js
clapton-0.0.2 lib/clapton/javascripts/node_modules/postcss/lib/list.js
clapton-0.0.1 lib/clapton/javascripts/node_modules/postcss/lib/list.js
decidim-0.26.8 packages/eslint-config/node_modules/postcss/lib/list.js