'use strict' let list = { split (string, separators, last) { let array = [] let current = '' let split = false let func = 0 let quote = false let escape = false for (let letter of string) { if (quote) { if (escape) { escape = false } else if (letter === '\\') { escape = true } else if (letter === quote) { quote = false } } else if (letter === '"' || letter === "'") { quote = 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