node/deps/npm/node_modules/qw/qw.js
Myles Borins ace4fe566f
deps: update npm to 5.5.1
Closes: https://github.com/nodejs/node/pull/16280

PR-URL: https://github.com/nodejs/node/pull/16509
Fixes: https://github.com/nodejs/node/issues/14161
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
2017-10-29 21:32:15 -04:00

44 lines
1.0 KiB
JavaScript

'use strict'
module.exports = qw
function appendLast (arr, str) {
var last = arr.length - 1
if (last < 0) {
arr.push(str)
} else {
var lastValue = String(arr[last])
return arr[last] = lastValue + String(str)
}
}
function qw () {
const args = Object.assign([], arguments[0])
const values = [].slice.call(arguments, 1)
const words = []
let lastWordWasValue = false
while (args.length) {
const arg = args.shift()
const concatValue = arg.length === 0 || arg.slice(-1) !== ' '
if (arg.trim() !== '') {
const theseWords = arg.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ').split(/ /)
if (lastWordWasValue && arg[0] !== ' ') {
appendLast(words, theseWords.shift())
}
words.push.apply(words, theseWords)
}
if (values.length) {
const val = values.shift()
if (concatValue) {
appendLast(words, val)
} else {
words.push(val)
}
lastWordWasValue = true
} else {
lastWordWasValue = false
}
}
return words
}