diff --git a/dist/underscore.string.js b/dist/underscore.string.js deleted file mode 100644 index 884ccc37..00000000 --- a/dist/underscore.string.js +++ /dev/null @@ -1,1369 +0,0 @@ -/* -* Underscore.string -* (c) 2010 Esa-Matti Suuronen -* Underscore.string is freely distributable under the terms of the MIT license. -* Documentation: https://github.com/epeli/underscore.string -* Some code is borrowed from MooTools and Alexandru Marasteanu. -* Version '3.3.4' -* @preserve -*/ - -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.s = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0 ? str.match(new RegExp('.{1,' + step + '}', 'g')) : [str]; -}; - -},{}],5:[function(require,module,exports){ -var capitalize = require('./capitalize'); -var camelize = require('./camelize'); -var makeString = require('./helper/makeString'); - -module.exports = function classify(str) { - str = makeString(str); - return capitalize(camelize(str.replace(/[\W_]/g, ' ')).replace(/\s/g, '')); -}; - -},{"./camelize":1,"./capitalize":2,"./helper/makeString":20}],6:[function(require,module,exports){ -var trim = require('./trim'); - -module.exports = function clean(str) { - return trim(str).replace(/\s\s+/g, ' '); -}; - -},{"./trim":65}],7:[function(require,module,exports){ - -var makeString = require('./helper/makeString'); - -var from = 'ąàáäâãåæăćčĉęèéëêĝĥìíïîĵłľńňòóöőôõðøśșşšŝťțţŭùúüűûñÿýçżźž', - to = 'aaaaaaaaaccceeeeeghiiiijllnnoooooooossssstttuuuuuunyyczzz'; - -from += from.toUpperCase(); -to += to.toUpperCase(); - -to = to.split(''); - -// for tokens requireing multitoken output -from += 'ß'; -to.push('ss'); - - -module.exports = function cleanDiacritics(str) { - return makeString(str).replace(/.{1}/g, function(c){ - var index = from.indexOf(c); - return index === -1 ? c : to[index]; - }); -}; - -},{"./helper/makeString":20}],8:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function(str, substr) { - str = makeString(str); - substr = makeString(substr); - - if (str.length === 0 || substr.length === 0) return 0; - - return str.split(substr).length - 1; -}; - -},{"./helper/makeString":20}],9:[function(require,module,exports){ -var trim = require('./trim'); - -module.exports = function dasherize(str) { - return trim(str).replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase(); -}; - -},{"./trim":65}],10:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function decapitalize(str) { - str = makeString(str); - return str.charAt(0).toLowerCase() + str.slice(1); -}; - -},{"./helper/makeString":20}],11:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -function getIndent(str) { - var matches = str.match(/^[\s\\t]*/gm); - var indent = matches[0].length; - - for (var i = 1; i < matches.length; i++) { - indent = Math.min(matches[i].length, indent); - } - - return indent; -} - -module.exports = function dedent(str, pattern) { - str = makeString(str); - var indent = getIndent(str); - var reg; - - if (indent === 0) return str; - - if (typeof pattern === 'string') { - reg = new RegExp('^' + pattern, 'gm'); - } else { - reg = new RegExp('^[ \\t]{' + indent + '}', 'gm'); - } - - return str.replace(reg, ''); -}; - -},{"./helper/makeString":20}],12:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var toPositive = require('./helper/toPositive'); - -module.exports = function endsWith(str, ends, position) { - str = makeString(str); - ends = '' + ends; - if (typeof position == 'undefined') { - position = str.length - ends.length; - } else { - position = Math.min(toPositive(position), str.length) - ends.length; - } - return position >= 0 && str.indexOf(ends, position) === position; -}; - -},{"./helper/makeString":20,"./helper/toPositive":22}],13:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var escapeChars = require('./helper/escapeChars'); - -var regexString = '['; -for(var key in escapeChars) { - regexString += key; -} -regexString += ']'; - -var regex = new RegExp( regexString, 'g'); - -module.exports = function escapeHTML(str) { - - return makeString(str).replace(regex, function(m) { - return '&' + escapeChars[m] + ';'; - }); -}; - -},{"./helper/escapeChars":17,"./helper/makeString":20}],14:[function(require,module,exports){ -module.exports = function() { - var result = {}; - - for (var prop in this) { - if (!this.hasOwnProperty(prop) || prop.match(/^(?:include|contains|reverse|join|map|wrap)$/)) continue; - result[prop] = this[prop]; - } - - return result; -}; - -},{}],15:[function(require,module,exports){ -var makeString = require('./makeString'); - -module.exports = function adjacent(str, direction) { - str = makeString(str); - if (str.length === 0) { - return ''; - } - return str.slice(0, -1) + String.fromCharCode(str.charCodeAt(str.length - 1) + direction); -}; - -},{"./makeString":20}],16:[function(require,module,exports){ -var escapeRegExp = require('./escapeRegExp'); - -module.exports = function defaultToWhiteSpace(characters) { - if (characters == null) - return '\\s'; - else if (characters.source) - return characters.source; - else - return '[' + escapeRegExp(characters) + ']'; -}; - -},{"./escapeRegExp":18}],17:[function(require,module,exports){ -/* We're explicitly defining the list of entities we want to escape. -nbsp is an HTML entity, but we don't want to escape all space characters in a string, hence its omission in this map. - -*/ -var escapeChars = { - '¢' : 'cent', - '£' : 'pound', - '¥' : 'yen', - '€': 'euro', - '©' :'copy', - '®' : 'reg', - '<' : 'lt', - '>' : 'gt', - '"' : 'quot', - '&' : 'amp', - '\'' : '#39' -}; - -module.exports = escapeChars; - -},{}],18:[function(require,module,exports){ -var makeString = require('./makeString'); - -module.exports = function escapeRegExp(str) { - return makeString(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -},{"./makeString":20}],19:[function(require,module,exports){ -/* -We're explicitly defining the list of entities that might see in escape HTML strings -*/ -var htmlEntities = { - nbsp: ' ', - cent: '¢', - pound: '£', - yen: '¥', - euro: '€', - copy: '©', - reg: '®', - lt: '<', - gt: '>', - quot: '"', - amp: '&', - apos: '\'' -}; - -module.exports = htmlEntities; - -},{}],20:[function(require,module,exports){ -/** - * Ensure some object is a coerced to a string - **/ -module.exports = function makeString(object) { - if (object == null) return ''; - return '' + object; -}; - -},{}],21:[function(require,module,exports){ -module.exports = function strRepeat(str, qty){ - if (qty < 1) return ''; - var result = ''; - while (qty > 0) { - if (qty & 1) result += str; - qty >>= 1, str += str; - } - return result; -}; - -},{}],22:[function(require,module,exports){ -module.exports = function toPositive(number) { - return number < 0 ? 0 : (+number || 0); -}; - -},{}],23:[function(require,module,exports){ -var capitalize = require('./capitalize'); -var underscored = require('./underscored'); -var trim = require('./trim'); - -module.exports = function humanize(str) { - return capitalize(trim(underscored(str).replace(/_id$/, '').replace(/_/g, ' '))); -}; - -},{"./capitalize":2,"./trim":65,"./underscored":67}],24:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function include(str, needle) { - if (needle === '') return true; - return makeString(str).indexOf(needle) !== -1; -}; - -},{"./helper/makeString":20}],25:[function(require,module,exports){ -/* -* Underscore.string -* (c) 2010 Esa-Matti Suuronen -* Underscore.string is freely distributable under the terms of the MIT license. -* Documentation: https://github.com/epeli/underscore.string -* Some code is borrowed from MooTools and Alexandru Marasteanu. -* Version '3.3.4' -* @preserve -*/ - -'use strict'; - -function s(value) { - /* jshint validthis: true */ - if (!(this instanceof s)) return new s(value); - this._wrapped = value; -} - -s.VERSION = '3.3.4'; - -s.isBlank = require('./isBlank'); -s.stripTags = require('./stripTags'); -s.capitalize = require('./capitalize'); -s.decapitalize = require('./decapitalize'); -s.chop = require('./chop'); -s.trim = require('./trim'); -s.clean = require('./clean'); -s.cleanDiacritics = require('./cleanDiacritics'); -s.count = require('./count'); -s.chars = require('./chars'); -s.swapCase = require('./swapCase'); -s.escapeHTML = require('./escapeHTML'); -s.unescapeHTML = require('./unescapeHTML'); -s.splice = require('./splice'); -s.insert = require('./insert'); -s.replaceAll = require('./replaceAll'); -s.include = require('./include'); -s.join = require('./join'); -s.lines = require('./lines'); -s.dedent = require('./dedent'); -s.reverse = require('./reverse'); -s.startsWith = require('./startsWith'); -s.endsWith = require('./endsWith'); -s.pred = require('./pred'); -s.succ = require('./succ'); -s.titleize = require('./titleize'); -s.camelize = require('./camelize'); -s.underscored = require('./underscored'); -s.dasherize = require('./dasherize'); -s.classify = require('./classify'); -s.humanize = require('./humanize'); -s.ltrim = require('./ltrim'); -s.rtrim = require('./rtrim'); -s.truncate = require('./truncate'); -s.prune = require('./prune'); -s.words = require('./words'); -s.pad = require('./pad'); -s.lpad = require('./lpad'); -s.rpad = require('./rpad'); -s.lrpad = require('./lrpad'); -s.sprintf = require('./sprintf'); -s.vsprintf = require('./vsprintf'); -s.toNumber = require('./toNumber'); -s.numberFormat = require('./numberFormat'); -s.strRight = require('./strRight'); -s.strRightBack = require('./strRightBack'); -s.strLeft = require('./strLeft'); -s.strLeftBack = require('./strLeftBack'); -s.toSentence = require('./toSentence'); -s.toSentenceSerial = require('./toSentenceSerial'); -s.slugify = require('./slugify'); -s.surround = require('./surround'); -s.quote = require('./quote'); -s.unquote = require('./unquote'); -s.repeat = require('./repeat'); -s.naturalCmp = require('./naturalCmp'); -s.levenshtein = require('./levenshtein'); -s.toBoolean = require('./toBoolean'); -s.exports = require('./exports'); -s.escapeRegExp = require('./helper/escapeRegExp'); -s.wrap = require('./wrap'); -s.map = require('./map'); - -// Aliases -s.strip = s.trim; -s.lstrip = s.ltrim; -s.rstrip = s.rtrim; -s.center = s.lrpad; -s.rjust = s.lpad; -s.ljust = s.rpad; -s.contains = s.include; -s.q = s.quote; -s.toBool = s.toBoolean; -s.camelcase = s.camelize; -s.mapChars = s.map; - - -// Implement chaining -s.prototype = { - value: function value() { - return this._wrapped; - } -}; - -function fn2method(key, fn) { - if (typeof fn !== 'function') return; - s.prototype[key] = function() { - var args = [this._wrapped].concat(Array.prototype.slice.call(arguments)); - var res = fn.apply(null, args); - // if the result is non-string stop the chain and return the value - return typeof res === 'string' ? new s(res) : res; - }; -} - -// Copy functions to instance methods for chaining -for (var key in s) fn2method(key, s[key]); - -fn2method('tap', function tap(string, fn) { - return fn(string); -}); - -function prototype2method(methodName) { - fn2method(methodName, function(context) { - var args = Array.prototype.slice.call(arguments, 1); - return String.prototype[methodName].apply(context, args); - }); -} - -var prototypeMethods = [ - 'toUpperCase', - 'toLowerCase', - 'split', - 'replace', - 'slice', - 'substring', - 'substr', - 'concat' -]; - -for (var method in prototypeMethods) prototype2method(prototypeMethods[method]); - - -module.exports = s; - -},{"./camelize":1,"./capitalize":2,"./chars":3,"./chop":4,"./classify":5,"./clean":6,"./cleanDiacritics":7,"./count":8,"./dasherize":9,"./decapitalize":10,"./dedent":11,"./endsWith":12,"./escapeHTML":13,"./exports":14,"./helper/escapeRegExp":18,"./humanize":23,"./include":24,"./insert":26,"./isBlank":27,"./join":28,"./levenshtein":29,"./lines":30,"./lpad":31,"./lrpad":32,"./ltrim":33,"./map":34,"./naturalCmp":35,"./numberFormat":38,"./pad":39,"./pred":40,"./prune":41,"./quote":42,"./repeat":43,"./replaceAll":44,"./reverse":45,"./rpad":46,"./rtrim":47,"./slugify":48,"./splice":49,"./sprintf":50,"./startsWith":51,"./strLeft":52,"./strLeftBack":53,"./strRight":54,"./strRightBack":55,"./stripTags":56,"./succ":57,"./surround":58,"./swapCase":59,"./titleize":60,"./toBoolean":61,"./toNumber":62,"./toSentence":63,"./toSentenceSerial":64,"./trim":65,"./truncate":66,"./underscored":67,"./unescapeHTML":68,"./unquote":69,"./vsprintf":70,"./words":71,"./wrap":72}],26:[function(require,module,exports){ -var splice = require('./splice'); - -module.exports = function insert(str, i, substr) { - return splice(str, i, 0, substr); -}; - -},{"./splice":49}],27:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function isBlank(str) { - return (/^\s*$/).test(makeString(str)); -}; - -},{"./helper/makeString":20}],28:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var slice = [].slice; - -module.exports = function join() { - var args = slice.call(arguments), - separator = args.shift(); - - return args.join(makeString(separator)); -}; - -},{"./helper/makeString":20}],29:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -/** - * Based on the implementation here: https://github.com/hiddentao/fast-levenshtein - */ -module.exports = function levenshtein(str1, str2) { - 'use strict'; - str1 = makeString(str1); - str2 = makeString(str2); - - // Short cut cases - if (str1 === str2) return 0; - if (!str1 || !str2) return Math.max(str1.length, str2.length); - - // two rows - var prevRow = new Array(str2.length + 1); - - // initialise previous row - for (var i = 0; i < prevRow.length; ++i) { - prevRow[i] = i; - } - - // calculate current row distance from previous row - for (i = 0; i < str1.length; ++i) { - var nextCol = i + 1; - - for (var j = 0; j < str2.length; ++j) { - var curCol = nextCol; - - // substution - nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 ); - // insertion - var tmp = curCol + 1; - if (nextCol > tmp) { - nextCol = tmp; - } - // deletion - tmp = prevRow[j + 1] + 1; - if (nextCol > tmp) { - nextCol = tmp; - } - - // copy current col value into previous (in preparation for next iteration) - prevRow[j] = curCol; - } - - // copy last col value into previous (in preparation for next iteration) - prevRow[j] = nextCol; - } - - return nextCol; -}; - -},{"./helper/makeString":20}],30:[function(require,module,exports){ -module.exports = function lines(str) { - if (str == null) return []; - return String(str).split(/\r\n?|\n/); -}; - -},{}],31:[function(require,module,exports){ -var pad = require('./pad'); - -module.exports = function lpad(str, length, padStr) { - return pad(str, length, padStr); -}; - -},{"./pad":39}],32:[function(require,module,exports){ -var pad = require('./pad'); - -module.exports = function lrpad(str, length, padStr) { - return pad(str, length, padStr, 'both'); -}; - -},{"./pad":39}],33:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var defaultToWhiteSpace = require('./helper/defaultToWhiteSpace'); -var nativeTrimLeft = String.prototype.trimLeft; - -module.exports = function ltrim(str, characters) { - str = makeString(str); - if (!characters && nativeTrimLeft) return nativeTrimLeft.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('^' + characters + '+'), ''); -}; - -},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],34:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function(str, callback) { - str = makeString(str); - - if (str.length === 0 || typeof callback !== 'function') return str; - - return str.replace(/./g, callback); -}; - -},{"./helper/makeString":20}],35:[function(require,module,exports){ -module.exports = function naturalCmp(str1, str2) { - if (str1 == str2) return 0; - if (!str1) return -1; - if (!str2) return 1; - - var cmpRegex = /(\.\d+|\d+|\D+)/g, - tokens1 = String(str1).match(cmpRegex), - tokens2 = String(str2).match(cmpRegex), - count = Math.min(tokens1.length, tokens2.length); - - for (var i = 0; i < count; i++) { - var a = tokens1[i], - b = tokens2[i]; - - if (a !== b) { - var num1 = +a; - var num2 = +b; - if (num1 === num1 && num2 === num2) { - return num1 > num2 ? 1 : -1; - } - return a < b ? -1 : 1; - } - } - - if (tokens1.length != tokens2.length) - return tokens1.length - tokens2.length; - - return str1 < str2 ? -1 : 1; -}; - -},{}],36:[function(require,module,exports){ -(function(window) { - var re = { - not_string: /[^s]/, - number: /[diefg]/, - json: /[j]/, - not_json: /[^j]/, - text: /^[^\x25]+/, - modulo: /^\x25{2}/, - placeholder: /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijosuxX])/, - key: /^([a-z_][a-z_\d]*)/i, - key_access: /^\.([a-z_][a-z_\d]*)/i, - index_access: /^\[(\d+)\]/, - sign: /^[\+\-]/ - } - - function sprintf() { - var key = arguments[0], cache = sprintf.cache - if (!(cache[key] && cache.hasOwnProperty(key))) { - cache[key] = sprintf.parse(key) - } - return sprintf.format.call(null, cache[key], arguments) - } - - sprintf.format = function(parse_tree, argv) { - var cursor = 1, tree_length = parse_tree.length, node_type = "", arg, output = [], i, k, match, pad, pad_character, pad_length, is_positive = true, sign = "" - for (i = 0; i < tree_length; i++) { - node_type = get_type(parse_tree[i]) - if (node_type === "string") { - output[output.length] = parse_tree[i] - } - else if (node_type === "array") { - match = parse_tree[i] // convenience purposes only - if (match[2]) { // keyword argument - arg = argv[cursor] - for (k = 0; k < match[2].length; k++) { - if (!arg.hasOwnProperty(match[2][k])) { - throw new Error(sprintf("[sprintf] property '%s' does not exist", match[2][k])) - } - arg = arg[match[2][k]] - } - } - else if (match[1]) { // positional argument (explicit) - arg = argv[match[1]] - } - else { // positional argument (implicit) - arg = argv[cursor++] - } - - if (get_type(arg) == "function") { - arg = arg() - } - - if (re.not_string.test(match[8]) && re.not_json.test(match[8]) && (get_type(arg) != "number" && isNaN(arg))) { - throw new TypeError(sprintf("[sprintf] expecting number but found %s", get_type(arg))) - } - - if (re.number.test(match[8])) { - is_positive = arg >= 0 - } - - switch (match[8]) { - case "b": - arg = arg.toString(2) - break - case "c": - arg = String.fromCharCode(arg) - break - case "d": - case "i": - arg = parseInt(arg, 10) - break - case "j": - arg = JSON.stringify(arg, null, match[6] ? parseInt(match[6]) : 0) - break - case "e": - arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential() - break - case "f": - arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg) - break - case "g": - arg = match[7] ? parseFloat(arg).toPrecision(match[7]) : parseFloat(arg) - break - case "o": - arg = arg.toString(8) - break - case "s": - arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg) - break - case "u": - arg = arg >>> 0 - break - case "x": - arg = arg.toString(16) - break - case "X": - arg = arg.toString(16).toUpperCase() - break - } - if (re.json.test(match[8])) { - output[output.length] = arg - } - else { - if (re.number.test(match[8]) && (!is_positive || match[3])) { - sign = is_positive ? "+" : "-" - arg = arg.toString().replace(re.sign, "") - } - else { - sign = "" - } - pad_character = match[4] ? match[4] === "0" ? "0" : match[4].charAt(1) : " " - pad_length = match[6] - (sign + arg).length - pad = match[6] ? (pad_length > 0 ? str_repeat(pad_character, pad_length) : "") : "" - output[output.length] = match[5] ? sign + arg + pad : (pad_character === "0" ? sign + pad + arg : pad + sign + arg) - } - } - } - return output.join("") - } - - sprintf.cache = {} - - sprintf.parse = function(fmt) { - var _fmt = fmt, match = [], parse_tree = [], arg_names = 0 - while (_fmt) { - if ((match = re.text.exec(_fmt)) !== null) { - parse_tree[parse_tree.length] = match[0] - } - else if ((match = re.modulo.exec(_fmt)) !== null) { - parse_tree[parse_tree.length] = "%" - } - else if ((match = re.placeholder.exec(_fmt)) !== null) { - if (match[2]) { - arg_names |= 1 - var field_list = [], replacement_field = match[2], field_match = [] - if ((field_match = re.key.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - while ((replacement_field = replacement_field.substring(field_match[0].length)) !== "") { - if ((field_match = re.key_access.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - } - else if ((field_match = re.index_access.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - } - else { - throw new SyntaxError("[sprintf] failed to parse named argument key") - } - } - } - else { - throw new SyntaxError("[sprintf] failed to parse named argument key") - } - match[2] = field_list - } - else { - arg_names |= 2 - } - if (arg_names === 3) { - throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported") - } - parse_tree[parse_tree.length] = match - } - else { - throw new SyntaxError("[sprintf] unexpected placeholder") - } - _fmt = _fmt.substring(match[0].length) - } - return parse_tree - } - - var vsprintf = function(fmt, argv, _argv) { - _argv = (argv || []).slice(0) - _argv.splice(0, 0, fmt) - return sprintf.apply(null, _argv) - } - - /** - * helpers - */ - function get_type(variable) { - return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase() - } - - function str_repeat(input, multiplier) { - return Array(multiplier + 1).join(input) - } - - /** - * export to either browser or node.js - */ - if (typeof exports !== "undefined") { - exports.sprintf = sprintf - exports.vsprintf = vsprintf - } - else { - window.sprintf = sprintf - window.vsprintf = vsprintf - - if (typeof define === "function" && define.amd) { - define(function() { - return { - sprintf: sprintf, - vsprintf: vsprintf - } - }) - } - } -})(typeof window === "undefined" ? this : window); - -},{}],37:[function(require,module,exports){ -(function (global){ - -/** - * Module exports. - */ - -module.exports = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; - } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],38:[function(require,module,exports){ -module.exports = function numberFormat(number, dec, dsep, tsep) { - if (isNaN(number) || number == null) return ''; - - number = number.toFixed(~~dec); - tsep = typeof tsep == 'string' ? tsep : ','; - - var parts = number.split('.'), - fnums = parts[0], - decimals = parts[1] ? (dsep || '.') + parts[1] : ''; - - return fnums.replace(/(\d)(?=(?:\d{3})+$)/g, '$1' + tsep) + decimals; -}; - -},{}],39:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var strRepeat = require('./helper/strRepeat'); - -module.exports = function pad(str, length, padStr, type) { - str = makeString(str); - length = ~~length; - - var padlen = 0; - - if (!padStr) - padStr = ' '; - else if (padStr.length > 1) - padStr = padStr.charAt(0); - - switch (type) { - case 'right': - padlen = length - str.length; - return str + strRepeat(padStr, padlen); - case 'both': - padlen = length - str.length; - return strRepeat(padStr, Math.ceil(padlen / 2)) + str + strRepeat(padStr, Math.floor(padlen / 2)); - default: // 'left' - padlen = length - str.length; - return strRepeat(padStr, padlen) + str; - } -}; - -},{"./helper/makeString":20,"./helper/strRepeat":21}],40:[function(require,module,exports){ -var adjacent = require('./helper/adjacent'); - -module.exports = function succ(str) { - return adjacent(str, -1); -}; - -},{"./helper/adjacent":15}],41:[function(require,module,exports){ -/** - * _s.prune: a more elegant version of truncate - * prune extra chars, never leaving a half-chopped word. - * @author github.com/rwz - */ -var makeString = require('./helper/makeString'); -var rtrim = require('./rtrim'); - -module.exports = function prune(str, length, pruneStr) { - str = makeString(str); - length = ~~length; - pruneStr = pruneStr != null ? String(pruneStr) : '...'; - - if (str.length <= length) return str; - - var tmpl = function(c) { - return c.toUpperCase() !== c.toLowerCase() ? 'A' : ' '; - }, - template = str.slice(0, length + 1).replace(/.(?=\W*\w*$)/g, tmpl); // 'Hello, world' -> 'HellAA AAAAA' - - if (template.slice(template.length - 2).match(/\w\w/)) - template = template.replace(/\s*\S+$/, ''); - else - template = rtrim(template.slice(0, template.length - 1)); - - return (template + pruneStr).length > str.length ? str : str.slice(0, template.length) + pruneStr; -}; - -},{"./helper/makeString":20,"./rtrim":47}],42:[function(require,module,exports){ -var surround = require('./surround'); - -module.exports = function quote(str, quoteChar) { - return surround(str, quoteChar || '"'); -}; - -},{"./surround":58}],43:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var strRepeat = require('./helper/strRepeat'); - -module.exports = function repeat(str, qty, separator) { - str = makeString(str); - - qty = ~~qty; - - // using faster implementation if separator is not needed; - if (separator == null) return strRepeat(str, qty); - - // this one is about 300x slower in Google Chrome - /*eslint no-empty: 0*/ - for (var repeat = []; qty > 0; repeat[--qty] = str) {} - return repeat.join(separator); -}; - -},{"./helper/makeString":20,"./helper/strRepeat":21}],44:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function replaceAll(str, find, replace, ignorecase) { - var flags = (ignorecase === true)?'gi':'g'; - var reg = new RegExp(find, flags); - - return makeString(str).replace(reg, replace); -}; - -},{"./helper/makeString":20}],45:[function(require,module,exports){ -var chars = require('./chars'); - -module.exports = function reverse(str) { - return chars(str).reverse().join(''); -}; - -},{"./chars":3}],46:[function(require,module,exports){ -var pad = require('./pad'); - -module.exports = function rpad(str, length, padStr) { - return pad(str, length, padStr, 'right'); -}; - -},{"./pad":39}],47:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var defaultToWhiteSpace = require('./helper/defaultToWhiteSpace'); -var nativeTrimRight = String.prototype.trimRight; - -module.exports = function rtrim(str, characters) { - str = makeString(str); - if (!characters && nativeTrimRight) return nativeTrimRight.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp(characters + '+$'), ''); -}; - -},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],48:[function(require,module,exports){ -var trim = require('./trim'); -var dasherize = require('./dasherize'); -var cleanDiacritics = require('./cleanDiacritics'); - -module.exports = function slugify(str) { - return trim(dasherize(cleanDiacritics(str).replace(/[^\w\s-]/g, '-').toLowerCase()), '-'); -}; - -},{"./cleanDiacritics":7,"./dasherize":9,"./trim":65}],49:[function(require,module,exports){ -var chars = require('./chars'); - -module.exports = function splice(str, i, howmany, substr) { - var arr = chars(str); - arr.splice(~~i, ~~howmany, substr); - return arr.join(''); -}; - -},{"./chars":3}],50:[function(require,module,exports){ -var deprecate = require('util-deprecate'); - -module.exports = deprecate(require('sprintf-js').sprintf, - 'sprintf() will be removed in the next major release, use the sprintf-js package instead.'); - -},{"sprintf-js":36,"util-deprecate":37}],51:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var toPositive = require('./helper/toPositive'); - -module.exports = function startsWith(str, starts, position) { - str = makeString(str); - starts = '' + starts; - position = position == null ? 0 : Math.min(toPositive(position), str.length); - return str.lastIndexOf(starts, position) === position; -}; - -},{"./helper/makeString":20,"./helper/toPositive":22}],52:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function strLeft(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.indexOf(sep); - return~ pos ? str.slice(0, pos) : str; -}; - -},{"./helper/makeString":20}],53:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function strLeftBack(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = str.lastIndexOf(sep); - return~ pos ? str.slice(0, pos) : str; -}; - -},{"./helper/makeString":20}],54:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function strRight(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.indexOf(sep); - return~ pos ? str.slice(pos + sep.length, str.length) : str; -}; - -},{"./helper/makeString":20}],55:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function strRightBack(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.lastIndexOf(sep); - return~ pos ? str.slice(pos + sep.length, str.length) : str; -}; - -},{"./helper/makeString":20}],56:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function stripTags(str) { - return makeString(str).replace(/<\/?[^>]+>/g, ''); -}; - -},{"./helper/makeString":20}],57:[function(require,module,exports){ -var adjacent = require('./helper/adjacent'); - -module.exports = function succ(str) { - return adjacent(str, 1); -}; - -},{"./helper/adjacent":15}],58:[function(require,module,exports){ -module.exports = function surround(str, wrapper) { - return [wrapper, str, wrapper].join(''); -}; - -},{}],59:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function swapCase(str) { - return makeString(str).replace(/\S/g, function(c) { - return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase(); - }); -}; - -},{"./helper/makeString":20}],60:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function titleize(str) { - return makeString(str).toLowerCase().replace(/(?:^|\s|-)\S/g, function(c) { - return c.toUpperCase(); - }); -}; - -},{"./helper/makeString":20}],61:[function(require,module,exports){ -var trim = require('./trim'); - -function boolMatch(s, matchers) { - var i, matcher, down = s.toLowerCase(); - matchers = [].concat(matchers); - for (i = 0; i < matchers.length; i += 1) { - matcher = matchers[i]; - if (!matcher) continue; - if (matcher.test && matcher.test(s)) return true; - if (matcher.toLowerCase() === down) return true; - } -} - -module.exports = function toBoolean(str, trueValues, falseValues) { - if (typeof str === 'number') str = '' + str; - if (typeof str !== 'string') return !!str; - str = trim(str); - if (boolMatch(str, trueValues || ['true', '1'])) return true; - if (boolMatch(str, falseValues || ['false', '0'])) return false; -}; - -},{"./trim":65}],62:[function(require,module,exports){ -module.exports = function toNumber(num, precision) { - if (num == null) return 0; - var factor = Math.pow(10, isFinite(precision) ? precision : 0); - return Math.round(num * factor) / factor; -}; - -},{}],63:[function(require,module,exports){ -var rtrim = require('./rtrim'); - -module.exports = function toSentence(array, separator, lastSeparator, serial) { - separator = separator || ', '; - lastSeparator = lastSeparator || ' and '; - var a = array.slice(), - lastMember = a.pop(); - - if (array.length > 2 && serial) lastSeparator = rtrim(separator) + lastSeparator; - - return a.length ? a.join(separator) + lastSeparator + lastMember : lastMember; -}; - -},{"./rtrim":47}],64:[function(require,module,exports){ -var toSentence = require('./toSentence'); - -module.exports = function toSentenceSerial(array, sep, lastSep) { - return toSentence(array, sep, lastSep, true); -}; - -},{"./toSentence":63}],65:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var defaultToWhiteSpace = require('./helper/defaultToWhiteSpace'); -var nativeTrim = String.prototype.trim; - -module.exports = function trim(str, characters) { - str = makeString(str); - if (!characters && nativeTrim) return nativeTrim.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('^' + characters + '+|' + characters + '+$', 'g'), ''); -}; - -},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],66:[function(require,module,exports){ -var makeString = require('./helper/makeString'); - -module.exports = function truncate(str, length, truncateStr) { - str = makeString(str); - truncateStr = truncateStr || '...'; - length = ~~length; - return str.length > length ? str.slice(0, length) + truncateStr : str; -}; - -},{"./helper/makeString":20}],67:[function(require,module,exports){ -var trim = require('./trim'); - -module.exports = function underscored(str) { - return trim(str).replace(/([a-z\d])([A-Z]+)/g, '$1_$2').replace(/[-\s]+/g, '_').toLowerCase(); -}; - -},{"./trim":65}],68:[function(require,module,exports){ -var makeString = require('./helper/makeString'); -var htmlEntities = require('./helper/htmlEntities'); - -module.exports = function unescapeHTML(str) { - return makeString(str).replace(/\&([^;]+);/g, function(entity, entityCode) { - var match; - - if (entityCode in htmlEntities) { - return htmlEntities[entityCode]; - /*eslint no-cond-assign: 0*/ - } else if (match = entityCode.match(/^#x([\da-fA-F]+)$/)) { - return String.fromCharCode(parseInt(match[1], 16)); - /*eslint no-cond-assign: 0*/ - } else if (match = entityCode.match(/^#(\d+)$/)) { - return String.fromCharCode(~~match[1]); - } else { - return entity; - } - }); -}; - -},{"./helper/htmlEntities":19,"./helper/makeString":20}],69:[function(require,module,exports){ -module.exports = function unquote(str, quoteChar) { - quoteChar = quoteChar || '"'; - if (str[0] === quoteChar && str[str.length - 1] === quoteChar) - return str.slice(1, str.length - 1); - else return str; -}; - -},{}],70:[function(require,module,exports){ -var deprecate = require('util-deprecate'); - -module.exports = deprecate(require('sprintf-js').vsprintf, - 'vsprintf() will be removed in the next major release, use the sprintf-js package instead.'); - -},{"sprintf-js":36,"util-deprecate":37}],71:[function(require,module,exports){ -var isBlank = require('./isBlank'); -var trim = require('./trim'); - -module.exports = function words(str, delimiter) { - if (isBlank(str)) return []; - return trim(str, delimiter).split(delimiter || /\s+/); -}; - -},{"./isBlank":27,"./trim":65}],72:[function(require,module,exports){ -// Wrap -// wraps a string by a certain width - -var makeString = require('./helper/makeString'); - -module.exports = function wrap(str, options){ - str = makeString(str); - - options = options || {}; - - var width = options.width || 75; - var seperator = options.seperator || '\n'; - var cut = options.cut || false; - var preserveSpaces = options.preserveSpaces || false; - var trailingSpaces = options.trailingSpaces || false; - - var result; - - if(width <= 0){ - return str; - } - - else if(!cut){ - - var words = str.split(' '); - var current_column = 0; - result = ''; - - while(words.length > 0){ - - // if adding a space and the next word would cause this line to be longer than width... - if(1 + words[0].length + current_column > width){ - //start a new line if this line is not already empty - if(current_column > 0){ - // add a space at the end of the line is preserveSpaces is true - if (preserveSpaces){ - result += ' '; - current_column++; - } - // fill the rest of the line with spaces if trailingSpaces option is true - else if(trailingSpaces){ - while(current_column < width){ - result += ' '; - current_column++; - } - } - //start new line - result += seperator; - current_column = 0; - } - } - - // if not at the begining of the line, add a space in front of the word - if(current_column > 0){ - result += ' '; - current_column++; - } - - // tack on the next word, update current column, a pop words array - result += words[0]; - current_column += words[0].length; - words.shift(); - - } - - // fill the rest of the line with spaces if trailingSpaces option is true - if(trailingSpaces){ - while(current_column < width){ - result += ' '; - current_column++; - } - } - - return result; - - } - - else { - - var index = 0; - result = ''; - - // walk through each character and add seperators where appropriate - while(index < str.length){ - if(index % width == 0 && index > 0){ - result += seperator; - } - result += str.charAt(index); - index++; - } - - // fill the rest of the line with spaces if trailingSpaces option is true - if(trailingSpaces){ - while(index % width > 0){ - result += ' '; - index++; - } - } - - return result; - } -}; - -},{"./helper/makeString":20}]},{},[25])(25) -}); \ No newline at end of file diff --git a/dist/underscore.string.min.js b/dist/underscore.string.min.js deleted file mode 100644 index 785c03d1..00000000 --- a/dist/underscore.string.min.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -* Underscore.string -* (c) 2010 Esa-Matti Suuronen -* Underscore.string is freely distributable under the terms of the MIT license. -* Documentation: https://github.com/epeli/underscore.string -* Some code is borrowed from MooTools and Alexandru Marasteanu. -* Version '3.3.4' -* @preserve -*/ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.s=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0?str.match(new RegExp(".{1,"+step+"}","g")):[str]}},{}],5:[function(require,module,exports){var capitalize=require("./capitalize");var camelize=require("./camelize");var makeString=require("./helper/makeString");module.exports=function classify(str){str=makeString(str);return capitalize(camelize(str.replace(/[\W_]/g," ")).replace(/\s/g,""))}},{"./camelize":1,"./capitalize":2,"./helper/makeString":20}],6:[function(require,module,exports){var trim=require("./trim");module.exports=function clean(str){return trim(str).replace(/\s\s+/g," ")}},{"./trim":65}],7:[function(require,module,exports){var makeString=require("./helper/makeString");var from="ąàáäâãåæăćčĉęèéëêĝĥìíïîĵłľńňòóöőôõðøśșşšŝťțţŭùúüűûñÿýçżźž",to="aaaaaaaaaccceeeeeghiiiijllnnoooooooossssstttuuuuuunyyczzz";from+=from.toUpperCase();to+=to.toUpperCase();to=to.split("");from+="ß";to.push("ss");module.exports=function cleanDiacritics(str){return makeString(str).replace(/.{1}/g,function(c){var index=from.indexOf(c);return index===-1?c:to[index]})}},{"./helper/makeString":20}],8:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function(str,substr){str=makeString(str);substr=makeString(substr);if(str.length===0||substr.length===0)return 0;return str.split(substr).length-1}},{"./helper/makeString":20}],9:[function(require,module,exports){var trim=require("./trim");module.exports=function dasherize(str){return trim(str).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()}},{"./trim":65}],10:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function decapitalize(str){str=makeString(str);return str.charAt(0).toLowerCase()+str.slice(1)}},{"./helper/makeString":20}],11:[function(require,module,exports){var makeString=require("./helper/makeString");function getIndent(str){var matches=str.match(/^[\s\\t]*/gm);var indent=matches[0].length;for(var i=1;i=0&&str.indexOf(ends,position)===position}},{"./helper/makeString":20,"./helper/toPositive":22}],13:[function(require,module,exports){var makeString=require("./helper/makeString");var escapeChars=require("./helper/escapeChars");var regexString="[";for(var key in escapeChars){regexString+=key}regexString+="]";var regex=new RegExp(regexString,"g");module.exports=function escapeHTML(str){return makeString(str).replace(regex,function(m){return"&"+escapeChars[m]+";"})}},{"./helper/escapeChars":17,"./helper/makeString":20}],14:[function(require,module,exports){module.exports=function(){var result={};for(var prop in this){if(!this.hasOwnProperty(prop)||prop.match(/^(?:include|contains|reverse|join|map|wrap)$/))continue;result[prop]=this[prop]}return result}},{}],15:[function(require,module,exports){var makeString=require("./makeString");module.exports=function adjacent(str,direction){str=makeString(str);if(str.length===0){return""}return str.slice(0,-1)+String.fromCharCode(str.charCodeAt(str.length-1)+direction)}},{"./makeString":20}],16:[function(require,module,exports){var escapeRegExp=require("./escapeRegExp");module.exports=function defaultToWhiteSpace(characters){if(characters==null)return"\\s";else if(characters.source)return characters.source;else return"["+escapeRegExp(characters)+"]"}},{"./escapeRegExp":18}],17:[function(require,module,exports){var escapeChars={"¢":"cent","£":"pound","¥":"yen","€":"euro","©":"copy","®":"reg","<":"lt",">":"gt",'"':"quot","&":"amp","'":"#39"};module.exports=escapeChars},{}],18:[function(require,module,exports){var makeString=require("./makeString");module.exports=function escapeRegExp(str){return makeString(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}},{"./makeString":20}],19:[function(require,module,exports){var htmlEntities={nbsp:" ",cent:"¢",pound:"£",yen:"¥",euro:"€",copy:"©",reg:"®",lt:"<",gt:">",quot:'"',amp:"&",apos:"'"};module.exports=htmlEntities},{}],20:[function(require,module,exports){module.exports=function makeString(object){if(object==null)return"";return""+object}},{}],21:[function(require,module,exports){module.exports=function strRepeat(str,qty){if(qty<1)return"";var result="";while(qty>0){if(qty&1)result+=str;qty>>=1,str+=str}return result}},{}],22:[function(require,module,exports){module.exports=function toPositive(number){return number<0?0:+number||0}},{}],23:[function(require,module,exports){var capitalize=require("./capitalize");var underscored=require("./underscored");var trim=require("./trim");module.exports=function humanize(str){return capitalize(trim(underscored(str).replace(/_id$/,"").replace(/_/g," ")))}},{"./capitalize":2,"./trim":65,"./underscored":67}],24:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function include(str,needle){if(needle==="")return true;return makeString(str).indexOf(needle)!==-1}},{"./helper/makeString":20}],25:[function(require,module,exports){/* -* Underscore.string -* (c) 2010 Esa-Matti Suuronen -* Underscore.string is freely distributable under the terms of the MIT license. -* Documentation: https://github.com/epeli/underscore.string -* Some code is borrowed from MooTools and Alexandru Marasteanu. -* Version '3.3.4' -* @preserve -*/ -"use strict";function s(value){if(!(this instanceof s))return new s(value);this._wrapped=value}s.VERSION="3.3.4";s.isBlank=require("./isBlank");s.stripTags=require("./stripTags");s.capitalize=require("./capitalize");s.decapitalize=require("./decapitalize");s.chop=require("./chop");s.trim=require("./trim");s.clean=require("./clean");s.cleanDiacritics=require("./cleanDiacritics");s.count=require("./count");s.chars=require("./chars");s.swapCase=require("./swapCase");s.escapeHTML=require("./escapeHTML");s.unescapeHTML=require("./unescapeHTML");s.splice=require("./splice");s.insert=require("./insert");s.replaceAll=require("./replaceAll");s.include=require("./include");s.join=require("./join");s.lines=require("./lines");s.dedent=require("./dedent");s.reverse=require("./reverse");s.startsWith=require("./startsWith");s.endsWith=require("./endsWith");s.pred=require("./pred");s.succ=require("./succ");s.titleize=require("./titleize");s.camelize=require("./camelize");s.underscored=require("./underscored");s.dasherize=require("./dasherize");s.classify=require("./classify");s.humanize=require("./humanize");s.ltrim=require("./ltrim");s.rtrim=require("./rtrim");s.truncate=require("./truncate");s.prune=require("./prune");s.words=require("./words");s.pad=require("./pad");s.lpad=require("./lpad");s.rpad=require("./rpad");s.lrpad=require("./lrpad");s.sprintf=require("./sprintf");s.vsprintf=require("./vsprintf");s.toNumber=require("./toNumber");s.numberFormat=require("./numberFormat");s.strRight=require("./strRight");s.strRightBack=require("./strRightBack");s.strLeft=require("./strLeft");s.strLeftBack=require("./strLeftBack");s.toSentence=require("./toSentence");s.toSentenceSerial=require("./toSentenceSerial");s.slugify=require("./slugify");s.surround=require("./surround");s.quote=require("./quote");s.unquote=require("./unquote");s.repeat=require("./repeat");s.naturalCmp=require("./naturalCmp");s.levenshtein=require("./levenshtein");s.toBoolean=require("./toBoolean");s.exports=require("./exports");s.escapeRegExp=require("./helper/escapeRegExp");s.wrap=require("./wrap");s.map=require("./map");s.strip=s.trim;s.lstrip=s.ltrim;s.rstrip=s.rtrim;s.center=s.lrpad;s.rjust=s.lpad;s.ljust=s.rpad;s.contains=s.include;s.q=s.quote;s.toBool=s.toBoolean;s.camelcase=s.camelize;s.mapChars=s.map;s.prototype={value:function value(){return this._wrapped}};function fn2method(key,fn){if(typeof fn!=="function")return;s.prototype[key]=function(){var args=[this._wrapped].concat(Array.prototype.slice.call(arguments));var res=fn.apply(null,args);return typeof res==="string"?new s(res):res}}for(var key in s)fn2method(key,s[key]);fn2method("tap",function tap(string,fn){return fn(string)});function prototype2method(methodName){fn2method(methodName,function(context){var args=Array.prototype.slice.call(arguments,1);return String.prototype[methodName].apply(context,args)})}var prototypeMethods=["toUpperCase","toLowerCase","split","replace","slice","substring","substr","concat"];for(var method in prototypeMethods)prototype2method(prototypeMethods[method]);module.exports=s},{"./camelize":1,"./capitalize":2,"./chars":3,"./chop":4,"./classify":5,"./clean":6,"./cleanDiacritics":7,"./count":8,"./dasherize":9,"./decapitalize":10,"./dedent":11,"./endsWith":12,"./escapeHTML":13,"./exports":14,"./helper/escapeRegExp":18,"./humanize":23,"./include":24,"./insert":26,"./isBlank":27,"./join":28,"./levenshtein":29,"./lines":30,"./lpad":31,"./lrpad":32,"./ltrim":33,"./map":34,"./naturalCmp":35,"./numberFormat":38,"./pad":39,"./pred":40,"./prune":41,"./quote":42,"./repeat":43,"./replaceAll":44,"./reverse":45,"./rpad":46,"./rtrim":47,"./slugify":48,"./splice":49,"./sprintf":50,"./startsWith":51,"./strLeft":52,"./strLeftBack":53,"./strRight":54,"./strRightBack":55,"./stripTags":56,"./succ":57,"./surround":58,"./swapCase":59,"./titleize":60,"./toBoolean":61,"./toNumber":62,"./toSentence":63,"./toSentenceSerial":64,"./trim":65,"./truncate":66,"./underscored":67,"./unescapeHTML":68,"./unquote":69,"./vsprintf":70,"./words":71,"./wrap":72}],26:[function(require,module,exports){var splice=require("./splice");module.exports=function insert(str,i,substr){return splice(str,i,0,substr)}},{"./splice":49}],27:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function isBlank(str){return/^\s*$/.test(makeString(str))}},{"./helper/makeString":20}],28:[function(require,module,exports){var makeString=require("./helper/makeString");var slice=[].slice;module.exports=function join(){var args=slice.call(arguments),separator=args.shift();return args.join(makeString(separator))}},{"./helper/makeString":20}],29:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function levenshtein(str1,str2){"use strict";str1=makeString(str1);str2=makeString(str2);if(str1===str2)return 0;if(!str1||!str2)return Math.max(str1.length,str2.length);var prevRow=new Array(str2.length+1);for(var i=0;itmp){nextCol=tmp}tmp=prevRow[j+1]+1;if(nextCol>tmp){nextCol=tmp}prevRow[j]=curCol}prevRow[j]=nextCol}return nextCol}},{"./helper/makeString":20}],30:[function(require,module,exports){module.exports=function lines(str){if(str==null)return[];return String(str).split(/\r\n?|\n/)}},{}],31:[function(require,module,exports){var pad=require("./pad");module.exports=function lpad(str,length,padStr){return pad(str,length,padStr)}},{"./pad":39}],32:[function(require,module,exports){var pad=require("./pad");module.exports=function lrpad(str,length,padStr){return pad(str,length,padStr,"both")}},{"./pad":39}],33:[function(require,module,exports){var makeString=require("./helper/makeString");var defaultToWhiteSpace=require("./helper/defaultToWhiteSpace");var nativeTrimLeft=String.prototype.trimLeft;module.exports=function ltrim(str,characters){str=makeString(str);if(!characters&&nativeTrimLeft)return nativeTrimLeft.call(str);characters=defaultToWhiteSpace(characters);return str.replace(new RegExp("^"+characters+"+"),"")}},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],34:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function(str,callback){str=makeString(str);if(str.length===0||typeof callback!=="function")return str;return str.replace(/./g,callback)}},{"./helper/makeString":20}],35:[function(require,module,exports){module.exports=function naturalCmp(str1,str2){if(str1==str2)return 0;if(!str1)return-1;if(!str2)return 1;var cmpRegex=/(\.\d+|\d+|\D+)/g,tokens1=String(str1).match(cmpRegex),tokens2=String(str2).match(cmpRegex),count=Math.min(tokens1.length,tokens2.length);for(var i=0;inum2?1:-1}return a=0}switch(match[8]){case"b":arg=arg.toString(2);break;case"c":arg=String.fromCharCode(arg);break;case"d":case"i":arg=parseInt(arg,10);break;case"j":arg=JSON.stringify(arg,null,match[6]?parseInt(match[6]):0);break;case"e":arg=match[7]?arg.toExponential(match[7]):arg.toExponential();break;case"f":arg=match[7]?parseFloat(arg).toFixed(match[7]):parseFloat(arg);break;case"g":arg=match[7]?parseFloat(arg).toPrecision(match[7]):parseFloat(arg);break;case"o":arg=arg.toString(8);break;case"s":arg=(arg=String(arg))&&match[7]?arg.substring(0,match[7]):arg;break;case"u":arg=arg>>>0;break;case"x":arg=arg.toString(16);break;case"X":arg=arg.toString(16).toUpperCase();break}if(re.json.test(match[8])){output[output.length]=arg}else{if(re.number.test(match[8])&&(!is_positive||match[3])){sign=is_positive?"+":"-";arg=arg.toString().replace(re.sign,"")}else{sign=""}pad_character=match[4]?match[4]==="0"?"0":match[4].charAt(1):" ";pad_length=match[6]-(sign+arg).length;pad=match[6]?pad_length>0?str_repeat(pad_character,pad_length):"":"";output[output.length]=match[5]?sign+arg+pad:pad_character==="0"?sign+pad+arg:pad+sign+arg}}}return output.join("")};sprintf.cache={};sprintf.parse=function(fmt){var _fmt=fmt,match=[],parse_tree=[],arg_names=0;while(_fmt){if((match=re.text.exec(_fmt))!==null){parse_tree[parse_tree.length]=match[0]}else if((match=re.modulo.exec(_fmt))!==null){parse_tree[parse_tree.length]="%"}else if((match=re.placeholder.exec(_fmt))!==null){if(match[2]){arg_names|=1;var field_list=[],replacement_field=match[2],field_match=[];if((field_match=re.key.exec(replacement_field))!==null){field_list[field_list.length]=field_match[1];while((replacement_field=replacement_field.substring(field_match[0].length))!==""){if((field_match=re.key_access.exec(replacement_field))!==null){field_list[field_list.length]=field_match[1]}else if((field_match=re.index_access.exec(replacement_field))!==null){field_list[field_list.length]=field_match[1]}else{throw new SyntaxError("[sprintf] failed to parse named argument key")}}}else{throw new SyntaxError("[sprintf] failed to parse named argument key")}match[2]=field_list}else{arg_names|=2}if(arg_names===3){throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported")}parse_tree[parse_tree.length]=match}else{throw new SyntaxError("[sprintf] unexpected placeholder")}_fmt=_fmt.substring(match[0].length)}return parse_tree};var vsprintf=function(fmt,argv,_argv){_argv=(argv||[]).slice(0);_argv.splice(0,0,fmt);return sprintf.apply(null,_argv)};function get_type(variable){return Object.prototype.toString.call(variable).slice(8,-1).toLowerCase()}function str_repeat(input,multiplier){return Array(multiplier+1).join(input)}if(typeof exports!=="undefined"){exports.sprintf=sprintf;exports.vsprintf=vsprintf}else{window.sprintf=sprintf;window.vsprintf=vsprintf;if(typeof define==="function"&&define.amd){define(function(){return{sprintf:sprintf,vsprintf:vsprintf}})}}})(typeof window==="undefined"?this:window)},{}],37:[function(require,module,exports){(function(global){module.exports=deprecate;function deprecate(fn,msg){if(config("noDeprecation")){return fn}var warned=false;function deprecated(){if(!warned){if(config("throwDeprecation")){throw new Error(msg)}else if(config("traceDeprecation")){console.trace(msg)}else{console.warn(msg)}warned=true}return fn.apply(this,arguments)}return deprecated}function config(name){try{if(!global.localStorage)return false}catch(_){return false}var val=global.localStorage[name];if(null==val)return false;return String(val).toLowerCase()==="true"}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],38:[function(require,module,exports){module.exports=function numberFormat(number,dec,dsep,tsep){if(isNaN(number)||number==null)return"";number=number.toFixed(~~dec);tsep=typeof tsep=="string"?tsep:",";var parts=number.split("."),fnums=parts[0],decimals=parts[1]?(dsep||".")+parts[1]:"";return fnums.replace(/(\d)(?=(?:\d{3})+$)/g,"$1"+tsep)+decimals}},{}],39:[function(require,module,exports){var makeString=require("./helper/makeString");var strRepeat=require("./helper/strRepeat");module.exports=function pad(str,length,padStr,type){str=makeString(str);length=~~length;var padlen=0;if(!padStr)padStr=" ";else if(padStr.length>1)padStr=padStr.charAt(0);switch(type){case"right":padlen=length-str.length;return str+strRepeat(padStr,padlen);case"both":padlen=length-str.length;return strRepeat(padStr,Math.ceil(padlen/2))+str+strRepeat(padStr,Math.floor(padlen/2));default:padlen=length-str.length;return strRepeat(padStr,padlen)+str}}},{"./helper/makeString":20,"./helper/strRepeat":21}],40:[function(require,module,exports){var adjacent=require("./helper/adjacent");module.exports=function succ(str){return adjacent(str,-1)}},{"./helper/adjacent":15}],41:[function(require,module,exports){var makeString=require("./helper/makeString");var rtrim=require("./rtrim");module.exports=function prune(str,length,pruneStr){str=makeString(str);length=~~length;pruneStr=pruneStr!=null?String(pruneStr):"...";if(str.length<=length)return str;var tmpl=function(c){return c.toUpperCase()!==c.toLowerCase()?"A":" "},template=str.slice(0,length+1).replace(/.(?=\W*\w*$)/g,tmpl);if(template.slice(template.length-2).match(/\w\w/))template=template.replace(/\s*\S+$/,"");else template=rtrim(template.slice(0,template.length-1));return(template+pruneStr).length>str.length?str:str.slice(0,template.length)+pruneStr}},{"./helper/makeString":20,"./rtrim":47}],42:[function(require,module,exports){var surround=require("./surround");module.exports=function quote(str,quoteChar){return surround(str,quoteChar||'"')}},{"./surround":58}],43:[function(require,module,exports){var makeString=require("./helper/makeString");var strRepeat=require("./helper/strRepeat");module.exports=function repeat(str,qty,separator){str=makeString(str);qty=~~qty;if(separator==null)return strRepeat(str,qty);for(var repeat=[];qty>0;repeat[--qty]=str){}return repeat.join(separator)}},{"./helper/makeString":20,"./helper/strRepeat":21}],44:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function replaceAll(str,find,replace,ignorecase){var flags=ignorecase===true?"gi":"g";var reg=new RegExp(find,flags);return makeString(str).replace(reg,replace)}},{"./helper/makeString":20}],45:[function(require,module,exports){var chars=require("./chars");module.exports=function reverse(str){return chars(str).reverse().join("")}},{"./chars":3}],46:[function(require,module,exports){var pad=require("./pad");module.exports=function rpad(str,length,padStr){return pad(str,length,padStr,"right")}},{"./pad":39}],47:[function(require,module,exports){var makeString=require("./helper/makeString");var defaultToWhiteSpace=require("./helper/defaultToWhiteSpace");var nativeTrimRight=String.prototype.trimRight;module.exports=function rtrim(str,characters){str=makeString(str);if(!characters&&nativeTrimRight)return nativeTrimRight.call(str);characters=defaultToWhiteSpace(characters);return str.replace(new RegExp(characters+"+$"),"")}},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],48:[function(require,module,exports){var trim=require("./trim");var dasherize=require("./dasherize");var cleanDiacritics=require("./cleanDiacritics");module.exports=function slugify(str){return trim(dasherize(cleanDiacritics(str).replace(/[^\w\s-]/g,"-").toLowerCase()),"-")}},{"./cleanDiacritics":7,"./dasherize":9,"./trim":65}],49:[function(require,module,exports){var chars=require("./chars");module.exports=function splice(str,i,howmany,substr){var arr=chars(str);arr.splice(~~i,~~howmany,substr);return arr.join("")}},{"./chars":3}],50:[function(require,module,exports){var deprecate=require("util-deprecate");module.exports=deprecate(require("sprintf-js").sprintf,"sprintf() will be removed in the next major release, use the sprintf-js package instead.")},{"sprintf-js":36,"util-deprecate":37}],51:[function(require,module,exports){var makeString=require("./helper/makeString");var toPositive=require("./helper/toPositive");module.exports=function startsWith(str,starts,position){str=makeString(str);starts=""+starts;position=position==null?0:Math.min(toPositive(position),str.length);return str.lastIndexOf(starts,position)===position}},{"./helper/makeString":20,"./helper/toPositive":22}],52:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function strLeft(str,sep){str=makeString(str);sep=makeString(sep);var pos=!sep?-1:str.indexOf(sep);return~pos?str.slice(0,pos):str}},{"./helper/makeString":20}],53:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function strLeftBack(str,sep){str=makeString(str);sep=makeString(sep);var pos=str.lastIndexOf(sep);return~pos?str.slice(0,pos):str}},{"./helper/makeString":20}],54:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function strRight(str,sep){str=makeString(str);sep=makeString(sep);var pos=!sep?-1:str.indexOf(sep);return~pos?str.slice(pos+sep.length,str.length):str}},{"./helper/makeString":20}],55:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function strRightBack(str,sep){str=makeString(str);sep=makeString(sep);var pos=!sep?-1:str.lastIndexOf(sep);return~pos?str.slice(pos+sep.length,str.length):str}},{"./helper/makeString":20}],56:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function stripTags(str){return makeString(str).replace(/<\/?[^>]+>/g,"")}},{"./helper/makeString":20}],57:[function(require,module,exports){var adjacent=require("./helper/adjacent");module.exports=function succ(str){return adjacent(str,1)}},{"./helper/adjacent":15}],58:[function(require,module,exports){module.exports=function surround(str,wrapper){return[wrapper,str,wrapper].join("")}},{}],59:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function swapCase(str){return makeString(str).replace(/\S/g,function(c){return c===c.toUpperCase()?c.toLowerCase():c.toUpperCase()})}},{"./helper/makeString":20}],60:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function titleize(str){return makeString(str).toLowerCase().replace(/(?:^|\s|-)\S/g,function(c){return c.toUpperCase()})}},{"./helper/makeString":20}],61:[function(require,module,exports){var trim=require("./trim");function boolMatch(s,matchers){var i,matcher,down=s.toLowerCase();matchers=[].concat(matchers);for(i=0;i2&&serial)lastSeparator=rtrim(separator)+lastSeparator;return a.length?a.join(separator)+lastSeparator+lastMember:lastMember}},{"./rtrim":47}],64:[function(require,module,exports){var toSentence=require("./toSentence");module.exports=function toSentenceSerial(array,sep,lastSep){return toSentence(array,sep,lastSep,true)}},{"./toSentence":63}],65:[function(require,module,exports){var makeString=require("./helper/makeString");var defaultToWhiteSpace=require("./helper/defaultToWhiteSpace");var nativeTrim=String.prototype.trim;module.exports=function trim(str,characters){str=makeString(str);if(!characters&&nativeTrim)return nativeTrim.call(str);characters=defaultToWhiteSpace(characters);return str.replace(new RegExp("^"+characters+"+|"+characters+"+$","g"),"")}},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],66:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function truncate(str,length,truncateStr){str=makeString(str);truncateStr=truncateStr||"...";length=~~length;return str.length>length?str.slice(0,length)+truncateStr:str}},{"./helper/makeString":20}],67:[function(require,module,exports){var trim=require("./trim");module.exports=function underscored(str){return trim(str).replace(/([a-z\d])([A-Z]+)/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()}},{"./trim":65}],68:[function(require,module,exports){var makeString=require("./helper/makeString");var htmlEntities=require("./helper/htmlEntities");module.exports=function unescapeHTML(str){return makeString(str).replace(/\&([^;]+);/g,function(entity,entityCode){var match;if(entityCode in htmlEntities){return htmlEntities[entityCode]}else if(match=entityCode.match(/^#x([\da-fA-F]+)$/)){return String.fromCharCode(parseInt(match[1],16))}else if(match=entityCode.match(/^#(\d+)$/)){return String.fromCharCode(~~match[1])}else{return entity}})}},{"./helper/htmlEntities":19,"./helper/makeString":20}],69:[function(require,module,exports){module.exports=function unquote(str,quoteChar){quoteChar=quoteChar||'"';if(str[0]===quoteChar&&str[str.length-1]===quoteChar)return str.slice(1,str.length-1);else return str}},{}],70:[function(require,module,exports){var deprecate=require("util-deprecate");module.exports=deprecate(require("sprintf-js").vsprintf,"vsprintf() will be removed in the next major release, use the sprintf-js package instead.")},{"sprintf-js":36,"util-deprecate":37}],71:[function(require,module,exports){var isBlank=require("./isBlank");var trim=require("./trim");module.exports=function words(str,delimiter){if(isBlank(str))return[];return trim(str,delimiter).split(delimiter||/\s+/)}},{"./isBlank":27,"./trim":65}],72:[function(require,module,exports){var makeString=require("./helper/makeString");module.exports=function wrap(str,options){str=makeString(str);options=options||{};var width=options.width||75;var seperator=options.seperator||"\n";var cut=options.cut||false;var preserveSpaces=options.preserveSpaces||false;var trailingSpaces=options.trailingSpaces||false;var result;if(width<=0){return str}else if(!cut){var words=str.split(" ");var current_column=0;result="";while(words.length>0){if(1+words[0].length+current_column>width){if(current_column>0){if(preserveSpaces){result+=" ";current_column++}else if(trailingSpaces){while(current_column0){result+=" ";current_column++}result+=words[0];current_column+=words[0].length;words.shift()}if(trailingSpaces){while(current_column0){result+=seperator}result+=str.charAt(index);index++}if(trailingSpaces){while(index%width>0){result+=" ";index++}}return result}}},{"./helper/makeString":20}]},{},[25])(25)}); \ No newline at end of file diff --git a/naturalCmp.js b/naturalCmp.js index 7cb94e6f..975615a7 100644 --- a/naturalCmp.js +++ b/naturalCmp.js @@ -23,7 +23,7 @@ module.exports = function naturalCmp(str1, str2) { } if (tokens1.length != tokens2.length) - return tokens1.length - tokens2.length; + return tokens1.length < tokens2.length ? -1 : 1; return str1 < str2 ? -1 : 1; }; diff --git a/tests/naturalCmp.js b/tests/naturalCmp.js index 6ead619e..838ced8b 100644 --- a/tests/naturalCmp.js +++ b/tests/naturalCmp.js @@ -16,6 +16,7 @@ test('#naturalCmp', function() { ['11', '-12'], ['15.05', '15'], ['15ac', '15ab32'], + ['15ac1a', '15ac'], ['16', '15ab'], ['15a123', '15a122'], ['15ab16', '15ab'], diff --git a/tests/wrap.js b/tests/wrap.js index bc398b58..533cb6c0 100644 --- a/tests/wrap.js +++ b/tests/wrap.js @@ -6,7 +6,7 @@ test('#wrap', function(){ // without trailing spaces equal(wrap('My name is', { width: 2, seperator:'.', cut:false, trailingSpaces:false } ), 'My.name.is', 'works with width 2 and cut = false'); equal(wrap('My name is', { width: 2, seperator:'.', cut:true, trailingSpaces:false } ), 'My. n.am.e .is', 'works with width 2 and cut = true'); - equal(wrap('My name is', { width: 3, seperator:'.', cut:false, trailingSpaces:false } ), 'My.name.is', 'works with width 3 and cut = true'); + equal(wrap('My name is', { width: 3, seperator:'.', cut:false, trailingSpaces:false } ), 'My.name.is', 'works with width 3 and cut = false'); equal(wrap('My name is', { width: 3, seperator:'.', cut:true, trailingSpaces:false } ), 'My .nam.e i.s', 'works with width 3 and cut = true'); // with trailing spaces