| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | 
							- /*!
 
-  * split-string <https://github.com/jonschlinkert/split-string>
 
-  *
 
-  * Copyright (c) 2015-2017, Jon Schlinkert.
 
-  * Released under the MIT License.
 
-  */
 
- 'use strict';
 
- var extend = require('extend-shallow');
 
- module.exports = function(str, options, fn) {
 
-   if (typeof str !== 'string') {
 
-     throw new TypeError('expected a string');
 
-   }
 
-   if (typeof options === 'function') {
 
-     fn = options;
 
-     options = null;
 
-   }
 
-   // allow separator to be defined as a string
 
-   if (typeof options === 'string') {
 
-     options = { sep: options };
 
-   }
 
-   var opts = extend({sep: '.'}, options);
 
-   var quotes = opts.quotes || ['"', "'", '`'];
 
-   var brackets;
 
-   if (opts.brackets === true) {
 
-     brackets = {
 
-       '<': '>',
 
-       '(': ')',
 
-       '[': ']',
 
-       '{': '}'
 
-     };
 
-   } else if (opts.brackets) {
 
-     brackets = opts.brackets;
 
-   }
 
-   var tokens = [];
 
-   var stack = [];
 
-   var arr = [''];
 
-   var sep = opts.sep;
 
-   var len = str.length;
 
-   var idx = -1;
 
-   var closeIdx;
 
-   function expected() {
 
-     if (brackets && stack.length) {
 
-       return brackets[stack[stack.length - 1]];
 
-     }
 
-   }
 
-   while (++idx < len) {
 
-     var ch = str[idx];
 
-     var next = str[idx + 1];
 
-     var tok = { val: ch, idx: idx, arr: arr, str: str };
 
-     tokens.push(tok);
 
-     if (ch === '\\') {
 
-       tok.val = keepEscaping(opts, str, idx) === true ? (ch + next) : next;
 
-       tok.escaped = true;
 
-       if (typeof fn === 'function') {
 
-         fn(tok);
 
-       }
 
-       arr[arr.length - 1] += tok.val;
 
-       idx++;
 
-       continue;
 
-     }
 
-     if (brackets && brackets[ch]) {
 
-       stack.push(ch);
 
-       var e = expected();
 
-       var i = idx + 1;
 
-       if (str.indexOf(e, i + 1) !== -1) {
 
-         while (stack.length && i < len) {
 
-           var s = str[++i];
 
-           if (s === '\\') {
 
-             s++;
 
-             continue;
 
-           }
 
-           if (quotes.indexOf(s) !== -1) {
 
-             i = getClosingQuote(str, s, i + 1);
 
-             continue;
 
-           }
 
-           e = expected();
 
-           if (stack.length && str.indexOf(e, i + 1) === -1) {
 
-             break;
 
-           }
 
-           if (brackets[s]) {
 
-             stack.push(s);
 
-             continue;
 
-           }
 
-           if (e === s) {
 
-             stack.pop();
 
-           }
 
-         }
 
-       }
 
-       closeIdx = i;
 
-       if (closeIdx === -1) {
 
-         arr[arr.length - 1] += ch;
 
-         continue;
 
-       }
 
-       ch = str.slice(idx, closeIdx + 1);
 
-       tok.val = ch;
 
-       tok.idx = idx = closeIdx;
 
-     }
 
-     if (quotes.indexOf(ch) !== -1) {
 
-       closeIdx = getClosingQuote(str, ch, idx + 1);
 
-       if (closeIdx === -1) {
 
-         arr[arr.length - 1] += ch;
 
-         continue;
 
-       }
 
-       if (keepQuotes(ch, opts) === true) {
 
-         ch = str.slice(idx, closeIdx + 1);
 
-       } else {
 
-         ch = str.slice(idx + 1, closeIdx);
 
-       }
 
-       tok.val = ch;
 
-       tok.idx = idx = closeIdx;
 
-     }
 
-     if (typeof fn === 'function') {
 
-       fn(tok, tokens);
 
-       ch = tok.val;
 
-       idx = tok.idx;
 
-     }
 
-     if (tok.val === sep && tok.split !== false) {
 
-       arr.push('');
 
-       continue;
 
-     }
 
-     arr[arr.length - 1] += tok.val;
 
-   }
 
-   return arr;
 
- };
 
- function getClosingQuote(str, ch, i, brackets) {
 
-   var idx = str.indexOf(ch, i);
 
-   if (str.charAt(idx - 1) === '\\') {
 
-     return getClosingQuote(str, ch, idx + 1);
 
-   }
 
-   return idx;
 
- }
 
- function keepQuotes(ch, opts) {
 
-   if (opts.keepDoubleQuotes === true && ch === '"') return true;
 
-   if (opts.keepSingleQuotes === true && ch === "'") return true;
 
-   return opts.keepQuotes;
 
- }
 
- function keepEscaping(opts, str, idx) {
 
-   if (typeof opts.keepEscaping === 'function') {
 
-     return opts.keepEscaping(str, idx);
 
-   }
 
-   return opts.keepEscaping === true || str[idx + 1] === '\\';
 
- }
 
 
  |