aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/qw/qw.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/qw/qw.js')
-rw-r--r--deps/npm/node_modules/qw/qw.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/deps/npm/node_modules/qw/qw.js b/deps/npm/node_modules/qw/qw.js
new file mode 100644
index 0000000000..239e5a565e
--- /dev/null
+++ b/deps/npm/node_modules/qw/qw.js
@@ -0,0 +1,43 @@
+'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
+}