Mini Shell
'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
}
Zerion Mini Shell 1.0