You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict'
let list = { 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 },
space(string) { let spaces = [' ', '\n', '\t'] return list.split(string, spaces) },
comma(string) { return list.split(string, [','], true) } }
module.exports = list list.default = list
|