1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- '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 (escape) {
- escape = false
- } else if (letter === '\\') {
- escape = true
- } else if (quote) {
- 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
- list.default = list
|