Files
30-seconds-of-code/node_modules/comma-separated-tokens/index.js
2019-08-20 15:52:05 +02:00

53 lines
1.1 KiB
JavaScript

'use strict'
exports.parse = parse
exports.stringify = stringify
var comma = ','
var space = ' '
var empty = ''
// Parse comma-separated tokens to an array.
function parse(value) {
var values = []
var input = String(value || empty)
var index = input.indexOf(comma)
var lastIndex = 0
var end = false
var val
while (!end) {
if (index === -1) {
index = input.length
end = true
}
val = input.slice(lastIndex, index).trim()
if (val || !end) {
values.push(val)
}
lastIndex = index + 1
index = input.indexOf(comma, lastIndex)
}
return values
}
// Compile an array to comma-separated tokens.
// `options.padLeft` (default: `true`) pads a space left of each token, and
// `options.padRight` (default: `false`) pads a space to the right of each token.
function stringify(values, options) {
var settings = options || {}
var left = settings.padLeft === false ? empty : space
var right = settings.padRight ? space : empty
// Ensure the last empty entry is seen.
if (values[values.length - 1] === empty) {
values = values.concat(empty)
}
return values.join(right + comma + left).trim()
}