| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /**
- * @typedef Options
- * Configuration for `stringify`.
- * @property {boolean} [padLeft=true]
- * Whether to pad a space before a token.
- * @property {boolean} [padRight=false]
- * Whether to pad a space after a token.
- */
- /**
- * @typedef {Options} StringifyOptions
- * Please use `StringifyOptions` instead.
- */
- /**
- * Parse comma-separated tokens to an array.
- *
- * @param {string} value
- * Comma-separated tokens.
- * @returns {Array<string>}
- * List of tokens.
- */
- export function parse(value) {
- /** @type {Array<string>} */
- const tokens = []
- const input = String(value || '')
- let index = input.indexOf(',')
- let start = 0
- /** @type {boolean} */
- let end = false
- while (!end) {
- if (index === -1) {
- index = input.length
- end = true
- }
- const token = input.slice(start, index).trim()
- if (token || !end) {
- tokens.push(token)
- }
- start = index + 1
- index = input.indexOf(',', start)
- }
- return tokens
- }
- /**
- * Serialize an array of strings or numbers to comma-separated tokens.
- *
- * @param {Array<string|number>} values
- * List of tokens.
- * @param {Options} [options]
- * Configuration for `stringify` (optional).
- * @returns {string}
- * Comma-separated tokens.
- */
- export function stringify(values, options) {
- const settings = options || {}
- // Ensure the last empty entry is seen.
- const input = values[values.length - 1] === '' ? [...values, ''] : values
- return input
- .join(
- (settings.padRight ? ' ' : '') +
- ',' +
- (settings.padLeft === false ? '' : ' ')
- )
- .trim()
- }
|