From 688a3635867441ebfaebf2fde45a60a0e240c01e Mon Sep 17 00:00:00 2001 From: Dmitri Pavlutin Date: Mon, 26 Dec 2016 17:46:05 +0200 Subject: [PATCH] Implemented stripTags() function --- dist/voca.js | 330 +++++++++++-- dist/voca.min.js | 2 +- dist/voca.min.js.map | 2 +- package.json | 12 +- src/helper/reg_exp/const.js | 8 + src/helper/string/has_substring_at_index.js | 18 + src/helper/strip/{tag => }/parse_tag_list.js | 2 +- src/helper/strip/parse_tag_name.js | 42 ++ src/strip/strip_tags.js | 136 +++++- test/helper/strip/parse_tag_name.js | 11 + test/index.js | 1 + test/modules_common.js | 7 + test/modules_es2015.js | 8 + test/strip/strip_tags.js | 70 ++- test_runner/test_bundle.js | 468 +++++++++++++++++-- test_runner/test_bundle.js.map | 2 +- 16 files changed, 1020 insertions(+), 99 deletions(-) create mode 100644 src/helper/string/has_substring_at_index.js rename src/helper/strip/{tag => }/parse_tag_list.js (93%) create mode 100644 src/helper/strip/parse_tag_name.js create mode 100644 test/helper/strip/parse_tag_name.js diff --git a/dist/voca.js b/dist/voca.js index 5d70dd3..b0d0087 100644 --- a/dist/voca.js +++ b/dist/voca.js @@ -214,6 +214,14 @@ var REGEXP_UNICODE_CHARACTER = new RegExp('((?:[' + base + ']|[' + highSurrogate ([\\n\\r\\u2028\\u2029])|\ (.)', 'g'); +/** + * Regular expression to match whitespaces + * + * @type {RegExp} + * @ignore + */ +var REGEXP_WHITESPACE = new RegExp('[' + whitespace + ']'); + /** * Regular expression to match whitespaces from the left side * @@ -286,6 +294,16 @@ var REGEXP_TRAILING_ZEROS = /\.?0+$/g; */ var REGEXP_FLAGS = /[gimuy]*$/; +/** + * Regular expression to match a list of tags. + * + * @see https://html.spec.whatwg.org/multipage/syntax.html#syntax-tag-name + * @type {RegExp} + * @ignore + */ + +var REGEXP_TAG_LIST = /<([A-Za-z0-9]+)>/g; + /** * A regular expression to match the General Punctuation Unicode block * @@ -1878,9 +1896,9 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr * @static * @since 1.0.0 * @memberOf Format - * @param {string} [format=''] The format string. - * @param {Array.} replacements The array of replacements to produce the string. - * @return {string} Returns the produced string. + * @param {string} format=''] The format string. + * @param {Array} replacements The array of replacements to produce the string. + * @return {string} Returns the produced string. * @example * v.vprintf('%s', ['Welcome']) * // => 'Welcome' @@ -2211,9 +2229,9 @@ var diacritics = { var diacriticsMap = null; /** - * @ignore * Creates a map of the diacritics. * + * @ignore * @returns {Object} Returns the diacritics map. */ function getDiacriticsMap() { @@ -2232,19 +2250,20 @@ function getDiacriticsMap() { } /** - * Removes the diacritics from `character`. + * Get the latin character from character with diacritics. * * @ignore - * @param {string} character The character with diacritics. - * @returns {string} Returns the character without diacritics. + * @param {string} character The character with diacritics. + * @returns {string} Returns the character without diacritics. */ -function removeDiacritics(character) { +function getLatinCharacter(character) { var characterWithoutDiacritic = getDiacriticsMap()[character]; return characterWithoutDiacritic ? characterWithoutDiacritic : character; } /** * Returns the `cleanCharacter` from combining marks regular expression match. + * * @ignore * @param {string} character The character with combining marks * @param {string} cleanCharacter The character without combining marks. @@ -2278,7 +2297,7 @@ function latinise(subject) { if (subjectString === '') { return subjectString; } - return subjectString.replace(REGEXP_NON_LATIN, removeDiacritics).replace(REGEXP_COMBINING_MARKS, removeCombiningMarks); + return subjectString.replace(REGEXP_NON_LATIN, getLatinCharacter).replace(REGEXP_COMBINING_MARKS, removeCombiningMarks); } /** @@ -2497,7 +2516,7 @@ function reverseGrapheme(subject) { * v.slugify('Italian cappuccino drink'); * // => 'italian-cappuccino-drink' * - * v.slugify('café latté'); + * v.slugify('caffé latté'); * // => 'caffe-latte' * * v.slugify('хорошая погода'); @@ -2581,12 +2600,12 @@ function trimLeft(subject, whitespace$$1) { if (isNil(whitespaceString)) { return subjectString.replace(REGEXP_TRIM_LEFT, ''); } - var whitespaceStringLength = whitespaceString.length; + var whitespaceLength = whitespaceString.length; var matchWhitespace = true; var totalWhitespaceLength = 0; while (matchWhitespace) { if (subjectString.indexOf(whitespaceString, totalWhitespaceLength) === totalWhitespaceLength) { - totalWhitespaceLength += whitespaceStringLength; + totalWhitespaceLength += whitespaceLength; } else { matchWhitespace = false; } @@ -2620,20 +2639,20 @@ function trimRight(subject, whitespace$$1) { if (isNil(whitespaceString)) { return subjectString.replace(REGEXP_TRIM_RIGHT, ''); } - var whitespaceStringLength = whitespaceString.length; - var valueStringLength = subjectString.length; + var whitespaceLength = whitespaceString.length; + var subjectLength = subjectString.length; var matchWhitespace = true; var totalWhitespaceLength = 0; var position = void 0; while (matchWhitespace) { - position = valueStringLength - totalWhitespaceLength - whitespaceStringLength; + position = subjectLength - totalWhitespaceLength - whitespaceLength; if (subjectString.indexOf(whitespaceString, position) === position) { - totalWhitespaceLength += whitespaceStringLength; + totalWhitespaceLength += whitespaceLength; } else { matchWhitespace = false; } } - return subjectString.substring(0, valueStringLength - totalWhitespaceLength); + return subjectString.substring(0, subjectLength - totalWhitespaceLength); } /** @@ -2670,6 +2689,22 @@ var OPTION_NEW_LINE = 'newLine'; var OPTION_INDENT = 'indent'; var OPTION_CUT = 'cut'; +/** + * Determine the word wrap options. The missing values are filled with defaults. + * + * @param {Object} options The options object. + * @return {Object} The word wrap options, with default settings if necessary. + * @ignore + */ +function determineOptions(options) { + return { + width: coerceToNumber(options[OPTION_WIDTH], 75), + newLine: coerceToString(options[OPTION_NEW_LINE], '\n'), + indent: coerceToString(options[OPTION_INDENT], ''), + cut: coerceToBoolean(options[OPTION_CUT], false) + }; +} + /** * Wraps `subject` to a given number of characters using a string break character. * @@ -2706,22 +2741,24 @@ var OPTION_CUT = 'cut'; * // => 'Wonde\nrful\nworld' * */ -function wordWrap(subject, options) { +function wordWrap(subject) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var subjectString = coerceToString(subject); - options = nilDefault(options, {}); - var width = coerceToNumber(options[OPTION_WIDTH], 75); - var newLine = coerceToString(options[OPTION_NEW_LINE], '\n'); - var indent = coerceToString(options[OPTION_INDENT], ''); - var cut = coerceToBoolean(options[OPTION_CUT], false); + + var _determineOptions = determineOptions(options), + width = _determineOptions.width, + newLine = _determineOptions.newLine, + indent = _determineOptions.indent, + cut = _determineOptions.cut; if (subjectString === '' || width <= 0) { return indent; } - var subjectLength = subjectString.length; + var substring = subjectString.substring.bind(subjectString); var offset = 0; var wrappedLine = ''; - while (subjectLength - offset > width) { if (subjectString[offset] === ' ') { offset++; @@ -2729,26 +2766,26 @@ function wordWrap(subject, options) { } var spaceToWrapAt = subjectString.lastIndexOf(' ', width + offset); if (spaceToWrapAt >= offset) { - wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine; + wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine; offset = spaceToWrapAt + 1; } else { if (cut) { - wrappedLine += indent + subjectString.substring(offset, width + offset) + newLine; + wrappedLine += indent + substring(offset, width + offset) + newLine; offset += width; } else { spaceToWrapAt = subjectString.indexOf(' ', width + offset); if (spaceToWrapAt >= 0) { - wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine; + wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine; offset = spaceToWrapAt + 1; } else { - wrappedLine += indent + subjectString.substring(offset); + wrappedLine += indent + substring(offset); offset = subjectLength; } } } } if (offset < subjectLength) { - wrappedLine += indent + subjectString.substring(offset); + wrappedLine += indent + substring(offset); } return wrappedLine; } @@ -3148,6 +3185,233 @@ function split(subject, separator, limit) { return subjectString.split(separator, limit); } +/** + * Checks whether `subject` contains substring at specific `index`. + * + * @ignore + * @param {string} subject The subject to search in. + * @param {string} substring The substring to search/ + * @param {number} index The index to search substring. + * @param {boolean} lookBehind Whether to look behind (true) or ahead (false). + * @return {boolean} Returns a boolean whether the substring exists. + */ +function hasSubstringAtIndex(subject, substring, index) { + var lookBehind = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + + var indexOffset = 0; + if (lookBehind) { + indexOffset = -substring.length + 1; + } + var extractedSubstring = subject.substr(index + indexOffset, substring.length); + return extractedSubstring.toLowerCase() === substring; +} + +/** + * Parses the tags from the string '...'. + * + * @ignore + * @param {string} tags The string that contains the tags. + * @return {string[]} Returns the array of tag names. + */ +function parseTagList(tags) { + var tagsList = []; + var match = void 0; + while ((match = REGEXP_TAG_LIST.exec(tags)) !== null) { + tagsList.push(match[1]); + } + return tagsList; +} + +var STATE_START_TAG = 0; +var STATE_NON_WHITESPACE = 1; +var STATE_DONE = 2; + +/** + * Parses the tag name from html content + * + * @param {string} tagContent The tag content + * @return {string} Returns the tag name + */ +function parseTagName(tagContent) { + var state = STATE_START_TAG; + var tagName = ''; + var index = 0; + while (state !== STATE_DONE) { + var char = tagContent[index++].toLowerCase(); + switch (char) { + case '<': + break; + case '>': + state = STATE_DONE; + break; + default: + if (REGEXP_WHITESPACE.test(char)) { + if (state === STATE_NON_WHITESPACE) { + state = STATE_DONE; + } + } else { + if (state === STATE_START_TAG) { + state = STATE_NON_WHITESPACE; + } + if (char !== '/') { + tagName += char; + } + } + break; + } + } + return tagName; +} + +/* eslint-disable */ +var STATE_OUTPUT = 0; +var STATE_HTML = 1; +var STATE_EXCLAMATION = 2; +var STATE_COMMENT = 3; + +/** + * Strips subject tags from `subject`. + * + * @function stripTags + * @static + * @since 1.1.0 + * @memberOf Strip + * @param {string} [subject=''] The string to strip. + * @param {string|Array} [allowableTags] The string or array of tags that should not be stripped. + * @param {string} [replacement=''] The string to replace the stripped tag. + * @return {string} Returns the stripped string. + * @example + * v.trim(' Mother nature '); + * // => 'Mother nature' + * + * v.trim('--Earth--', '-'); + * // => 'Earth' + */ +function trim$1(subject, allowableTags, replacement) { + subject = coerceToString(subject); + if (subject === '') { + return ''; + } + if (!Array.isArray(allowableTags)) { + var allowableTagsString = coerceToString(allowableTags); + allowableTags = allowableTagsString === '' ? [] : parseTagList(allowableTagsString); + } + var replacementString = coerceToString(replacement); + var length = subject.length; + var hasAllowableTags = allowableTags.length > 0; + var hasSubstring = hasSubstringAtIndex.bind(null, subject); + var state = STATE_OUTPUT; + var depth = 0; + var output = ''; + var tagContent = ''; + var quote = null; + for (var index = 0; index < length; index++) { + var char = subject[index]; + var advance = false; + switch (char) { + case '<': + if (quote) { + break; + } + if (hasSubstring('< ', index, false)) { + advance = true; + break; + } + if (state === STATE_OUTPUT) { + advance = true; + state = STATE_HTML; + break; + } + if (state === STATE_HTML) { + depth++; + break; + } + advance = true; + break; + case '!': + if (state === STATE_HTML && hasSubstring('': + if (depth > 0) { + depth--; + break; + } + if (quote) { + break; + } + if (state === STATE_HTML) { + quote = null; + state = STATE_OUTPUT; + if (hasAllowableTags) { + tagContent += '>'; + var tagName = parseTagName(tagContent); + if (allowableTags.indexOf(tagName.toLowerCase()) !== -1) { + output += tagContent; + } + tagContent = ''; + } else { + tagContent += replacementString; + } + break; + } + if (state === STATE_EXCLAMATION || state === STATE_COMMENT && hasSubstring('-->', index)) { + quote = null; + state = STATE_OUTPUT; + tagContent = ''; + break; + } + advance = true; + break; + default: + advance = true; + } + if (advance) { + switch (state) { + case STATE_OUTPUT: + output += char; + break; + case STATE_HTML: + if (hasAllowableTags) { + tagContent += char; + } + break; + } + } + } + + return output; +} + var globalObject$1 = null; function getGlobalObject() { @@ -3248,6 +3512,10 @@ var version = '1.0.0'; * Functions to split a string * @namespace Split */ +/** + * Functions to strip a string + * @namespace Strip + */ /** * Util functions and properties * @namespace Util @@ -3326,6 +3594,8 @@ var functions = { split: split, words: words, + stripTags: trim$1, + noConflict: noConflict, version: version }; diff --git a/dist/voca.min.js b/dist/voca.min.js index 43a1992..1528712 100644 --- a/dist/voca.min.js +++ b/dist/voca.min.js @@ -5,5 +5,5 @@ * Copyright Dmitri Pavlutin and other contributors * Released under the MIT license */ -!function(u,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):u.v=e()}(this,function(){"use strict";function u(u){return void 0===u||null===u}function e(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return u(e)?n:Boolean(e)}function n(u){return"string"==typeof u}function r(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return u(e)?r:n(e)?e:String(e)}function t(u,n){var t=r(u),i=e(n);return""===t?"":(i&&(t=t.toLowerCase()),t.substr(0,1).toUpperCase()+t.substr(1))}function i(u){var e=r(u,"");return e.toLowerCase()}function a(u,e){return null==u?e:u}function c(e){return u(e)?null:n(e)?e:String(e)}function o(e,n,t){var i=r(e),o=void 0;if(u(n))o=Ie.test(i)?_e:Te;else if(n instanceof RegExp)o=n;else{var f=c(a(t,""));o=new RegExp(c(n),f)}return a(i.match(o),[])}function f(u,e){return 0===e?i(u):t(u,!0)}function s(u){var e=r(u);return""===e?"":o(e).map(f).join("")}function E(u){var e=r(u);return""===e?e:e.substr(0,1).toLowerCase()+e.substr(1)}function p(u){var e=r(u);return""===e?"":o(e).map(i).join("-")}function l(u){var e=r(u);return""===e?"":o(e).map(i).join("_")}function g(u){var e=r(u);return e.toUpperCase()}function h(u,e,n){return u<=e?e:u>=n?n:u}function v(u){return u===1/0?Ce:u===-(1/0)?-Ce:~~u}function A(e,n,t){var i=r(e),a=u(n)?i.length:h(v(n),0,Ce),c=r(t,"...");return a>=i.length?i:i.substr(0,n-c.length)+c}function T(u,e){var n=r(u);return n.charAt(e)}function _(u){return u>=xe&&u<=Re}function d(u){return u>=Pe&&u<=be}function F(u,e){return 1024*(u-xe)+e-Pe+65536}function I(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return u(e)?n:"number"==typeof e?e:Number(e)}function C(u,e){return u!==u?e:u}function x(u,e){var n=r(u),t=n.length,i=I(e);if(i=C(i,0),!(i<0||i>=t)){var a=n.charCodeAt(i),c=void 0;return _(a)&&t>i+1&&(c=n.charCodeAt(i+1),d(c))?F(a,c):a}}function R(e,n){var t=r(e),i=u(n)?1:h(v(n),0,Ce);return t.length<=i?t:t.substr(0,i)}function P(u,e){var n=r(u),t=I(e),i=void 0,a=0;for(t=C(t,0);null!==(i=re.exec(n));){if(a===t)return re.lastIndex=0,i[0];a++}return""}function b(e,n){var t=r(e),i=u(n)?1:h(v(n),0,Ce);return t.length<=i?t:t.substr(t.length-i,i)}function S(e,n,t){var i=r(e),a=u(n)?i.length:h(v(n),0,Ce),c=r(t,"...");if(a>=i.length)return i;var o=Ie.test(i)?_e:Te,f=0;return i.replace(o,function(u,e){var n=e+u.length;n<=a-c.length&&(f=n)}),i.substr(0,f)+c}function D(u,e,n){return r(u).slice(e,n)}function L(u,e,n){return r(u).substr(e,n)}function y(u,e,n){return r(u).substring(e,n)}function O(u){return r(u).length}function N(u){return r(u).replace(ee,"*").replace(ne,"*").length}function w(u,e){var n=r(u),t=r(e),i=t.length,a=0,c=0;if(""===n||""===t)return a;do c=n.indexOf(t,c),c!==-1&&(a++,c+=i);while(c!==-1);return a}function Y(u,e,n){var t=r(u);if(""===t||"function"!=typeof e)return 0;var i=e.bind(n);return Se.call(t,function(u,e,n){return i(e,n,t)?u+1:u},0)}function m(u,e,n){return o(u,e,n).length}function B(){this.index=0}function G(e,n){for(var t=r(e),i=u(n)?1:h(v(n),0,Ce),a="";i;)1&i&&(a+=t),i>1&&(t+=t),i>>=1;return a}function U(u,e){var n=v(e/u.length),r=e%u.length;return G(u,n+r).substr(0,e)}function j(e,n,t){var i=r(e),a=u(n)?0:h(v(n),0,Ce),c=r(t," ");return a<=i.length?i:U(c,a-i.length)+i}function H(e,n,t){var i=r(e),a=u(n)?0:h(v(n),0,Ce),c=r(t," ");return a<=i.length?i:i+U(c,a-i.length)}function X(e,n){var r=n.width;if(u(r)||e.length>=r)return e;var t=n.alignmentSpecifier===De.LITERAL_MINUS?H:j;return t(e,r,n.getPaddingCharacter())}function k(u,e,n){return n.signSpecifier===De.LITERAL_PLUS&&u>=0&&(e=De.LITERAL_PLUS+e),e}function M(u,e){var n=parseFloat(u),t=void 0;isNaN(n)&&(n=0);var i=I(e.precision,6);switch(e.typeSpecifier){case De.TYPE_FLOAT:t=n.toFixed(i);break;case De.TYPE_FLOAT_SCIENTIFIC:t=n.toExponential(i);break;case De.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:t=n.toExponential(i).toUpperCase();break;case De.TYPE_FLOAT_SHORT:case De.TYPE_FLOAT_SHORT_UPPERCASE:t=z(n,i,e)}return t=k(n,t,e),r(t)}function z(u,e,n){if(0===u)return"0";var r=0===e?1:e,t=u.toPrecision(r).replace(Ee,"");return n.typeSpecifier===De.TYPE_FLOAT_SHORT_UPPERCASE&&(t=t.toUpperCase()),t}function $(u,e){var n=parseInt(u);switch(isNaN(n)&&(n=0),n>>>=0,e.typeSpecifier){case De.TYPE_INTEGER_ASCII_CHARACTER:n=String.fromCharCode(n);break;case De.TYPE_INTEGER_BINARY:n=n.toString(De.RADIX_BINARY);break;case De.TYPE_INTEGER_OCTAL:n=n.toString(De.RADIX_OCTAL);break;case De.TYPE_INTEGER_HEXADECIMAL:n=n.toString(De.RADIX_HEXADECIMAL);break;case De.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:n=n.toString(De.RADIX_HEXADECIMAL).toUpperCase()}return r(n)}function V(u,e){var n=parseInt(u);return isNaN(n)&&(n=0),k(n,c(n),e)}function Z(e,n){var r=e,t=n.precision;return!u(t)&&r.length>t&&(r=A(r,t,"")),r}function W(u,e){var n=void 0;switch(e.typeSpecifier){case De.TYPE_STRING:n=Z;break;case De.TYPE_INTEGER_DECIMAL:case De.TYPE_INTEGER:n=V;break;case De.TYPE_INTEGER_ASCII_CHARACTER:case De.TYPE_INTEGER_BINARY:case De.TYPE_INTEGER_OCTAL:case De.TYPE_INTEGER_HEXADECIMAL:case De.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:case De.TYPE_INTEGER_UNSIGNED_DECIMAL:n=$;break;case De.TYPE_FLOAT:case De.TYPE_FLOAT_SCIENTIFIC:case De.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:case De.TYPE_FLOAT_SHORT:case De.TYPE_FLOAT_SHORT_UPPERCASE:n=M}var r=n(u,e);return X(r,e)}function J(u){this.percent=u.percent,this.signSpecifier=u.signSpecifier,this.paddingSpecifier=u.paddingSpecifier,this.alignmentSpecifier=u.alignmentSpecifier,this.width=u.width,this.precision=u.precision,this.typeSpecifier=u.typeSpecifier}function q(e,n,r){if(u(r.typeSpecifier))throw new Error("sprintf(): Unknown type specifier");if(e>n-1)throw new Error("sprintf(): Too few arguments");if(e<0)throw new Error("sprintf(): Argument number must be greater than zero")}function Q(u,e,n,r,t,i,a,c,o,f,s){var E=new J({percent:r,signSpecifier:i,paddingSpecifier:a,alignmentSpecifier:c,width:I(o,null),precision:I(f,null),typeSpecifier:s});if(E.isPercentLiteral())return n.slice(1);var p=u.getIndexByPosition(t);return u.incrementOnEmptyPosition(t),q(p,e.length,E),W(e[p],E)}function K(u){var e=r(u);if(""===e)return e;for(var n=arguments.length,t=Array(n>1?n-1:0),i=1;it.length||""===i?t:t.slice(0,a)+i+t.slice(a)}function Eu(u){var e=we[u];return e?e:u}function pu(u,e){return e}function lu(u){var e=r(u);return""===e?e:e.replace(oe,Eu).replace(ee,pu)}function gu(e,n,t){var i=r(e),a=u(n)?0:h(v(n),0,Ce),c=r(t," ");if(a<=i.length)return i;var o=a-i.length,f=v(o/2),s=o%2;return U(c,f)+i+U(c,f+s)}function hu(u,e,n){var t=r(u);return t.replace(e,n)}function vu(u){return u.toString().match(pe)[0]}function Au(e,n,t){var i=r(e),a=c(n);return null!==a&&(""===a||(t=u(t)?0:h(v(t),0,i.length),i.indexOf(a,t)!==-1))}function Tu(u,e){var n=vu(u);return Au(n,e)?u:new RegExp(u.source,n+e)}function _u(u,e,n){var t=r(u),i=e;return e instanceof RegExp?e.global||(i=Tu(e,"g")):i=new RegExp(tu(e),"g"),t.replace(i,n)}function du(u){var e=r(u);return e.split("").reverse().join("")}function Fu(u){var e=r(u);e=e.replace(ee,function(u,e,n){return Fu(n)+e}).replace(ne,"$2$1");for(var n="",t=e.length;t--;)n+=e.charAt(t);return n}function Iu(u){var e=r(u);if(""===e)return"";var n=lu(e).replace(oe,"-");return p(n)}function Cu(u,e,n,t){var i=r(u),a=r(t),c=I(e);c<0?(c=i.length+c,c<0&&(c=0)):c>i.length&&(c=i.length);var o=I(n,i.length-c);return o<0&&(o=0),i.slice(0,c)+a+i.slice(c+o)}function xu(e,n){var t=r(e);if(""===n||""===t)return t;var i=c(n);if(u(i))return t.replace(te,"");for(var a=i.length,o=!0,f=0;o;)t.indexOf(i,f)===f?f+=a:o=!1;return t.substring(f)}function Ru(e,n){var t=r(e);if(""===n||""===t)return t;var i=c(n);if(u(i))return t.replace(ie,"");for(var a=i.length,o=t.length,f=!0,s=0,E=void 0;f;)E=o-s-a,t.indexOf(i,E)===E?s+=a:f=!1;return t.substring(0,o-s)}function Pu(e,n){var t=r(e);if(""===n||""===t)return t;var i=c(n);return u(i)?t.trim():Ru(xu(t,i),i)}function bu(u,n){var t=r(u);n=a(n,{});var i=I(n[me],75),c=r(n[Be],"\n"),o=r(n[Ge],""),f=e(n[Ue],!1);if(""===t||i<=0)return o;for(var s=t.length,E=0,p="";s-E>i;)if(" "!==t[E]){var l=t.lastIndexOf(" ",i+E);l>=E?(p+=o+t.substring(E,l)+c,E=l+1):f?(p+=o+t.substring(E,i+E)+c,E+=i):(l=t.indexOf(" ",i+E),l>=0?(p+=o+t.substring(E,l)+c,E=l+1):(p+=o+t.substring(E),E=s))}else E++;return E65535?2:1;return t}function Hu(u){var e=r(u);return a(e.match(re),[])}function Xu(u,e,n){var t=r(u);return t.split(e,n)}function ku(){return null!==je?je:je="object"==typeof global&&global.Object===Object?global:"object"==typeof self&&self.Object===Object?self:new Function("return this")()}function Mu(){return this===He.v&&(He.v=Xe),this}function zu(u,e){this._wrappedValue=u,this._explicitChain=e}function $u(u){return function(){for(var e=arguments.length,n=Array(e),r=0;r&"'`]/g,se=/(%{1,2})(?:(\d+)\$)?(\+)?([ 0]|'.{1})?(-)?(\d+)?(?:\.(\d+))?([bcdiouxXeEfgGs])?/g,Ee=/\.?0+$/g,pe=/[gimuy]*$/,le="\\u2000-\\u206F",ge="\\x00-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7b-\\xBF\\xD7\\xF7",he="\\u2700-\\u27BF",ve="a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F",Ae="\\x41-\\x5a\\xc0-\\xd6\\xd8-\\xde\\u0100\\u0102\\u0104\\u0106\\u0108\\u010a\\u010c\\u010e\\u0110\\u0112\\u0114\\u0116\\u0118\\u011a\\u011c\\u011e\\u0120\\u0122\\u0124\\u0126\\u0128\\u012a\\u012c\\u012e\\u0130\\u0132\\u0134\\u0136\\u0139\\u013b\\u013d\\u013f\\u0141\\u0143\\u0145\\u0147\\u014a\\u014c\\u014e\\u0150\\u0152\\u0154\\u0156\\u0158\\u015a\\u015c\\u015e\\u0160\\u0162\\u0164\\u0166\\u0168\\u016a\\u016c\\u016e\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017b\\u017d\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018b\\u018e-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019c\\u019d\\u019f\\u01a0\\u01a2\\u01a4\\u01a6\\u01a7\\u01a9\\u01ac\\u01ae\\u01af\\u01b1-\\u01b3\\u01b5\\u01b7\\u01b8\\u01bc\\u01c4\\u01c5\\u01c7\\u01c8\\u01ca\\u01cb\\u01cd\\u01cf\\u01d1\\u01d3\\u01d5\\u01d7\\u01d9\\u01db\\u01de\\u01e0\\u01e2\\u01e4\\u01e6\\u01e8\\u01ea\\u01ec\\u01ee\\u01f1\\u01f2\\u01f4\\u01f6-\\u01f8\\u01fa\\u01fc\\u01fe\\u0200\\u0202\\u0204\\u0206\\u0208\\u020a\\u020c\\u020e\\u0210\\u0212\\u0214\\u0216\\u0218\\u021a\\u021c\\u021e\\u0220\\u0222\\u0224\\u0226\\u0228\\u022a\\u022c\\u022e\\u0230\\u0232\\u023a\\u023b\\u023d\\u023e\\u0241\\u0243-\\u0246\\u0248\\u024a\\u024c\\u024e",Te=new RegExp("(?:["+Ae+"]["+Ku+"]*)?(?:["+ve+"]["+Ku+"]*)+|(?:["+Ae+"]["+Ku+"]*)+(?!["+ve+"])|["+Wu+"]+|["+he+"]|[^"+ge+le+Ju+"]+","g"),_e=/[A-Z\xC0-\xD6\xD8-\xDE]?[a-z\xDF-\xF6\xF8-\xFF]+|[A-Z\xC0-\xD6\xD8-\xDE]+(?![a-z\xDF-\xF6\xF8-\xFF])|\d+/g,de=new RegExp("^(?:["+ve+Ae+"]["+Ku+"]*)+$"),Fe=new RegExp("^((?:["+ve+Ae+"]["+Ku+"]*)|["+Wu+"])+$"),Ie=/^[\x00-\xFF]*$/,Ce=9007199254740991,xe=55296,Re=56319,Pe=56320,be=57343,Se=Array.prototype.reduce;B.prototype.increment=function(){this.index++},B.prototype.incrementOnEmptyPosition=function(e){u(e)&&this.increment()},B.prototype.getIndexByPosition=function(e){return u(e)?this.index:e-1};var De=Object.freeze({TYPE_INTEGER:"i",TYPE_INTEGER_BINARY:"b",TYPE_INTEGER_ASCII_CHARACTER:"c",TYPE_INTEGER_DECIMAL:"d",TYPE_INTEGER_OCTAL:"o",TYPE_INTEGER_UNSIGNED_DECIMAL:"u",TYPE_INTEGER_HEXADECIMAL:"x",TYPE_INTEGER_HEXADECIMAL_UPPERCASE:"X",TYPE_FLOAT_SCIENTIFIC:"e",TYPE_FLOAT_SCIENTIFIC_UPPERCASE:"E",TYPE_FLOAT:"f",TYPE_FLOAT_SHORT:"g",TYPE_FLOAT_SHORT_UPPERCASE:"G",TYPE_STRING:"s",LITERAL_PERCENT:"%",LITERAL_SINGLE_QUOTE:"'",LITERAL_PLUS:"+",LITERAL_MINUS:"-",LITERAL_PERCENT_SPECIFIER:"%%",RADIX_BINARY:2,RADIX_OCTAL:8,RADIX_DECIMAL:10,RADIX_HEXADECIMAL:16});J.prototype.isPercentLiteral=function(){return De.LITERAL_PERCENT_SPECIFIER===this.percent},J.prototype.getPaddingCharacter=function(){var u=a(this.paddingSpecifier," ");return 2===u.length&&u[0]===De.LITERAL_SINGLE_QUOTE&&(u=u[1]),u};var Le={"<":"<",">":">","&":"&",'"':""","'":"'","`":"`"},ye={"<":/(<)|(�*3c;)|(�*60;)/gi,">":/(>)|(�*3e;)|(�*62;)/gi,"&":/(&)|(�*26;)|(�*38;)/gi,'"':/(")|(�*22;)|(�*34;)/gi,"'":/(�*27;)|(�*39;)/gi,"`":/(�*60;)|(�*96;)/gi},Oe=Object.keys(ye),Ne={3:"Ξξ",8:"Θθ",A:"AÀÁÂÃÄÅĀĂĄǍǞǠǺȀȂȦȺḀẠẢẤẦẨẪẬẮẰẲẴẶⒶⱯAΆΑА",B:"BƁƂɃḂḄḆⒷBΒБ",C:"CÇĆĈĊČƇȻḈⒸꜾCЦ",D:"DĎĐƉƊƋḊḌḎḐḒⒹꝹDÐΔД",E:"EÈÉÊËĒĔĖĘĚƎƐȄȆȨḔḖḘḚḜẸẺẼẾỀỂỄỆⒺEΈΕЕЭ",F:"FƑḞⒻꝻFΦФ",G:"GĜĞĠĢƓǤǦǴḠⒼꝽꝾꞠGΓГҐ",H:"HĤĦȞḢḤḦḨḪⒽⱧⱵꞍHΉΗХ",I:"IÌÍÎÏĨĪĬĮİƗǏȈȊḬḮỈỊⒾIΊΙΪІИ",J:"JĴɈⒿJЙ",K:"KĶƘǨḰḲḴⓀⱩꝀꝂꝄꞢKΚК",L:"LĹĻĽĿŁȽḶḸḺḼⓁⱠⱢꝆꝈꞀLΛЛ",M:"MƜḾṀṂⓂⱮMΜМ",N:"NÑŃŅŇƝǸȠṄṆṈṊⓃꞐꞤNΝН",O:"OÒÓÔÕÖØŌŎŐƆƟƠǑǪǬǾȌȎȪȬȮȰṌṎṐṒỌỎỐỒỔỖỘỚỜỞỠỢⓄꝊꝌOΌΟО",P:"PƤṔṖⓅⱣꝐꝒꝔPΠП",Q:"QɊⓆꝖꝘQ",R:"RŔŖŘȐȒɌṘṚṜṞⓇⱤꝚꞂꞦRΡР",S:"SŚŜŞŠȘṠṢṤṦṨẞⓈⱾꞄꞨSΣС",T:"TŢŤŦƬƮȚȾṪṬṮṰⓉꞆTΤТ",U:"UÙÚÛÜŨŪŬŮŰŲƯǓǕǗǙǛȔȖɄṲṴṶṸṺỤỦỨỪỬỮỰⓊUУЪ",V:"VƲɅṼṾⓋꝞVВ",W:"WŴẀẂẄẆẈⓌⱲWΏΩ",X:"XẊẌⓍXΧ",Y:"YÝŶŸƳȲɎẎỲỴỶỸỾⓎYΎΥΫЫ",Z:"ZŹŻŽƵȤẐẒẔⓏⱫⱿꝢZΖЗ",a:"aàáâãäåāăąǎǟǡǻȁȃȧɐḁẚạảấầẩẫậắằẳẵặⓐⱥaάαа",b:"bƀƃɓḃḅḇⓑbβб",c:"cçćĉċčƈȼḉↄⓒꜿcц",d:"dďđƌɖɗḋḍḏḑḓⓓꝺdðδд",e:"eèéêëēĕėęěǝȅȇȩɇɛḕḗḙḛḝẹẻẽếềểễệⓔeέεеэ",f:"fƒḟⓕꝼfφф",g:"gĝğġģǥǧǵɠᵹḡⓖꝿꞡgγгґ",h:"hĥħȟɥḣḥḧḩḫẖⓗⱨⱶhήηх",i:"iìíîïĩīĭįıǐȉȋɨḭḯỉịⓘiΐίιϊиі",j:"jĵǰɉⓙjй",k:"kķƙǩḱḳḵⓚⱪꝁꝃꝅꞣkκк",l:"lĺļľŀłſƚɫḷḹḻḽⓛⱡꝇꝉꞁlλл",m:"mɯɱḿṁṃⓜmμм",n:"nñńņňʼnƞǹɲṅṇṉṋⓝꞑꞥnνн",o:"oòóôõöøōŏőơǒǫǭǿȍȏȫȭȯȱɔɵṍṏṑṓọỏốồổỗộớờởỡợⓞꝋꝍoοόо",p:"pƥᵽṕṗⓟꝑꝓꝕpπп",q:"qɋⓠꝗꝙq",r:"rŕŗřȑȓɍɽṙṛṝṟⓡꝛꞃꞧrρр",s:"sßśŝşšșȿṡṣṥṧṩẛⓢꞅꞩsςσс",t:"tţťŧƭțʈṫṭṯṱẗⓣⱦꞇtτт",u:"uùúûüũūŭůűųưǔǖǘǚǜȕȗʉṳṵṷṹṻụủứừửữựⓤuуъ",v:"vʋʌṽṿⓥꝟvв",w:"wŵẁẃẅẇẉẘⓦⱳwωώ",x:"xẋẍⓧxχ",y:"yýÿŷƴȳɏẏẙỳỵỷỹỿⓨyΰυϋύы",z:"zźżžƶȥɀẑẓẕⓩⱬꝣzζз",OE:"ŒŒ",oe:"œœ",AE:"ÆǢǼ",ae:"æǣǽ",hv:"ƕ",OI:"Ƣ",oi:"ƣ",DZ:"DŽDZ",Dz:"DžDz",dz:"dždz",LJ:"LJ",Lj:"Lj",lj:"lj",NJ:"NJ",Nj:"Nj",nj:"nj",OU:"Ȣ",ou:"ȣ",TZ:"Ꜩ",tz:"ꜩ",AA:"Ꜳ",aa:"ꜳ",AO:"Ꜵ",ao:"ꜵ",AU:"Ꜷ",au:"ꜷ",AV:"ꜸꜺ",av:"ꜹꜻ",AY:"Ꜽ",ay:"ꜽ",OO:"Ꝏ",oo:"ꝏ",VY:"Ꝡ",vy:"ꝡ",TH:"Þ",th:"þ",PS:"Ψ",ps:"ψ",Yo:"Ё",Ye:"Є",Yi:"Ї",Zh:"Ж",Ch:"Ч",Sh:"ШЩ","":"Ьь",Yu:"Ю",Ya:"Я",zh:"ж",ch:"ч",sh:"шщ",yu:"ю",ya:"я",yo:"ё",ye:"є",yi:"ї"},we={},Ye=void 0;Object.keys(Ne).forEach(function(u){var e=Ne[u];for(Ye=0;Ye1&&void 0!==arguments[1]&&arguments[1];return e(u)?n:Boolean(u)}function n(e){return"string"==typeof e}function r(u){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e(u)?r:n(u)?u:String(u)}function t(e,n){var t=r(e),i=u(n);return""===t?"":(i&&(t=t.toLowerCase()),t.substr(0,1).toUpperCase()+t.substr(1))}function i(e){var u=r(e,"");return u.toLowerCase()}function a(e,u){return null==e?u:e}function c(u){return e(u)?null:n(u)?u:String(u)}function o(u,n,t){var i=r(u),o=void 0;if(e(n))o=Du.test(i)?Pu:Ru;else if(n instanceof RegExp)o=n;else{var f=c(a(t,""));o=new RegExp(c(n),f)}return a(i.match(o),[])}function f(e,u){return 0===u?i(e):t(e,!0)}function s(e){var u=r(e);return""===u?"":o(u).map(f).join("")}function E(e){var u=r(e);return""===u?u:u.substr(0,1).toLowerCase()+u.substr(1)}function p(e){var u=r(e);return""===u?"":o(u).map(i).join("-")}function l(e){var u=r(e);return""===u?"":o(u).map(i).join("_")}function g(e){var u=r(e);return u.toUpperCase()}function h(e,u,n){return e<=u?u:e>=n?n:e}function v(e){return e===1/0?yu:e===-(1/0)?-yu:~~e}function A(u,n,t){var i=r(u),a=e(n)?i.length:h(v(n),0,yu),c=r(t,"...");return a>=i.length?i:i.substr(0,n-c.length)+c}function d(e,u){var n=r(e);return n.charAt(u)}function T(e){return e>=wu&&e<=Ou}function _(e){return e>=Nu&&e<=Yu}function F(e,u){return 1024*(e-wu)+u-Nu+65536}function C(u){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e(u)?n:"number"==typeof u?u:Number(u)}function I(e,u){return e!==e?u:e}function x(e,u){var n=r(e),t=n.length,i=C(u);if(i=I(i,0),!(i<0||i>=t)){var a=n.charCodeAt(i),c=void 0;return T(a)&&t>i+1&&(c=n.charCodeAt(i+1),_(c))?F(a,c):a}}function b(u,n){var t=r(u),i=e(n)?1:h(v(n),0,yu);return t.length<=i?t:t.substr(0,i)}function R(e,u){var n=r(e),t=C(u),i=void 0,a=0;for(t=I(t,0);null!==(i=fu.exec(n));){if(a===t)return fu.lastIndex=0,i[0];a++}return""}function P(u,n){var t=r(u),i=e(n)?1:h(v(n),0,yu);return t.length<=i?t:t.substr(t.length-i,i)}function L(u,n,t){var i=r(u),a=e(n)?i.length:h(v(n),0,yu),c=r(t,"...");if(a>=i.length)return i;var o=Du.test(i)?Pu:Ru,f=0;return i.replace(o,function(e,u){var n=u+e.length;n<=a-c.length&&(f=n)}),i.substr(0,f)+c}function S(e,u,n){return r(e).slice(u,n)}function D(e,u,n){return r(e).substr(u,n)}function y(e,u,n){return r(e).substring(u,n)}function w(e){return r(e).length}function O(e){return r(e).replace(cu,"*").replace(ou,"*").length}function N(e,u){var n=r(e),t=r(u),i=t.length,a=0,c=0;if(""===n||""===t)return a;do c=n.indexOf(t,c),c!==-1&&(a++,c+=i);while(c!==-1);return a}function Y(e,u,n){var t=r(e);if(""===t||"function"!=typeof u)return 0;var i=u.bind(n);return mu.call(t,function(e,u,n){return i(u,n,t)?e+1:e},0)}function m(e,u,n){return o(e,u,n).length}function B(){this.index=0}function k(u,n){for(var t=r(u),i=e(n)?1:h(v(n),0,yu),a="";i;)1&i&&(a+=t),i>1&&(t+=t),i>>=1;return a}function G(e,u){var n=v(u/e.length),r=u%e.length;return k(e,n+r).substr(0,u)}function U(u,n,t){var i=r(u),a=e(n)?0:h(v(n),0,yu),c=r(t," ");return a<=i.length?i:G(c,a-i.length)+i}function j(u,n,t){var i=r(u),a=e(n)?0:h(v(n),0,yu),c=r(t," ");return a<=i.length?i:i+G(c,a-i.length)}function H(u,n){var r=n.width;if(e(r)||u.length>=r)return u;var t=n.alignmentSpecifier===Bu.LITERAL_MINUS?j:U;return t(u,r,n.getPaddingCharacter())}function X(e,u,n){return n.signSpecifier===Bu.LITERAL_PLUS&&e>=0&&(u=Bu.LITERAL_PLUS+u),u}function M(e,u){var n=parseFloat(e),t=void 0;isNaN(n)&&(n=0);var i=C(u.precision,6);switch(u.typeSpecifier){case Bu.TYPE_FLOAT:t=n.toFixed(i);break;case Bu.TYPE_FLOAT_SCIENTIFIC:t=n.toExponential(i);break;case Bu.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:t=n.toExponential(i).toUpperCase();break;case Bu.TYPE_FLOAT_SHORT:case Bu.TYPE_FLOAT_SHORT_UPPERCASE:t=z(n,i,u)}return t=X(n,t,u),r(t)}function z(e,u,n){if(0===e)return"0";var r=0===u?1:u,t=e.toPrecision(r).replace(du,"");return n.typeSpecifier===Bu.TYPE_FLOAT_SHORT_UPPERCASE&&(t=t.toUpperCase()),t}function $(e,u){var n=parseInt(e);switch(isNaN(n)&&(n=0),n>>>=0,u.typeSpecifier){case Bu.TYPE_INTEGER_ASCII_CHARACTER:n=String.fromCharCode(n);break;case Bu.TYPE_INTEGER_BINARY:n=n.toString(Bu.RADIX_BINARY);break;case Bu.TYPE_INTEGER_OCTAL:n=n.toString(Bu.RADIX_OCTAL);break;case Bu.TYPE_INTEGER_HEXADECIMAL:n=n.toString(Bu.RADIX_HEXADECIMAL);break;case Bu.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:n=n.toString(Bu.RADIX_HEXADECIMAL).toUpperCase()}return r(n)}function V(e,u){var n=parseInt(e);return isNaN(n)&&(n=0),X(n,c(n),u)}function Z(u,n){var r=u,t=n.precision;return!e(t)&&r.length>t&&(r=A(r,t,"")),r}function W(e,u){var n=void 0;switch(u.typeSpecifier){case Bu.TYPE_STRING:n=Z;break;case Bu.TYPE_INTEGER_DECIMAL:case Bu.TYPE_INTEGER:n=V;break;case Bu.TYPE_INTEGER_ASCII_CHARACTER:case Bu.TYPE_INTEGER_BINARY:case Bu.TYPE_INTEGER_OCTAL:case Bu.TYPE_INTEGER_HEXADECIMAL:case Bu.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:case Bu.TYPE_INTEGER_UNSIGNED_DECIMAL:n=$;break;case Bu.TYPE_FLOAT:case Bu.TYPE_FLOAT_SCIENTIFIC:case Bu.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:case Bu.TYPE_FLOAT_SHORT:case Bu.TYPE_FLOAT_SHORT_UPPERCASE:n=M}var r=n(e,u);return H(r,u)}function J(e){this.percent=e.percent,this.signSpecifier=e.signSpecifier,this.paddingSpecifier=e.paddingSpecifier,this.alignmentSpecifier=e.alignmentSpecifier,this.width=e.width,this.precision=e.precision,this.typeSpecifier=e.typeSpecifier}function q(u,n,r){if(e(r.typeSpecifier))throw new Error("sprintf(): Unknown type specifier");if(u>n-1)throw new Error("sprintf(): Too few arguments");if(u<0)throw new Error("sprintf(): Argument number must be greater than zero")}function Q(e,u,n,r,t,i,a,c,o,f,s){var E=new J({percent:r,signSpecifier:i,paddingSpecifier:a,alignmentSpecifier:c,width:C(o,null),precision:C(f,null),typeSpecifier:s});if(E.isPercentLiteral())return n.slice(1);var p=e.getIndexByPosition(t);return e.incrementOnEmptyPosition(t),q(p,u.length,E),W(u[p],E)}function K(e){var u=r(e);if(""===u)return u;for(var n=arguments.length,t=Array(n>1?n-1:0),i=1;it.length||""===i?t:t.slice(0,a)+i+t.slice(a)}function Ee(){return null!==Hu?Hu:(Hu={},Object.keys(ju).forEach(function(e){for(var u=ju[e],n=0;ni.length&&(c=i.length);var o=C(n,i.length-c);return o<0&&(o=0),i.slice(0,c)+a+i.slice(c+o)}function be(u,n){var t=r(u);if(""===n||""===t)return t;var i=c(n);if(e(i))return t.replace(Eu,"");for(var a=i.length,o=!0,f=0;o;)t.indexOf(i,f)===f?f+=a:o=!1;return t.substring(f)}function Re(u,n){var t=r(u);if(""===n||""===t)return t;var i=c(n);if(e(i))return t.replace(pu,"");for(var a=i.length,o=t.length,f=!0,s=0,E=void 0;f;)E=o-s-a,t.indexOf(i,E)===E?s+=a:f=!1;return t.substring(0,o-s)}function Pe(u,n){var t=r(u);if(""===n||""===t)return t;var i=c(n);return e(i)?t.trim():Re(be(t,i),i)}function Le(e){return{width:C(e[Xu],75),newLine:r(e[Mu],"\n"),indent:r(e[zu],""),cut:u(e[$u],!1)}}function Se(e){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r(e),t=Le(u),i=t.width,a=t.newLine,c=t.indent,o=t.cut;if(""===n||i<=0)return c;for(var f=n.length,s=n.substring.bind(n),E=0,p="";f-E>i;)if(" "!==n[E]){var l=n.lastIndexOf(" ",i+E);l>=E?(p+=c+s(E,l)+a,E=l+1):o?(p+=c+s(E,i+E)+a,E+=i):(l=n.indexOf(" ",i+E),l>=0?(p+=c+s(E,l)+a,E=l+1):(p+=c+s(E),E=f))}else E++;return E65535?2:1;return t}function Xe(e){var u=r(e);return a(u.match(fu),[])}function Me(e,u,n){var t=r(e);return t.split(u,n)}function ze(e,u,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],t=0;r&&(t=-u.length+1);var i=e.substr(n+t,u.length);return i.toLowerCase()===u}function $e(e){for(var u=[],n=void 0;null!==(n=_u.exec(e));)u.push(n[1]);return u}function Ve(e){for(var u=Vu,n="",r=0;u!==Wu;){var t=e[r++].toLowerCase();switch(t){case"<":break;case">":u=Wu;break;default:su.test(t)?u===Zu&&(u=Wu):(u===Vu&&(u=Zu),"/"!==t&&(n+=t))}}return n}function Ze(e,u,n){if(e=r(e),""===e)return"";if(!Array.isArray(u)){var t=r(u);u=""===t?[]:$e(t)}for(var i=r(n),a=e.length,c=u.length>0,o=ze.bind(null,e),f=Ju,s=0,E="",p="",l=null,g=0;g":if(s>0){s--;break}if(l)break;if(f===qu){if(l=null,f=Ju,c){p+=">";var A=Ve(p);u.indexOf(A.toLowerCase())!==-1&&(E+=p),p=""}else p+=i;break}if(f===Qu||f===Ku&&o("-->",g)){l=null,f=Ju,p="";break}v=!0;break;default:v=!0}if(v)switch(f){case Ju:E+=h;break;case qu:c&&(p+=h)}}return E}function We(){return null!==en?en:en="object"==typeof global&&global.Object===Object?global:"object"==typeof self&&self.Object===Object?self:new Function("return this")()}function Je(){return this===un.v&&(un.v=nn),this}function qe(e,u){this._wrappedValue=e,this._explicitChain=u}function Qe(e){return function(){for(var u=arguments.length,n=Array(u),r=0;r&"'`]/g,Au=/(%{1,2})(?:(\d+)\$)?(\+)?([ 0]|'.{1})?(-)?(\d+)?(?:\.(\d+))?([bcdiouxXeEfgGs])?/g,du=/\.?0+$/g,Tu=/[gimuy]*$/,_u=/<([A-Za-z0-9]+)>/g,Fu="\\u2000-\\u206F",Cu="\\x00-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7b-\\xBF\\xD7\\xF7",Iu="\\u2700-\\u27BF",xu="a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F",bu="\\x41-\\x5a\\xc0-\\xd6\\xd8-\\xde\\u0100\\u0102\\u0104\\u0106\\u0108\\u010a\\u010c\\u010e\\u0110\\u0112\\u0114\\u0116\\u0118\\u011a\\u011c\\u011e\\u0120\\u0122\\u0124\\u0126\\u0128\\u012a\\u012c\\u012e\\u0130\\u0132\\u0134\\u0136\\u0139\\u013b\\u013d\\u013f\\u0141\\u0143\\u0145\\u0147\\u014a\\u014c\\u014e\\u0150\\u0152\\u0154\\u0156\\u0158\\u015a\\u015c\\u015e\\u0160\\u0162\\u0164\\u0166\\u0168\\u016a\\u016c\\u016e\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017b\\u017d\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018b\\u018e-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019c\\u019d\\u019f\\u01a0\\u01a2\\u01a4\\u01a6\\u01a7\\u01a9\\u01ac\\u01ae\\u01af\\u01b1-\\u01b3\\u01b5\\u01b7\\u01b8\\u01bc\\u01c4\\u01c5\\u01c7\\u01c8\\u01ca\\u01cb\\u01cd\\u01cf\\u01d1\\u01d3\\u01d5\\u01d7\\u01d9\\u01db\\u01de\\u01e0\\u01e2\\u01e4\\u01e6\\u01e8\\u01ea\\u01ec\\u01ee\\u01f1\\u01f2\\u01f4\\u01f6-\\u01f8\\u01fa\\u01fc\\u01fe\\u0200\\u0202\\u0204\\u0206\\u0208\\u020a\\u020c\\u020e\\u0210\\u0212\\u0214\\u0216\\u0218\\u021a\\u021c\\u021e\\u0220\\u0222\\u0224\\u0226\\u0228\\u022a\\u022c\\u022e\\u0230\\u0232\\u023a\\u023b\\u023d\\u023e\\u0241\\u0243-\\u0246\\u0248\\u024a\\u024c\\u024e",Ru=new RegExp("(?:["+bu+"]["+iu+"]*)?(?:["+xu+"]["+iu+"]*)+|(?:["+bu+"]["+iu+"]*)+(?!["+xu+"])|["+uu+"]+|["+Iu+"]|[^"+Cu+Fu+nu+"]+","g"),Pu=/[A-Z\xC0-\xD6\xD8-\xDE]?[a-z\xDF-\xF6\xF8-\xFF]+|[A-Z\xC0-\xD6\xD8-\xDE]+(?![a-z\xDF-\xF6\xF8-\xFF])|\d+/g,Lu=new RegExp("^(?:["+xu+bu+"]["+iu+"]*)+$"),Su=new RegExp("^((?:["+xu+bu+"]["+iu+"]*)|["+uu+"])+$"),Du=/^[\x00-\xFF]*$/,yu=9007199254740991,wu=55296,Ou=56319,Nu=56320,Yu=57343,mu=Array.prototype.reduce;B.prototype.increment=function(){this.index++},B.prototype.incrementOnEmptyPosition=function(u){e(u)&&this.increment()},B.prototype.getIndexByPosition=function(u){return e(u)?this.index:u-1};var Bu=Object.freeze({TYPE_INTEGER:"i",TYPE_INTEGER_BINARY:"b",TYPE_INTEGER_ASCII_CHARACTER:"c",TYPE_INTEGER_DECIMAL:"d",TYPE_INTEGER_OCTAL:"o",TYPE_INTEGER_UNSIGNED_DECIMAL:"u",TYPE_INTEGER_HEXADECIMAL:"x",TYPE_INTEGER_HEXADECIMAL_UPPERCASE:"X",TYPE_FLOAT_SCIENTIFIC:"e",TYPE_FLOAT_SCIENTIFIC_UPPERCASE:"E",TYPE_FLOAT:"f",TYPE_FLOAT_SHORT:"g",TYPE_FLOAT_SHORT_UPPERCASE:"G",TYPE_STRING:"s",LITERAL_PERCENT:"%",LITERAL_SINGLE_QUOTE:"'",LITERAL_PLUS:"+",LITERAL_MINUS:"-",LITERAL_PERCENT_SPECIFIER:"%%",RADIX_BINARY:2,RADIX_OCTAL:8,RADIX_DECIMAL:10,RADIX_HEXADECIMAL:16});J.prototype.isPercentLiteral=function(){return Bu.LITERAL_PERCENT_SPECIFIER===this.percent},J.prototype.getPaddingCharacter=function(){var e=a(this.paddingSpecifier," ");return 2===e.length&&e[0]===Bu.LITERAL_SINGLE_QUOTE&&(e=e[1]),e};var ku={"<":"<",">":">","&":"&",'"':""","'":"'","`":"`"},Gu={"<":/(<)|(�*3c;)|(�*60;)/gi,">":/(>)|(�*3e;)|(�*62;)/gi,"&":/(&)|(�*26;)|(�*38;)/gi,'"':/(")|(�*22;)|(�*34;)/gi,"'":/(�*27;)|(�*39;)/gi,"`":/(�*60;)|(�*96;)/gi},Uu=Object.keys(Gu),ju={3:"Ξξ",8:"Θθ",A:"AÀÁÂÃÄÅĀĂĄǍǞǠǺȀȂȦȺḀẠẢẤẦẨẪẬẮẰẲẴẶⒶⱯAΆΑА",B:"BƁƂɃḂḄḆⒷBΒБ",C:"CÇĆĈĊČƇȻḈⒸꜾCЦ",D:"DĎĐƉƊƋḊḌḎḐḒⒹꝹDÐΔД",E:"EÈÉÊËĒĔĖĘĚƎƐȄȆȨḔḖḘḚḜẸẺẼẾỀỂỄỆⒺEΈΕЕЭ",F:"FƑḞⒻꝻFΦФ",G:"GĜĞĠĢƓǤǦǴḠⒼꝽꝾꞠGΓГҐ",H:"HĤĦȞḢḤḦḨḪⒽⱧⱵꞍHΉΗХ",I:"IÌÍÎÏĨĪĬĮİƗǏȈȊḬḮỈỊⒾIΊΙΪІИ",J:"JĴɈⒿJЙ",K:"KĶƘǨḰḲḴⓀⱩꝀꝂꝄꞢKΚК",L:"LĹĻĽĿŁȽḶḸḺḼⓁⱠⱢꝆꝈꞀLΛЛ",M:"MƜḾṀṂⓂⱮMΜМ",N:"NÑŃŅŇƝǸȠṄṆṈṊⓃꞐꞤNΝН",O:"OÒÓÔÕÖØŌŎŐƆƟƠǑǪǬǾȌȎȪȬȮȰṌṎṐṒỌỎỐỒỔỖỘỚỜỞỠỢⓄꝊꝌOΌΟО",P:"PƤṔṖⓅⱣꝐꝒꝔPΠП",Q:"QɊⓆꝖꝘQ",R:"RŔŖŘȐȒɌṘṚṜṞⓇⱤꝚꞂꞦRΡР",S:"SŚŜŞŠȘṠṢṤṦṨẞⓈⱾꞄꞨSΣС",T:"TŢŤŦƬƮȚȾṪṬṮṰⓉꞆTΤТ",U:"UÙÚÛÜŨŪŬŮŰŲƯǓǕǗǙǛȔȖɄṲṴṶṸṺỤỦỨỪỬỮỰⓊUУЪ",V:"VƲɅṼṾⓋꝞVВ",W:"WŴẀẂẄẆẈⓌⱲWΏΩ",X:"XẊẌⓍXΧ",Y:"YÝŶŸƳȲɎẎỲỴỶỸỾⓎYΎΥΫЫ",Z:"ZŹŻŽƵȤẐẒẔⓏⱫⱿꝢZΖЗ",a:"aàáâãäåāăąǎǟǡǻȁȃȧɐḁẚạảấầẩẫậắằẳẵặⓐⱥaάαа",b:"bƀƃɓḃḅḇⓑbβб",c:"cçćĉċčƈȼḉↄⓒꜿcц",d:"dďđƌɖɗḋḍḏḑḓⓓꝺdðδд",e:"eèéêëēĕėęěǝȅȇȩɇɛḕḗḙḛḝẹẻẽếềểễệⓔeέεеэ",f:"fƒḟⓕꝼfφф",g:"gĝğġģǥǧǵɠᵹḡⓖꝿꞡgγгґ",h:"hĥħȟɥḣḥḧḩḫẖⓗⱨⱶhήηх",i:"iìíîïĩīĭįıǐȉȋɨḭḯỉịⓘiΐίιϊиі",j:"jĵǰɉⓙjй",k:"kķƙǩḱḳḵⓚⱪꝁꝃꝅꞣkκк",l:"lĺļľŀłſƚɫḷḹḻḽⓛⱡꝇꝉꞁlλл",m:"mɯɱḿṁṃⓜmμм",n:"nñńņňʼnƞǹɲṅṇṉṋⓝꞑꞥnνн",o:"oòóôõöøōŏőơǒǫǭǿȍȏȫȭȯȱɔɵṍṏṑṓọỏốồổỗộớờởỡợⓞꝋꝍoοόо",p:"pƥᵽṕṗⓟꝑꝓꝕpπп",q:"qɋⓠꝗꝙq",r:"rŕŗřȑȓɍɽṙṛṝṟⓡꝛꞃꞧrρр",s:"sßśŝşšșȿṡṣṥṧṩẛⓢꞅꞩsςσс",t:"tţťŧƭțʈṫṭṯṱẗⓣⱦꞇtτт",u:"uùúûüũūŭůűųưǔǖǘǚǜȕȗʉṳṵṷṹṻụủứừửữựⓤuуъ",v:"vʋʌṽṿⓥꝟvв",w:"wŵẁẃẅẇẉẘⓦⱳwωώ",x:"xẋẍⓧxχ",y:"yýÿŷƴȳɏẏẙỳỵỷỹỿⓨyΰυϋύы",z:"zźżžƶȥɀẑẓẕⓩⱬꝣzζз",OE:"ŒŒ",oe:"œœ",AE:"ÆǢǼ",ae:"æǣǽ",hv:"ƕ",OI:"Ƣ",oi:"ƣ",DZ:"DŽDZ",Dz:"DžDz",dz:"dždz",LJ:"LJ",Lj:"Lj",lj:"lj",NJ:"NJ",Nj:"Nj",nj:"nj",OU:"Ȣ",ou:"ȣ",TZ:"Ꜩ",tz:"ꜩ",AA:"Ꜳ",aa:"ꜳ",AO:"Ꜵ",ao:"ꜵ",AU:"Ꜷ",au:"ꜷ",AV:"ꜸꜺ",av:"ꜹꜻ",AY:"Ꜽ",ay:"ꜽ",OO:"Ꝏ",oo:"ꝏ",VY:"Ꝡ",vy:"ꝡ",TH:"Þ",th:"þ",PS:"Ψ",ps:"ψ",Yo:"Ё",Ye:"Є",Yi:"Ї",Zh:"Ж",Ch:"Ч",Sh:"ШЩ","":"Ьь",Yu:"Ю",Ya:"Я",zh:"ж",ch:"ч",sh:"шщ",yu:"ю",ya:"я",yo:"ё",ye:"є",yi:"ї"},Hu=null,Xu="width",Mu="newLine",zu="indent",$u="cut",Vu=0,Zu=1,Wu=2,Ju=0,qu=1,Qu=2,Ku=3,en=null,un=We(),nn=un.v,rn="1.0.0",tn={camelCase:s,capitalize:t,decapitalize:E,kebabCase:p,lowerCase:i,snakeCase:l,upperCase:g,count:w,countGraphemes:O,countSubstrings:N,countWhere:Y,countWords:m,escapeHtml:re,escapeRegExp:te,unescapeHtml:ae,sprintf:K,vprintf:ue,indexOf:ce,lastIndexOf:oe,search:fe,charAt:d,codePointAt:x,first:b,graphemeAt:R,last:P,prune:L,slice:S,substr:D,substring:y,truncate:A,insert:se,latinise:ge,pad:he,padLeft:U,padRight:j,repeat:k,replace:ve,replaceAll:_e,reverse:Fe,reverseGrapheme:Ce,slugify:Ie,splice:xe,trim:Pe,trimLeft:be,trimRight:Re,wordWrap:Se,endsWith:De,includes:de,isAlpha:ye,isAlphaDigit:we,isBlank:Oe,isDigit:Ne,isEmpty:Ye,isLowerCase:me,isNumeric:Be,isString:n,isUpperCase:ke,matches:Ge,startsWith:Ue,chars:je,codePoints:He,graphemes:Xe,split:Me,words:o,stripTags:Ze,noConflict:Je,version:rn};qe.prototype.value=function(){return this._wrappedValue},qe.prototype.valueOf=function(){return this.value()},qe.prototype.toJSON=function(){return this.value()},qe.prototype.toString=function(){return String(this.value())},qe.prototype.chain=function(){return new qe(this._wrappedValue,!0)},qe.prototype.thru=function(e){return"function"==typeof e?new qe(e(this._wrappedValue),this._explicitChain):this},qe.prototype._explicitChain=!0,Object.keys(tn).forEach(function(e){qe.prototype[e]=Qe(tn[e])});var an=Object.assign||function(e){for(var u=1;u true\n *\n * v.isString(560);\n * // => false\n */\nexport default function isString(subject) {\n return typeof subject === 'string';\n}","import isNil from 'helper/object/is_nil';\nimport isString from 'query/is_string';\n\n/**\n * Get the string representation of the `value`.\n * Converts the `value` to string.\n * If `value` is `null` or `undefined`, return `defaultValue`.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @param {*} [defaultValue=''] The default value to return.\n * @return {string|null} Returns the string representation of `value`. Returns `defaultValue` if `value` is\n * `null` or `undefined`.\n */\nexport default function coerceToString(value, defaultValue = '') {\n if (isNil(value)) {\n return defaultValue;\n }\n if (isString(value)) {\n return value;\n }\n return String(value);\n}","import coerceToBoolean from 'helper/boolean/coerce_to_boolean';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the first character of `subject` to upper case. If `restToLower` is `true`, convert the rest of\n * `subject` to lower case.\n *\n * @function capitalize\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to capitalize.\n * @param {boolean} [restToLower=false] Convert the rest of `subject` to lower case.\n * @return {string} Returns the capitalized string.\n * @example\n * v.capitalize('apple');\n * // => 'Apple'\n *\n * v.capitalize('aPPle', true);\n * // => 'Apple'\n */\nexport default function capitalize(subject, restToLower) {\n let subjectString = coerceToString(subject);\n const restToLowerCaseBoolean = coerceToBoolean(restToLower);\n if (subjectString === '') {\n return '';\n }\n if (restToLowerCaseBoolean) {\n subjectString = subjectString.toLowerCase();\n }\n return subjectString.substr(0, 1).toUpperCase() + subjectString.substr(1);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the `subject` to lower case.\n *\n * @function lowerCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to lower case.\n * @return {string} Returns the lower case string.\n * @example\n * v.lowerCase('Green');\n * // => 'green'\n */\nexport default function lowerCase(subject) {\n const subjectString = coerceToString(subject, '');\n return subjectString.toLowerCase();\n}","/**\n * Verifies if `value` is `undefined` or `null` and returns `defaultValue`. In other case returns `value`.\n *\n * @ignore\n * @function nilDefault\n * @param {*} value The value to verify.\n * @param {*} defaultValue The default value.\n * @return {*} Returns `defaultValue` if `value` is `undefined` or `null`, otherwise `defaultValue`.\n */\nexport default function nilDefault(value, defaultValue) {\n return value == null ? defaultValue : value;\n}","import isNil from 'helper/object/is_nil';\nimport isString from 'query/is_string';\n\n/**\n * Get the string representation of the `value`.\n * Converts the `value` to string.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @return {string|null} Returns the string representation of `value`.\n */\nexport default function toString(value) {\n if (isNil(value)) {\n return null;\n }\n if (isString(value)) {\n return value;\n }\n return String(value);\n}","import { REGEXP_EXTENDED_ASCII, REGEXP_LATIN_WORD, REGEXP_WORD } from 'helper/reg_exp/const_extended';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport nilDefault from 'helper/undefined/nil_default';\nimport toString from 'helper/string/to_string';\n\n/**\n * Splits `subject` into an array of words.\n *\n * @function words\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into words.\n * @param {string|RegExp} [pattern] The pattern to watch words. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {Array} Returns the array of words.\n * @example\n * v.words('gravity can cross dimensions');\n * // => ['gravity', 'can', 'cross', 'dimensions']\n *\n * v.words('GravityCanCrossDimensions');\n * // => ['Gravity', 'Can', 'Cross', 'Dimensions']\n *\n * v.words('Gravity - can cross dimensions!');\n * // => ['Gravity', 'can', 'cross', 'dimensions']\n *\n * v.words('Earth gravity', /[^\\s]+/g);\n * // => ['Earth', 'gravity']\n */\nexport default function words(subject, pattern, flags) {\n const subjectString = coerceToString(subject);\n let patternRegExp;\n if (isNil(pattern)) {\n patternRegExp = REGEXP_EXTENDED_ASCII.test(subjectString) ? REGEXP_LATIN_WORD : REGEXP_WORD;\n } else if (pattern instanceof RegExp) {\n patternRegExp = pattern;\n } else {\n const flagsString = toString(nilDefault(flags, ''));\n patternRegExp = new RegExp(toString(pattern), flagsString);\n }\n return nilDefault(subjectString.match(patternRegExp), []);\n}","import capitalize from 'case/capitalize';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Transforms the `word` into camel case chunk.\n *\n * @param {string} word The word string\n * @param {number} index The index of the word in phrase.\n * @return {string} The transformed word.\n * @ignore\n */\nfunction wordToCamel(word, index) {\n return index === 0 ? lowerCase(word) : capitalize(word, true);\n}\n\n/**\n * Converts the `subject` to camel case.\n *\n * @function camelCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to camel case.\n * @return {string} The camel case string.\n * @example\n * v.camelCase('bird flight');\n * // => 'birdFlight'\n *\n * v.camelCase('BirdFlight');\n * // => 'birdFlight'\n *\n * v.camelCase('-BIRD-FLIGHT-');\n * // => 'birdFlight'\n */\nexport default function camelCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(wordToCamel).join('');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the first character of `subject` to lower case.\n *\n * @function decapitalize\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to decapitalize.\n * @return {string} Returns the decapitalized string.\n * @example\n * v.decapitalize('Sun');\n * // => 'sun'\n */\nexport default function decapitalize(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return subjectString;\n }\n return subjectString.substr(0, 1).toLowerCase() + subjectString.substr(1);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Converts the `subject` to kebab case,\n * also called spinal case or lisp case.\n *\n * @function kebabCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to kebab case.\n * @return {string} Returns the kebab case string.\n * @example\n * v.kebabCase('goodbye blue sky');\n * // => 'goodbye-blue-sky'\n *\n * v.kebabCase('GoodbyeBlueSky');\n * // => 'goodbye-blue-sky'\n *\n * v.kebabCase('-Goodbye-Blue-Sky-');\n * // => 'goodbye-blue-sky'\n */\nexport default function kebabCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(lowerCase).join('-');\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Converts the `subject` to snake case.\n *\n * @function snakeCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to snake case.\n * @return {string} Returns the snake case string.\n * @example\n * v.snakeCase('learning to fly');\n * // => 'learning_to_fly'\n *\n * v.snakeCase('LearningToFly');\n * // => 'learning_to_fly'\n *\n * v.snakeCase('-Learning-To-Fly-');\n * // => 'learning_to_fly'\n */\nexport default function snakeCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(lowerCase).join('_');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the `subject` to upper case.\n *\n * @function upperCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to upper case.\n * @return {string} Returns the upper case string.\n * @example\n * v.upperCase('school');\n * // => 'SCHOOL'\n */\nexport default function upperCase(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.toUpperCase();\n}","/**\n * Clip the number to interval `downLimit` to `upLimit`.\n *\n * @ignore\n * @function clipNumber\n * @param {number} value The number to clip\n * @param {number} downLimit The down limit\n * @param {number} upLimit The upper limit\n * @return {number} The clipped number\n */\nexport default function clipNumber(value, downLimit, upLimit) {\n if (value <= downLimit) {\n return downLimit;\n }\n if (value >= upLimit) {\n return upLimit;\n }\n return value;\n}","import { MAX_SAFE_INTEGER } from 'helper/number/const';\n\n/**\n * Transforms `value` to an integer.\n *\n * @ignore\n * @function toInteger\n * @param {number} value The number to transform.\n * @returns {number} Returns the transformed integer.\n */\nexport default function toInteger(value) {\n if (value === Infinity) {\n return MAX_SAFE_INTEGER;\n }\n if (value === -Infinity) {\n return - MAX_SAFE_INTEGER;\n }\n return ~~value;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Truncates `subject` to a new `length`.\n *\n * @function truncate\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to truncate.\n * @param {int} length The length to truncate the string.\n * @param {string} [end='...'] The string to be added at the end.\n * @return {string} Returns the truncated string.\n * @example\n * v.truncate('Once upon a time', 7);\n * // => 'Once...'\n *\n * v.truncate('Good day, Little Red Riding Hood', 14, ' (...)');\n * // => 'Good day (...)'\n *\n * v.truncate('Once upon', 10);\n * // => 'Once upon'\n */\nexport default function truncate(subject, length, end) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? subjectString.length : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const endString = coerceToString(end, '...');\n if (lengthInt >= subjectString.length) {\n return subjectString;\n }\n return subjectString.substr(0, length - endString.length) + endString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Access a character from `subject` at specified `position`.\n *\n * @function charAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {numbers} position The position to get the character.\n * @return {string} Returns the character at specified position.\n * @example\n * v.charAt('helicopter', 0);\n * // => 'h'\n *\n * v.charAt('helicopter', 1);\n * // => 'e'\n */\nexport default function charAt(subject, position) {\n const subjectString = coerceToString(subject);\n return subjectString.charAt(position);\n}","const HIGH_SURROGATE_START = 0xD800;\nconst HIGH_SURROGATE_END = 0xDBFF;\nconst LOW_SURROGATE_START = 0xDC00;\nconst LOW_SURROGATE_END = 0xDFFF;\n\n/**\n * Checks if `codePoint` is a high-surrogate number from range 0xD800 to 0xDBFF.\n *\n * @ignore\n * @param {number} codePoint The code point number to be verified\n * @return {boolean} Returns a boolean whether `codePoint` is a high-surrogate number.\n */\nexport function isHighSurrogate(codePoint) {\n return codePoint >= HIGH_SURROGATE_START && codePoint <= HIGH_SURROGATE_END;\n}\n\n/**\n * Checks if `codePoint` is a low-surrogate number from range 0xDC00 to 0xDFFF.\n *\n * @ignore\n * @param {number} codePoint The code point number to be verified\n * @return {boolean} Returns a boolean whether `codePoint` is a low-surrogate number.\n */\nexport function isLowSurrogate(codePoint) {\n return codePoint >= LOW_SURROGATE_START && codePoint <= LOW_SURROGATE_END;\n}\n\n/**\n * Get the astral code point number based on surrogate pair numbers.\n *\n * @ignore\n * @param {number} highSurrogate The high-surrogate code point number.\n * @param {number} lowSurrogate The low-surrogate code point number.\n * @return {number} Returns the astral symbol number.\n */\nexport function getAstralNumberFromSurrogatePair(highSurrogate, lowSurrogate) {\n return (highSurrogate - HIGH_SURROGATE_START) * 0x400 + lowSurrogate - LOW_SURROGATE_START + 0x10000;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Get the number representation of the `value`.\n * Converts the `value` to number.\n * If `value` is `null` or `undefined`, return `defaultValue`.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @param {*} [defaultValue=''] The default value to return.\n * @return {number|null} Returns the number representation of `value`. Returns `defaultValue` if `value` is\n * `null` or `undefined`.\n */\nexport default function coerceToNumber(value, defaultValue = 0) {\n if (isNil(value)) {\n return defaultValue;\n }\n if (typeof value === 'number') {\n return value;\n }\n return Number(value);\n}","/**\n * If `value` is `NaN`, return `defaultValue`. In other case returns `value`.\n *\n * @ignore\n * @function nanDefault\n * @param {*} value The value to verify.\n * @param {*} defaultValue The default value.\n * @return {*} Returns `defaultValue` if `value` is `NaN`, otherwise `defaultValue`.\n */\nexport default function nanDefault(value, defaultValue) {\n return value !== value ? defaultValue : value;\n}","import { getAstralNumberFromSurrogatePair, isHighSurrogate, isLowSurrogate } from 'helper/string/surrogate_pair';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nanDefault from 'helper/number/nan_default';\n\n/**\n * Get the Unicode code point value of the character at `position`.
\n * If a valid UTF-16 \n * surrogate pair starts at `position`, the\n * astral code point\n * value at `position` is returned.\n *\n * @function codePointAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} position The position to get the code point number.\n * @return {number} Returns a non-negative number less than or equal to `0x10FFFF`.\n * @example\n * v.codePointAt('rain', 1);\n * // => 97, or 0x0061\n *\n * v.codePointAt('\\uD83D\\uDE00 is smile', 0); // or '😀 is smile'\n * // => 128512, or 0x1F600\n */\nexport default function codePointAt(subject, position) {\n const subjectString = coerceToString(subject);\n const subjectStringLength = subjectString.length;\n let positionNumber = coerceToNumber(position);\n positionNumber = nanDefault(positionNumber, 0);\n if (positionNumber < 0 || positionNumber >= subjectStringLength) {\n return undefined;\n }\n const firstCodePoint = subjectString.charCodeAt(positionNumber);\n let secondCodePoint;\n if (isHighSurrogate(firstCodePoint) && subjectStringLength > positionNumber + 1) {\n secondCodePoint = subjectString.charCodeAt(positionNumber + 1);\n if (isLowSurrogate(secondCodePoint)) {\n return getAstralNumberFromSurrogatePair(firstCodePoint, secondCodePoint);\n }\n }\n return firstCodePoint;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Extracts the first `length` characters from `subject`.\n *\n * @function first\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {int} [length=1] The number of characters to extract.\n * @return {string} Returns the first characters string.\n * @example\n * v.first('helicopter');\n * // => 'h'\n *\n * v.first('vehicle', 2);\n * // => 've'\n *\n * v.first('car', 5);\n * // => 'car'\n */\nexport default function first(subject, length) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 1 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n if (subjectString.length <= lengthInt) {\n return subjectString;\n }\n return subjectString.substr(0, lengthInt);\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nanDefault from 'helper/number/nan_default';\nimport { REGEXP_UNICODE_CHARACTER } from 'helper/reg_exp/const';\n\n/**\n * Get a grapheme from `subject` at specified `position` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function graphemeAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} position The position to get the grapheme.\n * @return {string} Returns the grapheme at specified position.\n * @example\n * v.graphemeAt('\\uD835\\uDC00\\uD835\\uDC01', 0); // or '𝐀𝐁'\n * // => 'A'\n *\n * v.graphemeAt('cafe\\u0301', 3); // or 'café'\n * // => 'é'\n */\nexport default function graphemeAt(subject, position) {\n const subjectString = coerceToString(subject);\n let positionNumber = coerceToNumber(position);\n let graphemeMatch;\n let graphemeMatchIndex = 0;\n positionNumber = nanDefault(positionNumber, 0);\n while ((graphemeMatch = REGEXP_UNICODE_CHARACTER.exec(subjectString)) !== null) {\n if (graphemeMatchIndex === positionNumber) {\n REGEXP_UNICODE_CHARACTER.lastIndex = 0;\n return graphemeMatch[0];\n }\n graphemeMatchIndex++;\n }\n return '';\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Extracts the last `length` characters from `subject`.\n *\n * @function last\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {int} [length=1] The number of characters to extract.\n * @return {string} Returns the last characters string.\n * @example\n * v.last('helicopter');\n * // => 'r'\n *\n * v.last('vehicle', 2);\n * // => 'le'\n *\n * v.last('car', 5);\n * // => 'car'\n */\nexport default function last(subject, length) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 1 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n if (subjectString.length <= lengthInt) {\n return subjectString;\n }\n return subjectString.substr(subjectString.length - lengthInt, lengthInt);\n}","import { REGEXP_EXTENDED_ASCII, REGEXP_LATIN_WORD, REGEXP_WORD } from 'helper/reg_exp/const_extended';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Truncates `subject` to a new `length` and does not break the words. Guarantees that the truncated string is no longer\n * than `length`.\n *\n * @static\n * @function prune\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to prune.\n * @param {int} length The length to prune the string.\n * @param {string} [end='...'] The string to be added at the end.\n * @return {string} Returns the pruned string.\n * @example\n * v.prune('Once upon a time', 7);\n * // => 'Once...'\n *\n * v.prune('Good day, Little Red Riding Hood', 16, ' (more)');\n * // => 'Good day (more)'\n *\n * v.prune('Once upon', 10);\n * // => 'Once upon'\n */\nexport default function prune(subject, length, end) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? subjectString.length : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const endString = coerceToString(end, '...');\n if (lengthInt >= subjectString.length) {\n return subjectString;\n }\n const pattern = REGEXP_EXTENDED_ASCII.test(subjectString) ? REGEXP_LATIN_WORD : REGEXP_WORD;\n let truncatedLength = 0;\n subjectString.replace(pattern, function(word, offset) {\n const wordInsertLength = offset + word.length;\n if (wordInsertLength <= lengthInt - endString.length) {\n truncatedLength = wordInsertLength;\n }\n });\n return subjectString.substr(0, truncatedLength) + endString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position up to `end` position. The character at `end` position is not\n * included.\n *\n * @function slice\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction. If negative use `subject.length + start`.\n * @param {number} [end=subject.length] The position to end extraction. If negative use `subject.length + end`.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.slice()`\n * @example\n * v.slice('miami', 1);\n * // => 'iami'\n *\n * v.slice('florida', -4);\n * // => 'rida'\n *\n * v.slice('florida', 1, 4);\n * // => \"lor\"\n */\nexport default function slice(subject, start, end) {\n return coerceToString(subject).slice(start, end);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position a number of `length` characters.\n *\n * @function substr\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction.\n * @param {number} [length=subject.endOfString] The number of characters to extract. If omitted, extract to the end of `subject`.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.substr()`\n * @example\n * v.substr('infinite loop', 9);\n * // => 'loop'\n *\n * v.substr('dreams', 2, 2);\n * // => 'ea'\n */\nexport default function substr(subject, start, length) {\n return coerceToString(subject).substr(start, length);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position up to `end` position. The character at `end` position is not\n * included.\n *\n * @function substring\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction.\n * @param {number} [end=subject.length] The position to end extraction.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.substring()`\n * @example\n * v.substring('beach', 1);\n * // => 'each'\n *\n * v.substring('ocean', 1, 3);\n * // => 'ea'\n */\nexport default function substring(subject, start, end) {\n return coerceToString(subject).substring(start, end);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the characters in `subject`.
\n *\n * @function count\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count characters.\n * @return {number} Returns the number of characters in `subject`.\n * @example\n * v.count('rain');\n * // => 4\n */\nexport default function count(subject) {\n return coerceToString(subject).length;\n}","import { REGEXP_COMBINING_MARKS, REGEXP_SURROGATE_PAIRS } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the graphemes in `subject` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function countGraphemes\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count graphemes.\n * @return {number} Returns the number of graphemes in `subject`.\n * @example\n * v.countGraphemes('cafe\\u0301'); // or 'café'\n * // => 4\n *\n * v.countGraphemes('\\uD835\\uDC00\\uD835\\uDC01'); // or '𝐀𝐁'\n * // => 2\n *\n * v.countGraphemes('rain');\n * // => 4\n */\nexport default function countGrapheme(subject) {\n return coerceToString(subject)\n .replace(REGEXP_COMBINING_MARKS, '*')\n .replace(REGEXP_SURROGATE_PAIRS, '*')\n .length;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the number of `substring` appearances in `subject`.\n *\n * @function countSubstrings\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string where to count.\n * @param {string} substring The substring to be counted.\n * @return {number} Returns the number of `substring` appearances.\n * @example\n * v.countSubstrings('bad boys, bad boys whatcha gonna do?', 'boys');\n * // => 2\n *\n * v.countSubstrings('every dog has its day', 'cat');\n * // => 0\n */\nexport default function countSubstrings(subject, substring) {\n const subjectString = coerceToString(subject);\n const substringString = coerceToString(substring);\n const substringLength = substringString.length;\n let count = 0;\n let matchIndex = 0;\n if (subjectString === '' || substringString === '') {\n return count;\n }\n do {\n matchIndex = subjectString.indexOf(substringString, matchIndex);\n if (matchIndex !== -1) {\n count++;\n matchIndex += substringLength;\n }\n } while (matchIndex !== -1);\n return count;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\nconst reduce = Array.prototype.reduce;\n\n/**\n * Counts the characters in `subject` for which `predicate` returns truthy.\n *\n * @function countWhere\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count characters.\n * @param {Function} predicate The predicate function invoked on each character with parameters `(character, index, string)`.\n * @param {Object} [context] The context to invoke the `predicate`.\n * @return {number} Returns the number of characters for which `predicate` returns truthy.\n * @example\n * v.countWhere('hola!', v.isAlpha);\n * // => 4\n *\n * v.countWhere('2022', function(character, index, str) {\n * return character === '2';\n * });\n * // => 3\n */\nexport default function countWhere(subject, predicate, context) {\n const subjectString = coerceToString(subject);\n if (subjectString === '' || typeof predicate !== 'function') {\n return 0;\n }\n const predicateWithContext = predicate.bind(context);\n return reduce.call(subjectString, function(countTruthy, character, index) {\n return predicateWithContext(character, index, subjectString) ? countTruthy + 1 : countTruthy;\n }, 0);\n}","import words from 'split/words';\n\n/**\n * Counts the number of words in `subject`.\n *\n * @function countWords\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to split into words.\n * @param {string|RegExp} [pattern] The pattern to watch words. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {number} Returns the number of words.\n * @example\n * v.countWords('gravity can cross dimensions');\n * // => 4\n *\n * v.countWords('GravityCanCrossDimensions');\n * // => 4\n *\n * v.countWords('Gravity - can cross dimensions!');\n * // => 4\n *\n * v.words('Earth gravity', /[^\\s]+/g);\n * // => 2\n */\nexport default function countWords(subject, pattern, flags) {\n return words(subject, pattern, flags).length;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * The current index.\n *\n * @ignore\n * @name ReplacementIndex#index\n * @type {number}\n * @return {ReplacementIndex} ReplacementIndex instance.\n */\nfunction ReplacementIndex() {\n this.index = 0;\n}\n\n/**\n * Increment the current index.\n *\n * @ignore\n * @return {undefined}\n */\nReplacementIndex.prototype.increment = function() {\n this.index++;\n};\n\n/**\n * Increment the current index by position.\n *\n * @ignore\n * @param {number} [position] The replacement position.\n * @return {undefined}\n */\nReplacementIndex.prototype.incrementOnEmptyPosition = function(position) {\n if (isNil(position)) {\n this.increment();\n }\n};\n\n/**\n * Get the replacement index by position.\n *\n * @ignore\n * @param {number} [position] The replacement position.\n * @return {number} The replacement index.\n */\nReplacementIndex.prototype.getIndexByPosition = function(position) {\n return isNil(position) ? this.index : position - 1;\n};\n\nexport default ReplacementIndex;","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Repeats the `subject` number of `times`.\n *\n * @function repeat\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to repeat.\n * @param {number} [times=1] The number of times to repeat.\n * @return {string} Returns the repeated string.\n * @example\n * v.repeat('w', 3);\n * // => 'www'\n *\n * v.repeat('world', 0);\n * // => ''\n */\nexport default function repeat(subject, times) {\n let subjectString = coerceToString(subject);\n let timesInt = isNil(times) ? 1 : clipNumber(toInteger(times), 0, MAX_SAFE_INTEGER);\n let repeatString = '';\n while (timesInt) {\n if (timesInt & 1) {\n repeatString += subjectString;\n }\n if (timesInt > 1) {\n subjectString += subjectString;\n }\n timesInt >>= 1;\n }\n return repeatString;\n}","import repeat from 'manipulate/repeat';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Creates the padding string.\n *\n * @ignore\n * @param {string} padCharacters The characters to create padding string.\n * @param {number} length The padding string length.\n * @return {string} The padding string.\n */\nexport default function buildPadding(padCharacters, length) {\n const padStringRepeat = toInteger(length / padCharacters.length);\n const padStringRest = length % padCharacters.length;\n return repeat(padCharacters, padStringRepeat + padStringRest).substr(0, length);\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` from left to a new `length`.\n *\n * @function padLeft\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to left pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the left padded string.\n * @example\n * v.padLeft('dog', 5);\n * // => ' dog'\n *\n * v.padLeft('bird', 6, '-');\n * // => '--bird-'\n *\n * v.padLeft('cat', 6, '-=');\n * // => '-=-cat'\n */\nexport default function padLeft(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n return buildPadding(padString, lengthInt - subjectString.length) + subjectString;\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` from right to a new `length`.\n *\n * @function padRight\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to right pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the right padded string.\n * @example\n * v.padRight('dog', 5);\n * // => 'dog '\n *\n * v.padRight('bird', 6, '-');\n * // => 'bird--'\n *\n * v.padRight('cat', 6, '-=');\n * // => 'cat-=-'\n */\nexport default function padRight(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n return subjectString + buildPadding(padString, lengthInt - subjectString.length);\n}","import Const from 'helper/format/const';\nimport isNil from 'helper/object/is_nil';\nimport padLeft from 'manipulate/pad_left';\nimport padRight from 'manipulate/pad_right';\n\n/**\n * Aligns and pads `subject` string.\n *\n * @ignore\n * @param {string} subject The subject string.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the aligned and padded string.\n */\nexport default function alignAndPad(subject, conversion) {\n const width = conversion.width;\n if (isNil(width) || subject.length >= width) {\n return subject;\n }\n const padType = conversion.alignmentSpecifier === Const.LITERAL_MINUS ? padRight : padLeft;\n return padType(subject, width, conversion.getPaddingCharacter());\n}","import Const from 'helper/format/const';\n\n/**\n * Add sign to the formatted number.\n *\n * @ignore\n * @name addSignToFormattedNumber\n * @param {number} replacementNumber The number to be replaced.\n * @param {string} formattedReplacement The formatted version of number.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted number string with a sign.\n */\nexport default function addSignToFormattedNumber(replacementNumber, formattedReplacement, conversion) {\n if (conversion.signSpecifier === Const.LITERAL_PLUS && replacementNumber >= 0) {\n formattedReplacement = Const.LITERAL_PLUS + formattedReplacement;\n }\n return formattedReplacement;\n}","import addSignToFormattedNumber from 'helper/format/type_format/add_sign_to_formatted_number';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport Const from 'helper/format/const';\nimport { REGEXP_TRAILING_ZEROS } from 'helper/reg_exp/const';\nimport toString from 'helper/string/coerce_to_string';\n\n/**\n * Formats a float type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function float(replacement, conversion) {\n let replacementNumber = parseFloat(replacement);\n let formattedReplacement;\n if (isNaN(replacementNumber)) {\n replacementNumber = 0;\n }\n const precision = coerceToNumber(conversion.precision, 6);\n switch (conversion.typeSpecifier) {\n case Const.TYPE_FLOAT:\n formattedReplacement = replacementNumber.toFixed(precision);\n break;\n case Const.TYPE_FLOAT_SCIENTIFIC:\n formattedReplacement = replacementNumber.toExponential(precision);\n break;\n case Const.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:\n formattedReplacement = replacementNumber.toExponential(precision).toUpperCase();\n break;\n case Const.TYPE_FLOAT_SHORT:\n case Const.TYPE_FLOAT_SHORT_UPPERCASE:\n formattedReplacement = formatFloatAsShort(replacementNumber, precision, conversion);\n break;\n }\n formattedReplacement = addSignToFormattedNumber(replacementNumber, formattedReplacement, conversion);\n return toString(formattedReplacement);\n}\n\n/**\n * Formats the short float.\n *\n * @ignore\n * @param {number} replacementNumber The number to format.\n * @param {number} precision The precision to format the float.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted short float.\n */\nfunction formatFloatAsShort(replacementNumber, precision, conversion) {\n if (replacementNumber === 0) {\n return '0';\n }\n const nonZeroPrecision = precision === 0 ? 1 : precision;\n let formattedReplacement = replacementNumber\n .toPrecision(nonZeroPrecision)\n .replace(REGEXP_TRAILING_ZEROS, '');\n if (conversion.typeSpecifier === Const.TYPE_FLOAT_SHORT_UPPERCASE) {\n formattedReplacement = formattedReplacement.toUpperCase();\n }\n return formattedReplacement;\n}","import Const from 'helper/format/const';\nimport toString from 'helper/string/coerce_to_string';\n\n/**\n * Formats an integer type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function integerBase(replacement, conversion) {\n let integer = parseInt(replacement);\n if (isNaN(integer)) {\n integer = 0;\n }\n integer = integer >>> 0;\n switch (conversion.typeSpecifier) {\n case Const.TYPE_INTEGER_ASCII_CHARACTER:\n integer = String.fromCharCode(integer);\n break;\n case Const.TYPE_INTEGER_BINARY:\n integer = integer.toString(Const.RADIX_BINARY);\n break;\n case Const.TYPE_INTEGER_OCTAL:\n integer = integer.toString(Const.RADIX_OCTAL);\n break;\n case Const.TYPE_INTEGER_HEXADECIMAL:\n integer = integer.toString(Const.RADIX_HEXADECIMAL);\n break;\n case Const.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:\n integer = integer.toString(Const.RADIX_HEXADECIMAL).toUpperCase();\n break;\n }\n return toString(integer);\n}","import addSignToFormattedNumber from 'helper/format/type_format/add_sign_to_formatted_number';\nimport toString from 'helper/string/to_string';\n\n/**\n * Formats a decimal integer type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function integerDecimal(replacement, conversion) {\n let integer = parseInt(replacement);\n if (isNaN(integer)) {\n integer = 0;\n }\n return addSignToFormattedNumber(integer, toString(integer), conversion);\n}","import isNil from 'helper/object/is_nil';\nimport truncate from 'chop/truncate';\n\n/**\n * Formats a string type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\nexport default function stringFormat(replacement, conversion) {\n let formattedReplacement = replacement;\n const precision = conversion.precision;\n if (!isNil(precision) && formattedReplacement.length > precision) {\n formattedReplacement = truncate(formattedReplacement, precision, '');\n }\n return formattedReplacement;\n}","import alignAndPad from 'helper/format/align_and_pad';\nimport Const from 'helper/format/const';\nimport formatFloat from 'helper/format/type_format/float';\nimport formatIntegerBase from 'helper/format/type_format/integer_base';\nimport formatIntegerDecimal from 'helper/format/type_format/integer_decimal';\nimport formatString from 'helper/format/type_format/string';\n\n/**\n * Returns the computed string based on format specifiers.\n *\n * @ignore\n * @name computeReplacement\n * @param {string} replacement The replacement value.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the computed string.\n */\nexport default function compute(replacement, conversion) {\n let formatFunction;\n switch (conversion.typeSpecifier) {\n case Const.TYPE_STRING:\n formatFunction = formatString;\n break;\n case Const.TYPE_INTEGER_DECIMAL:\n case Const.TYPE_INTEGER:\n formatFunction = formatIntegerDecimal;\n break;\n case Const.TYPE_INTEGER_ASCII_CHARACTER:\n case Const.TYPE_INTEGER_BINARY:\n case Const.TYPE_INTEGER_OCTAL:\n case Const.TYPE_INTEGER_HEXADECIMAL:\n case Const.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:\n case Const.TYPE_INTEGER_UNSIGNED_DECIMAL:\n formatFunction = formatIntegerBase;\n break;\n case Const.TYPE_FLOAT:\n case Const.TYPE_FLOAT_SCIENTIFIC:\n case Const.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:\n case Const.TYPE_FLOAT_SHORT:\n case Const.TYPE_FLOAT_SHORT_UPPERCASE:\n formatFunction = formatFloat;\n break;\n }\n const formattedString = formatFunction(replacement, conversion);\n return alignAndPad(formattedString, conversion);\n}","import Const from 'helper/format/const';\nimport nilDefault from 'helper/undefined/nil_default';\n\n/**\n * Construct the new conversion specification object.\n *\n * @ignore\n * @param {Object} properties An object with properties to initialize.\n * @return {ConversionSpecification} ConversionSpecification instance.\n */\nfunction ConversionSpecification(properties) {\n\n /**\n * The percent characters from conversion specification.\n *\n * @ignore\n * @name ConversionSpecification#percent\n * @type {string}\n */\n this.percent = properties.percent;\n\n /**\n * The sign specifier to force a sign to be used on a number.\n *\n * @ignore\n * @name ConversionSpecification#signSpecifier\n * @type {string}\n */\n this.signSpecifier = properties.signSpecifier;\n\n /**\n * The padding specifier that says what padding character will be used.\n *\n * @ignore\n * @name ConversionSpecification#paddingSpecifier\n * @type {string}\n */\n this.paddingSpecifier = properties.paddingSpecifier;\n\n /**\n * The alignment specifier that says if the result should be left-justified or right-justified.\n *\n * @ignore\n * @name ConversionSpecification#alignmentSpecifier\n * @type {string}\n */\n this.alignmentSpecifier = properties.alignmentSpecifier;\n\n /**\n * The width specifier how many characters this conversion should result in.\n *\n * @ignore\n * @name ConversionSpecification#width\n * @type {number}\n */\n this.width = properties.width;\n\n /**\n * The precision specifier says how many decimal digits should be displayed for floating-point numbers.\n *\n * @ignore\n * @name ConversionSpecification#precision\n * @type {number}\n */\n this.precision = properties.precision;\n\n /**\n * The type specifier says what type the argument data should be treated as.\n *\n * @ignore\n * @name ConversionSpecification#typeSpecifier\n * @type {string}\n */\n this.typeSpecifier = properties.typeSpecifier;\n}\n\n\n/**\n * Check if the conversion specification is a percent literal \"%%\".\n *\n * @ignore\n * @return {boolean} Returns true if the conversion is a percent literal, false otherwise.\n */\nConversionSpecification.prototype.isPercentLiteral = function() {\n return Const.LITERAL_PERCENT_SPECIFIER === this.percent;\n};\n\n/**\n * Get the padding character from padding specifier.\n *\n * @ignore\n * @returns {string} Returns the padding character.\n */\nConversionSpecification.prototype.getPaddingCharacter = function() {\n let paddingCharacter = nilDefault(this.paddingSpecifier, ' ');\n if (paddingCharacter.length === 2 && paddingCharacter[0] === Const.LITERAL_SINGLE_QUOTE) {\n paddingCharacter = paddingCharacter[1];\n }\n return paddingCharacter;\n};\n\nexport default ConversionSpecification;","import isNil from 'helper/object/is_nil';\n\n/**\n * Validates the specifier type and replacement position.\n *\n * @ignore\n * @throws {Error} Throws an exception on insufficient arguments or unknown specifier.\n * @param {number} index The index of the matched specifier.\n * @param {number} replacementsLength The number of replacements.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {undefined}\n */\nexport default function validate(index, replacementsLength, conversion) {\n if (isNil(conversion.typeSpecifier)) {\n throw new Error('sprintf(): Unknown type specifier');\n }\n if (index > replacementsLength - 1) {\n throw new Error('sprintf(): Too few arguments');\n }\n if (index < 0) {\n throw new Error('sprintf(): Argument number must be greater than zero');\n }\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport computeReplacement from 'helper/format/replacement/compute';\nimport ConversionSpecification from 'helper/format/conversion_specification';\nimport validateReplacement from 'helper/format/replacement/validate';\n\n/**\n * Return the replacement for regular expression match of the conversion specification.\n *\n * @ignore\n * @name matchReplacement\n * @param {ReplacementIndex} replacementIndex The replacement index object.\n * @param {string[]} replacements The array of replacements.\n * @param {string} conversionSpecification The conversion specification.\n * @param {string} percent The percent characters from conversion specification.\n * @param {string} position The position to insert the replacement.\n * @param {string} signSpecifier The sign specifier to force a sign to be used on a number.\n * @param {string} paddingSpecifier The padding specifier that says what padding character will be used.\n * @param {string} alignmentSpecifier The alignment specifier that says if the result should be left-justified or right-justified.\n * @param {string} widthSpecifier The width specifier how many characters this conversion should result in.\n * @param {string} precisionSpecifier The precision specifier says how many decimal digits should be displayed for floating-point numbers.\n * @param {string} typeSpecifier The type specifier says what type the argument data should be treated as.\n * @return {string} Returns the computed replacement.\n */\nexport default function match(replacementIndex, replacements, conversionSpecification, percent, position, signSpecifier,\n paddingSpecifier, alignmentSpecifier, widthSpecifier, precisionSpecifier, typeSpecifier) {\n const conversion = new ConversionSpecification({\n percent,\n signSpecifier,\n paddingSpecifier,\n alignmentSpecifier,\n width: coerceToNumber(widthSpecifier, null),\n precision: coerceToNumber(precisionSpecifier, null),\n typeSpecifier\n });\n if (conversion.isPercentLiteral()) {\n return conversionSpecification.slice(1);\n }\n const actualReplacementIndex = replacementIndex.getIndexByPosition(position);\n replacementIndex.incrementOnEmptyPosition(position);\n validateReplacement(actualReplacementIndex, replacements.length, conversion);\n return computeReplacement(replacements[actualReplacementIndex], conversion);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_CONVERSION_SPECIFICATION } from 'helper/reg_exp/const';\nimport ReplacementIndex from 'helper/format/replacement/index';\nimport replacementMatch from 'helper/format/replacement/match';\n\n/**\n * Produces a string according to `format`.\n *\n *
\n * `format` string is composed of zero or more directives: ordinary characters (not %), which are copied unchanged\n * to the output string and conversion specifications, each of which results in fetching zero or more subsequent\n * arguments.

\n *\n * Each conversion specification is introduced by the character %, and ends with a conversion\n * specifier. In between there may be (in this order) zero or more flags, an optional minimum field width\n * and an optional precision.
\n * The syntax is: ConversionSpecification = \"%\" { Flags }\n * [ MinimumFieldWidth ] [ Precision ] ConversionSpecifier, where curly braces { } denote repetition\n * and square brackets [ ] optionality.

\n *\n * By default, the arguments are used in the given order.
\n * For argument numbering and swapping, `%m$` (where `m` is a number indicating the argument order)\n * is used instead of `%` to specify explicitly which argument is taken. For instance `%1$s` fetches the 1st argument,\n * `%2$s` the 2nd and so on, no matter what position the conversion specification has in `format`.\n *

\n *\n * The flags
\n * The character % is followed by zero or more of the following flags:
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
+\n * A sign (+ or -) should always be placed before a number produced by a\n * signed conversion. By default a sign is used only for negative numbers.\n *
0The value should be zero padded.
(a space) The value should be space padded.
'Indicates alternate padding character, specified by prefixing it with a single quote '.
-The converted value is to be left adjusted on the field boundary (the default is right justification).
\n *\n * The minimum field width
\n * An optional decimal digit string (with nonzero first digit) specifying a minimum field width. If the converted\n * value has fewer characters than the field width, it will be padded with spaces on the left (or right, if the\n * left-adjustment flag has been given).

\n *\n * The precision
\n * An optional precision, in the form of a period `.` followed by an optional decimal digit string.
\n * This gives the number of digits to appear after the radix character for `e`, `E`, `f` and `F` conversions, the\n * maximum number of significant digits for `g` and `G` conversions or the maximum number of characters to be printed\n * from a string for `s` conversion.

\n *\n * The conversion specifier
\n * A specifier that mentions what type the argument should be treated as:\n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n *
`s`The string argument is treated as and presented as a string.
`d` `i`The integer argument is converted to signed decimal notation.
`b`The unsigned integer argument is converted to unsigned binary.
`c`The unsigned integer argument is converted to an ASCII character with that number.
`o`The unsigned integer argument is converted to unsigned octal.
`u`The unsigned integer argument is converted to unsigned decimal.
`x` `X`The unsigned integer argument is converted to unsigned hexadecimal. The letters `abcdef` are used for `x`\n * conversions; the letters `ABCDEF` are used for `X` conversions.
`f`\n * The float argument is rounded and converted to decimal notation in the style `[-]ddd.ddd`, where the number of\n * digits after the decimal-point character is equal to the precision specification. If the precision is missing,\n * it is taken as 6; if the precision is explicitly zero, no decimal-point character appears.\n * If a decimal point appears, at least one digit appears before it.\n *
`e` `E`\n * The float argument is rounded and converted in the style `[-]d.ddde±dd`, where there is one digit\n * before the decimal-point character and the number of digits after it is equal to the precision. If\n * the precision is missing, it is taken as `6`; if the precision is zero, no decimal-point character\n * appears. An `E` conversion uses the letter `E` (rather than `e`) to introduce the exponent.\n *
`g` `G`\n * The float argument is converted in style `f` or `e` (or `F` or `E` for `G` conversions). The precision specifies\n * the number of significant digits. If the precision is missing, `6` digits are given; if the\n * precision is zero, it is treated as `1`. Style `e` is used if the exponent from its conversion is less\n * than `-6` or greater than or equal to the precision. Trailing zeros are removed from the fractional\n * part of the result; a decimal point appears only if it is followed by at least one digit.\n *
`%`A literal `%` is written. No argument is converted. The complete conversion specification is `%%`.
\n *
\n *\n * @function sprintf\n * @static\n * @since 1.0.0\n * @memberOf Format\n * @param {string} [format=''] The format string.\n * @param {...*} replacements The replacements to produce the string.\n * @return {string} Returns the produced string.\n * @example\n * v.sprintf('%s, %s!', 'Hello', 'World');\n * // => 'Hello World!'\n *\n * v.sprintf('%s costs $%d', 'coffee', 2);\n * // => 'coffee costs $2'\n *\n * v.sprintf('%1$s %2$s %1$s %2$s, watcha gonna %3$s', 'bad', 'boys', 'do')\n * // => 'bad boys bad boys, watcha gonna do'\n *\n * v.sprintf('% 6s', 'bird');\n * // => ' bird'\n *\n * v.sprintf('% -6s', 'crab');\n * // => 'crab '\n *\n * v.sprintf(\"%'*5s\", 'cat');\n * // => '**cat'\n *\n * v.sprintf(\"%'*-6s\", 'duck');\n * // => 'duck**'\n *\n * v.sprintf('%d %i %+d', 15, -2, 25);\n * // => '15 -2 +25'\n *\n * v.sprintf(\"%06d\", 15);\n * // => '000015'\n *\n * v.sprintf('0b%b 0o%o 0x%X', 12, 9, 155);\n * // => '0b1100 0o11 0x9B'\n *\n * v.sprintf('%.2f', 10.469);\n * // => '10.47'\n *\n * v.sprintf('%.2e %g', 100.5, 0.455);\n * // => '1.01e+2 0.455'\n * \n */\nexport default function sprintf(format, ...replacements) {\n const formatString = coerceToString(format);\n if (formatString === '') {\n return formatString;\n }\n const boundReplacementMatch = replacementMatch.bind(undefined, new ReplacementIndex(), replacements);\n return formatString.replace(REGEXP_CONVERSION_SPECIFICATION, boundReplacementMatch);\n}","import nilDefault from 'helper/undefined/nil_default';\nimport sprintf from 'format/sprintf';\n\n/**\n * Produces a string according to `format`. Works exactly like sprintf(),\n * with the only difference that accepts the formatting arguments in an array `values`.
\n * See here `format` string specifications.\n *\n * @function vprintf\n * @static\n * @since 1.0.0\n * @memberOf Format\n * @param {string} [format=''] The format string.\n * @param {Array.} replacements The array of replacements to produce the string.\n * @return {string} Returns the produced string.\n * @example\n * v.vprintf('%s', ['Welcome'])\n * // => 'Welcome'\n *\n * v.vprintf('%s has %d apples', ['Alexandra', 3]);\n * // => 'Alexandra has 3 apples'\n */\nexport default function vprintf(format, replacements) {\n return sprintf(format, ...nilDefault(replacements, []));\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_HTML_SPECIAL_CHARACTERS } from 'helper/reg_exp/const';\n\nconst escapeCharactersMap = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n/**\n * Return the escaped version of `character`.\n *\n * @ignore\n * @param {string} character The character to be escape.\n * @return {string} The escaped version of character.\n */\nfunction replaceSpecialCharacter(character) {\n return escapeCharactersMap[character];\n}\n\n/**\n * Escapes HTML special characters < > & ' \" ` in subject.\n *\n * @function escapeHtml\n * @static\n * @since 1.0.0 \n * @memberOf Escape\n * @param {string} [subject=''] The string to escape.\n * @return {string} Returns the escaped string.\n * @example\n * v.escapeHtml('

wonderful world

');\n * // => '<p>wonderful world</p>'\n */\nexport default function escapeHtml(subject) {\n return coerceToString(subject).replace(REGEXP_HTML_SPECIAL_CHARACTERS, replaceSpecialCharacter);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_SPECIAL_CHARACTERS } from 'helper/reg_exp/const';\n\n/**\n * Escapes the regular expression special characters `- [ ] / { } ( ) * + ? . \\ ^ $ |` in `subject`.\n *\n * @function escapeRegExp\n * @static\n * @since 1.0.0\n * @memberOf Escape\n * @param {string} [subject=''] The string to escape.\n * @return {string} Returns the escaped string.\n * @example\n * v.escapeRegExp('(hours)[minutes]{seconds}');\n * // => '\\(hours\\)\\[minutes\\]\\{seconds\\}'\n */\nexport default function escapeRegExp(subject) {\n return coerceToString(subject).replace(REGEXP_SPECIAL_CHARACTERS, '\\\\$&');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\nconst unescapeCharactersMap = {\n '<': /(<)|(�*3c;)|(�*60;)/gi,\n '>': /(>)|(�*3e;)|(�*62;)/gi,\n '&': /(&)|(�*26;)|(�*38;)/gi,\n '\"': /(")|(�*22;)|(�*34;)/gi,\n \"'\": /(�*27;)|(�*39;)/gi,\n '`': /(�*60;)|(�*96;)/gi\n};\nconst characters = Object.keys(unescapeCharactersMap);\n\n/**\n * Replaces the HTML entities with corresponding characters.\n *\n * @ignore\n * @param {string} string The accumulator string.\n * @param {string} key The character.\n * @return {string} The string with replaced HTML entity\n */\nfunction reduceUnescapedString(string, key) {\n return string.replace(unescapeCharactersMap[key], key);\n}\n\n/**\n * Unescapes HTML special characters from &lt; &gt; &amp; &quot; &#x27; &#x60;\n * to corresponding < > & ' \" ` in subject.\n *\n * @function unescapeHtml\n * @static\n * @since 1.0.0\n * @memberOf Escape\n * @param {string} [subject=''] The string to unescape.\n * @return {string} Returns the unescaped string.\n * @example\n * v.unescapeHtml('<p>wonderful world</p>');\n * // => '

wonderful world

'\n */\nexport default function unescapeHtml(subject) {\n const subjectString = coerceToString(subject);\n return characters.reduce(reduceUnescapedString, subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns the first occurrence index of `search` in `subject`.\n *\n * @function indexOf\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [fromIndex=0] The index to start searching.\n * @return {number} Returns the first occurrence index or `-1` if not found.\n * @example\n * v.indexOf('morning', 'n');\n * // => 3\n *\n * v.indexOf('evening', 'o');\n * // => -1\n */\nexport default function indexOf(subject, search, fromIndex) {\n const subjectString = coerceToString(subject);\n return subjectString.indexOf(search, fromIndex);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns the last occurrence index of `search` in `subject`.\n *\n * @function lastIndexOf\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [fromIndex=subject.length - 1] The index to start searching backward in the string.\n * @return {number} Returns the last occurrence index or `-1` if not found.\n * @example\n * v.lastIndexOf('morning', 'n');\n * // => 5\n *\n * v.lastIndexOf('evening', 'o');\n * // => -1\n */\nexport default function lastIndexOf(subject, search, fromIndex) {\n const subjectString = coerceToString(subject);\n return subjectString.lastIndexOf(search, fromIndex);\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Returns the first index of a `pattern` match in `subject`.\n *\n * @function search\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string|RegExp} pattern The pattern to match. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern)`.\n * @param {number} [fromIndex=0] The index to start searching.\n * @return {number} Returns the first match index or `-1` if not found.\n * @example\n * v.search('morning', /rn/);\n * // => 2\n *\n * v.search('evening', '/\\d/');\n * // => -1\n */\nexport default function search(subject, pattern, fromIndex) {\n const subjectString = coerceToString(subject);\n const fromIndexNumber = isNil(fromIndex) ? 0 : clipNumber(toInteger(fromIndex), 0, subjectString.length);\n let matchIndex = subjectString.substr(fromIndexNumber).search(pattern);\n if (matchIndex !== -1 && !isNaN(fromIndexNumber)) {\n matchIndex += fromIndexNumber;\n }\n return matchIndex;\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Inserts into `subject` a string `toInsert` at specified `position`.\n *\n * @function insert\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string where to insert.\n * @param {string} [toInsert=''] The string to be inserted.\n * @param {number} [position=0] The position to insert.\n * @return {string} Returns the string after insertion.\n * @example\n * v.insert('ct', 'a', 1);\n * // => 'cat'\n *\n * v.insert('sunny', ' day', 5);\n * // => 'sunny day'\n */\nexport default function insert(subject, toInsert, position) {\n const subjectString = coerceToString(subject);\n const toInsertString = coerceToString(toInsert);\n const positionNumber = coerceToNumber(position);\n if (positionNumber < 0 || positionNumber > subjectString.length || toInsertString === '') {\n return subjectString;\n }\n return subjectString.slice(0, positionNumber) + toInsertString + subjectString.slice(positionNumber);\n}","import { REGEXP_COMBINING_MARKS, REGEXP_NON_LATIN } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport diacriticMap from 'helper/string/diacritics_map';\n\n/**\n * Removes the diacritics from `character`.\n *\n * @ignore\n * @param {string} character The character with diacritics.\n * @returns {string} Returns the character without diacritics.\n */\nfunction removeDiacritics(character) {\n const characterWithoutDiacritic = diacriticMap[character];\n return characterWithoutDiacritic ? characterWithoutDiacritic : character;\n}\n\n/**\n * Returns the `cleanCharacter` from combining marks regular expression match.\n * @ignore\n * @param {string} character The character with combining marks\n * @param {string} cleanCharacter The character without combining marks.\n * @return {string} The character without combining marks.\n */\nfunction removeCombiningMarks(character, cleanCharacter) {\n return cleanCharacter;\n}\n\n/**\n * Latinises the `subject` by removing diacritic characters.\n *\n * @function latinise\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to latinise.\n * @return {string} Returns the latinised string.\n * @example\n * v.latinise('cafe\\u0301'); // or 'café'\n * // => 'cafe'\n *\n * v.latinise('août décembre');\n * // => 'aout decembre'\n *\n * v.latinise('как прекрасен этот мир');\n * // => 'kak prekrasen etot mir'\n */\nexport default function latinise(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return subjectString;\n }\n return subjectString\n .replace(REGEXP_NON_LATIN, removeDiacritics)\n .replace(REGEXP_COMBINING_MARKS, removeCombiningMarks);\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` to a new `length`.\n *\n * @function pad\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the padded string.\n * @example\n * v.pad('dog', 5);\n * // => ' dog '\n *\n * v.pad('bird', 6, '-');\n * // => '-bird-'\n *\n * v.pad('cat', 6, '-=');\n * // => '-cat-='\n */\nexport default function pad(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n const paddingLength = lengthInt - subjectString.length;\n const paddingSideLength = toInteger(paddingLength / 2);\n const paddingSideRemainingLength = paddingLength % 2;\n return buildPadding(padString, paddingSideLength) + subjectString +\n buildPadding(padString, paddingSideLength + paddingSideRemainingLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns a new string where the matches of `pattern` are replaced with `replacement`.
\n *\n * @function replace\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to verify.\n * @param {string|RegExp} pattern The pattern which match is replaced. If `pattern` is a string,\n * a simple string match is evaluated and only the first occurrence replaced.\n * @param {string|Function} replacement The string or function which invocation result replaces `pattern` match.\n * @return {string} Returns the replacement result.\n * @example\n * v.replace('swan', 'wa', 'u');\n * // => 'sun'\n *\n * v.replace('domestic duck', /domestic\\s/, '');\n * // => 'duck'\n *\n * v.replace('nice duck', /(nice)(duck)/, function(match, nice, duck) {\n * return 'the ' + duck + ' is ' + nice;\n * });\n * // => 'the duck is nice'\n */\nexport default function replace(subject, pattern, replacement) {\n const subjectString = coerceToString(subject);\n return subjectString.replace(pattern, replacement);\n}","import { REGEXP_FLAGS } from 'helper/reg_exp/const';\n\n/**\n * Get the flags string from a regular expression object.\n *\n * @ignore\n * @param {RegExp} regExp The regular expression object.\n * @return {string} Returns the string with flags chars.\n */\nexport default function getRegExpFlags(regExp) {\n return regExp.toString().match(REGEXP_FLAGS)[0];\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` includes `search` starting from `position`.\n *\n * @function includes\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [position=0] The position to start searching.\n * @return {boolean} Returns `true` if `subject` includes `search` or `false` otherwise.\n * @example\n * v.includes('starship', 'star');\n * // => true\n *\n * v.includes('galaxy', 'g', 1);\n * // => false\n */\nexport default function includes(subject, search, position) {\n const subjectString = coerceToString(subject);\n const searchString = toString(search);\n if (searchString === null) {\n return false;\n }\n if (searchString === '') {\n return true;\n }\n position = isNil(position) ? 0 : clipNumber(toInteger(position), 0, subjectString.length);\n return subjectString.indexOf(searchString, position) !== -1;\n}","import getRegExpFlags from 'helper/reg_exp/get_reg_exp_flags';\nimport includes from 'query/includes';\n\n/**\n * Append flag to a regular expression.\n *\n * @ignore\n * @param {RegExp} pattern The pattern to coerce.\n * @param {string} appendFlag The flag to append to regular expression.\n * @return {RegExp} The regular expression with added flag.\n */\nexport default function appendFlagToRegExp(pattern, appendFlag) {\n const regularExpressionFlags = getRegExpFlags(pattern);\n if (!includes(regularExpressionFlags, appendFlag)) {\n return new RegExp(pattern.source, regularExpressionFlags + appendFlag);\n }\n return pattern;\n}","import appendFlagToRegularExpression from 'helper/reg_exp/append_flag_to_reg_exp';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport escapeRegExp from 'escape/escape_reg_exp';\n\n/**\n * Returns a new string where all matches of `pattern` are replaced with `replacement`.
\n *\n * @function replaceAll\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to verify.\n * @param {string|RegExp} pattern The pattern which match is replaced. If `pattern` is a string, a simple string match is evaluated.\n * All matches are replaced.\n * @param {string|Function} replacement The string or function which invocation result replaces `pattern` match.\n * @return {string} Returns the replacement result.\n * @example\n * v.replaceAll('good morning', 'o', '*');\n * // => 'g**d m*rning'\n * v.replaceAll('evening', \\n\\, 's');\n * // => 'evesisg'\n *\n */\nexport default function replaceAll(subject, pattern, replacement) {\n const subjectString = coerceToString(subject);\n let regExp = pattern;\n if (!(pattern instanceof RegExp)) {\n regExp = new RegExp(escapeRegExp(pattern), 'g');\n } else if (!pattern.global) {\n regExp = appendFlagToRegularExpression(pattern, 'g');\n }\n return subjectString.replace(regExp, replacement);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Reverses the `subject`.\n *\n * @function reverse\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to reverse.\n * @return {string} Returns the reversed string.\n * @example\n * v.reverse('winter');\n * // => 'retniw'\n */\nexport default function reverse(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.split('').reverse().join('');\n}","import { REGEXP_COMBINING_MARKS, REGEXP_SURROGATE_PAIRS } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Reverses the `subject` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function reverseGrapheme\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to reverse.\n * @return {string} Returns the reversed string.\n * @example\n * v.reverseGrapheme('summer');\n * // => 'remmus'\n *\n * v.reverseGrapheme('𝌆 bar mañana mañana');\n * // => 'anañam anañam rab 𝌆'\n */\nexport default function reverseGrapheme(subject) {\n let subjectString = coerceToString(subject);\n /**\n * @see https://github.com/mathiasbynens/esrever\n */\n subjectString = subjectString\n .replace(REGEXP_COMBINING_MARKS, function($0, $1, $2) {\n return reverseGrapheme($2) + $1;\n })\n .replace(REGEXP_SURROGATE_PAIRS, '$2$1');\n let reversedString = '';\n let index = subjectString.length;\n while (index--) {\n reversedString += subjectString.charAt(index);\n }\n return reversedString;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport kebabCase from 'case/kebab_case';\nimport latinise from 'manipulate/latinise';\nimport { REGEXP_NON_LATIN } from 'helper/reg_exp/const';\n\n/**\n * Slugifies the `subject`. Cleans the `subject` by replacing diacritics with corresponding latin characters.\n *\n * @function slugify\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to slugify.\n * @return {string} Returns the slugified string.\n * @example\n * v.slugify('Italian cappuccino drink');\n * // => 'italian-cappuccino-drink'\n *\n * v.slugify('café latté');\n * // => 'caffe-latte'\n *\n * v.slugify('хорошая погода');\n * // => 'horoshaya-pogoda'\n */\nexport default function slugify(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n const cleanSubjectString = latinise(subjectString).replace(REGEXP_NON_LATIN, '-');\n return kebabCase(cleanSubjectString);\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Changes `subject` by deleting `deleteCount` of characters starting at position `start`. Places a new string\n * `toAdd` instead of deleted characters.\n *\n * @function splice\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string where to insert.\n * @param {string} start The position to start changing the string. For a negative position will start from the end of\n * the string.\n * @param {number} [deleteCount=subject.length-start] The number of characters to delete from string.\n * @param {string} [toAdd=''] The string to be added instead of deleted characters.\n * @return {string} Returns the modified string.\n * @example\n * v.splice('new year', 0, 4);\n * // => 'year'\n *\n * v.splice('new year', 0, 3, 'happy');\n * // => 'happy year'\n *\n * v.splice('new year', -4, 4, 'day');\n * // => 'new day'\n */\nexport default function splice(subject, start, deleteCount, toAdd) {\n const subjectString = coerceToString(subject);\n const toAddString = coerceToString(toAdd);\n let startPosition = coerceToNumber(start);\n if (startPosition < 0) {\n startPosition = subjectString.length + startPosition;\n if (startPosition < 0) {\n startPosition = 0;\n }\n } else if (startPosition > subjectString.length) {\n startPosition = subjectString.length;\n }\n let deleteCountNumber = coerceToNumber(deleteCount, subjectString.length - startPosition);\n if (deleteCountNumber < 0) {\n deleteCountNumber = 0;\n }\n return subjectString.slice(0, startPosition) + toAddString + subjectString.slice(startPosition + deleteCountNumber);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { REGEXP_TRIM_LEFT } from 'helper/reg_exp/const';\nimport toString from 'helper/string/to_string';\n\n/**\n * Removes whitespaces from the left part of the `subject`.\n *\n * @function trimLeft\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trimLeft(' Starship Troopers');\n * // => 'Starship Troopers'\n *\n * v.trimLeft('***Mobile Infantry', '*');\n * // => 'Mobile Infantry'\n */\nexport default function trimLeft(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.replace(REGEXP_TRIM_LEFT, '');\n }\n const whitespaceStringLength = whitespaceString.length;\n let matchWhitespace = true;\n let totalWhitespaceLength = 0;\n while(matchWhitespace) {\n if (subjectString.indexOf(whitespaceString, totalWhitespaceLength) === totalWhitespaceLength) {\n totalWhitespaceLength += whitespaceStringLength;\n } else {\n matchWhitespace = false;\n }\n }\n return subjectString.substring(totalWhitespaceLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { REGEXP_TRIM_RIGHT } from 'helper/reg_exp/const';\nimport toString from 'helper/string/to_string';\n\n/**\n * Removes whitespaces from the right part of the `subject`.\n *\n * @function trimRight\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trimRight('the fire rises ');\n * // => 'the fire rises'\n *\n * v.trimRight('do you feel in charge?!!!', '!');\n * // => 'do you feel in charge?'\n */\nexport default function trimRight(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.replace(REGEXP_TRIM_RIGHT, '');\n }\n const whitespaceStringLength = whitespaceString.length;\n const valueStringLength = subjectString.length;\n let matchWhitespace = true;\n let totalWhitespaceLength = 0;\n let position;\n while(matchWhitespace) {\n position = valueStringLength - totalWhitespaceLength - whitespaceStringLength;\n if (subjectString.indexOf(whitespaceString, position) === position) {\n totalWhitespaceLength += whitespaceStringLength;\n } else {\n matchWhitespace = false;\n }\n }\n return subjectString.substring(0, valueStringLength - totalWhitespaceLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toString from 'helper/string/to_string';\nimport trimLeft from 'manipulate/trim_left';\nimport trimRight from 'manipulate/trim_right';\n\n/**\n * Removes whitespaces from left and right parts of the `subject`.\n *\n * @function trim\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trim(' Mother nature ');\n * // => 'Mother nature'\n *\n * v.trim('--Earth--', '-');\n * // => 'Earth'\n */\nexport default function trim(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.trim();\n }\n return trimRight(trimLeft(subjectString, whitespaceString), whitespaceString);\n}","import coerceToBoolean from 'helper/boolean/coerce_to_boolean';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nilDefault from 'helper/undefined/nil_default';\n\nconst OPTION_WIDTH = 'width';\nconst OPTION_NEW_LINE = 'newLine';\nconst OPTION_INDENT = 'indent';\nconst OPTION_CUT = 'cut';\n\n/**\n * Wraps `subject` to a given number of characters using a string break character.\n *\n * @function wordWrap\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to wrap.\n * @param {Object} [options={}] The wrap options.\n * @param {number} [options.width=75] The number of characters at which to wrap.\n * @param {string} [options.newLine='\\n'] The string to add at the end of line.\n * @param {string} [options.indent=''] The string to intend the line.\n * @param {boolean} [options.cut=false] When `false` (default) does not split the word even if word length is bigger than `width`.
\n * When `true` breaks the word that has length bigger than `width`.\n *\n * @return {string} Returns wrapped string.\n * @example\n * v.wordWrap('Hello world', {\n * width: 5\n * });\n * // => 'Hello\\nworld'\n *\n * v.wordWrap('Hello world', {\n * width: 5,\n * newLine: '
',\n * indent: '__'\n * });\n * // => '__Hello
__world'\n *\n * v.wordWrap('Wonderful world', {\n * width: 5,\n * cut: true\n * });\n * // => 'Wonde\\nrful\\nworld'\n *\n */\nexport default function wordWrap(subject, options) {\n const subjectString = coerceToString(subject);\n options = nilDefault(options, {});\n const width = coerceToNumber(options[OPTION_WIDTH], 75);\n const newLine = coerceToString(options[OPTION_NEW_LINE], '\\n');\n const indent = coerceToString(options[OPTION_INDENT], '');\n const cut = coerceToBoolean(options[OPTION_CUT], false);\n\n if (subjectString === '' || width <= 0) {\n return indent;\n }\n\n const subjectLength = subjectString.length;\n let offset = 0;\n let wrappedLine = '';\n\n while ((subjectLength - offset) > width) {\n if (subjectString[offset] === ' ') {\n offset++;\n continue;\n }\n let spaceToWrapAt = subjectString.lastIndexOf(' ', width + offset);\n if (spaceToWrapAt >= offset) {\n wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine;\n offset = spaceToWrapAt + 1;\n } else {\n if (cut) {\n wrappedLine += indent + subjectString.substring(offset, width + offset) + newLine;\n offset += width;\n } else {\n spaceToWrapAt = subjectString.indexOf(' ', width + offset);\n if (spaceToWrapAt >= 0) {\n wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine;\n offset = spaceToWrapAt + 1;\n } else {\n wrappedLine += indent + subjectString.substring(offset);\n offset = subjectLength;\n }\n }\n }\n }\n if (offset < subjectLength) {\n wrappedLine += indent + subjectString.substring(offset);\n }\n return wrappedLine;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Checks whether `subject` ends with `end`.\n *\n * @function endsWith\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {string} end The ending string.\n * @param {number} [position=subject.length] Search within `subject` as if the string were only `position` long.\n * @return {boolean} Returns `true` if `subject` ends with `end` or `false` otherwise.\n * @example\n * v.endsWith('red alert', 'alert');\n * // => true\n *\n * v.endsWith('metro south', 'metro');\n * // => false\n *\n * v.endsWith('Murphy', 'ph', 5);\n * // => true\n */\nexport default function endsWith(subject, end, position) {\n if (isNil(end)) {\n return false;\n }\n const subjectString = coerceToString(subject);\n const endString = coerceToString(end);\n if (endString === '') {\n return true;\n }\n position = isNil(position) ? subjectString.length : clipNumber(toInteger(position), 0, subjectString.length);\n position -= endString.length;\n const lastIndex = subjectString.indexOf(endString, position);\n return lastIndex !== -1 && lastIndex === position;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_ALPHA } from 'helper/reg_exp/const_extended';\n\n/**\n * Checks whether `subject` contains only alpha characters.\n *\n * @function isAlpha\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only alpha characters or `false` otherwise.\n * @example\n * v.isAlpha('bart');\n * // => true\n *\n * v.isAlpha('lisa!');\n * // => false\n *\n * v.isAlpha('lisa and bart');\n * // => false\n */\nexport default function isAlpha(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_ALPHA.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_ALPHA_DIGIT } from 'helper/reg_exp/const_extended';\n\n/**\n * Checks whether `subject` contains only alpha and digit characters.\n *\n * @function isAlphaDigit\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only alpha and digit characters or `false` otherwise.\n * @example\n * v.isAlphaDigit('year2020');\n * // => true\n *\n * v.isAlphaDigit('1448');\n * // => true\n *\n * v.isAlphaDigit('40-20');\n * // => false\n */\nexport default function isAlphaDigit(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_ALPHA_DIGIT.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Checks whether `subject` is empty or contains only whitespaces.\n *\n * @function isBlank\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is empty or contains only whitespaces or `false` otherwise.\n * @example\n * v.isBlank('');\n * // => true\n *\n * v.isBlank(' ');\n * // => true\n *\n * v.isBlank('World');\n * // => false\n */\nexport default function isBlank(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.trim().length === 0;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_DIGIT } from 'helper/reg_exp/const';\n\n/**\n * Checks whether `subject` contains only digit characters.\n *\n * @function isDigit\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only digit characters or `false` otherwise.\n * @example\n * v.isDigit('35');\n * // => true\n *\n * v.isDigit('1.5');\n * // => false\n *\n * v.isDigit('ten');\n * // => false\n */\nexport default function isDigit(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_DIGIT.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Checks whether `subject` is empty.\n *\n * @function isEmpty\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is empty or `false` otherwise\n * @example\n * v.isEmpty('');\n * // => true\n *\n * v.isEmpty(' ');\n * // => false\n */\nexport default function isEmpty(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.length === 0;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isAlpha from 'query/is_alpha';\n\n/**\n * Checks whether `subject` has only lower case characters.\n *\n * @function isLowerCase\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is lower case or `false` otherwise.\n * @example\n * v.isLowerCase('motorcycle');\n * // => true\n *\n * v.isLowerCase('John');\n * // => false\n *\n * v.isLowerCase('T1000');\n * // => false\n */\nexport default function isLowerCase(subject) {\n const valueString = coerceToString(subject);\n return isAlpha(valueString) && valueString.toLowerCase() === valueString;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Checks whether `subject` is numeric.\n *\n * @function isNumeric\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is numeric or `false` otherwise.\n * @example\n * v.isNumeric('350');\n * // => true\n *\n * v.isNumeric('-20.5');\n * // => true\n *\n * v.isNumeric('NaN');\n * // => false\n */\nexport default function isNumeric(subject) {\n const valueNumeric = typeof subject === 'object' && !isNil(subject) ? Number(subject) : subject;\n return (typeof valueNumeric === 'number' || typeof valueNumeric === 'string')\n && !isNaN(valueNumeric - parseFloat(valueNumeric));\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isAlpha from 'query/is_alpha';\n\n/**\n * Checks whether `subject` contains only upper case characters.\n *\n * @function isUpperCase\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is upper case or `false` otherwise.\n * @example\n * v.isUpperCase('ACDC');\n * // => true\n *\n * v.isUpperCase('Morning');\n * // => false\n */\nexport default function isUpperCase(subject) {\n const subjectString = coerceToString(subject);\n return isAlpha(subjectString) && subjectString.toUpperCase() === subjectString;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` matches the regular expression `pattern`.\n *\n * @function matches\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {RegExp|string} pattern The pattern to match. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {boolean} Returns `true` if `subject` matches `pattern` or `false` otherwise.\n * @example\n * v.matches('pluto', /plu.{2}/);\n * // => true\n *\n * v.matches('sun', 'S', 'i');\n * // => true\n *\n * v.matches('apollo 11', '\\\\d{3}');\n * // => false\n */\nexport default function matches(subject, pattern, flags) {\n const subjectString = coerceToString(subject);\n const flagsString = coerceToString(flags);\n let patternString;\n if (!(pattern instanceof RegExp)) {\n patternString = toString(pattern);\n if (patternString === null) {\n return false;\n }\n pattern = new RegExp(patternString, flagsString);\n }\n return pattern.test(subjectString);\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` starts with `start`.\n *\n * @function startsWith\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {string} start The starting string.\n * @param {number} [position=0] The position to start searching.\n * @return {boolean} Returns `true` if `subject` starts with `start` or `false` otherwise.\n * @example\n * v.startsWith('say hello to my little friend', 'say hello');\n * // => true\n *\n * v.startsWith('tony', 'on', 1);\n * // => true\n *\n * v.startsWith('the world is yours', 'world');\n * // => false\n */\nexport default function startsWith(subject, start, position) {\n const subjectString = coerceToString(subject);\n const startString = toString(start);\n if (startString === null) {\n return false;\n }\n if (startString === '') {\n return true;\n }\n position = isNil(position) ? 0 : clipNumber(toInteger(position), 0, subjectString.length);\n return subjectString.substr(position, startString.length) === startString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Splits `subject` into an array of characters.\n *\n * @function chars\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @return {Array} Returns the array of characters.\n * @example\n * v.chars('cloud');\n * // => ['c', 'l', 'o', 'u', 'd']\n */\nexport default function chars(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.split('');\n}","import codePointAt from 'chop/code_point_at';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns an array of Unicode code point values from characters of `subject`.\n *\n * @function codePoints\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to extract from.\n * @return {Array} Returns an array of non-negative numbers less than or equal to `0x10FFFF`.\n * @example\n * v.codePoints('rain');\n * // => [114, 97, 105, 110], or\n * // [0x72, 0x61, 0x69, 0x6E]\n *\n * v.codePoints('\\uD83D\\uDE00 smile'); // or '😀 smile'\n * // => [128512, 32, 115, 109, 105, 108, 101], or\n * // [0x1F600, 0x20, 0x73, 0x6D, 0x69, 0x6C, 0x65]\n */\nexport default function codePoints(subject) {\n const subjectString = coerceToString(subject);\n const subjectStringLength = subjectString.length;\n const codePointArray = [];\n let index = 0;\n let codePointNumber;\n while (index < subjectStringLength) {\n codePointNumber = codePointAt(subjectString, index);\n codePointArray.push(codePointNumber);\n index += codePointNumber > 0xFFFF ? 2 : 1;\n }\n return codePointArray;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport nilDefault from 'helper/undefined/nil_default';\nimport { REGEXP_UNICODE_CHARACTER } from 'helper/reg_exp/const';\n\n/**\n * Splits `subject` into an array of graphemes taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function graphemes\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @return {Array} Returns the array of graphemes.\n * @example\n * v.graphemes('\\uD835\\uDC00\\uD835\\uDC01'); // or '𝐀𝐁'\n * // => ['\\uD835\\uDC00', '\\uD835\\uDC01'], or\n * // ['𝐀', '𝐁']\n *\n * v.graphemes('cafe\\u0301'); // or 'café'\n * // => ['c', 'a', 'f', 'e\\u0301'], or\n * // ['c', 'a', 'f', 'é']\n */\nexport default function graphemes(subject) {\n const subjectString = coerceToString(subject);\n return nilDefault(subjectString.match(REGEXP_UNICODE_CHARACTER), []);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Splits `subject` into an array of chunks by `separator`.\n *\n * @function split\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @param {string|RegExp} [separator] The pattern to match the separator.\n * @param {number} [limit] Limit the number of chunks to be found.\n * @return {Array} Returns the array of chunks.\n * @example\n * v.split('rage against the dying of the light', ' ');\n * // => ['rage', 'against', 'the', 'dying', 'of', 'the', 'light']\n *\n * v.split('the dying of the light', /\\s/, 3);\n * // => ['the', 'dying', 'of']\n */\nexport default function split(subject, separator, limit) {\n const subjectString = coerceToString(subject);\n return subjectString.split(separator, limit);\n}","let globalObject = null;\n\nfunction getGlobalObject() {\n if (globalObject !== null) {\n return globalObject;\n }\n /* istanbul ignore next */\n // It's hard to mock the global variables. This code surely works fine. I hope :)\n if (typeof global === 'object' && global.Object === Object) {\n // NodeJS global object\n globalObject = global;\n } else if (typeof self === 'object' && self.Object === Object) {\n // self property from Window object\n globalObject = self;\n } else {\n // Other cases. Function constructor always has the context as global object\n globalObject = new Function('return this')();\n }\n return globalObject;\n}\n\nexport default getGlobalObject;","import getGlobalObject from 'helper/object/get_global';\n\nconst globalObject = getGlobalObject();\nconst previousV = globalObject.v;\n\n/**\n * Restores `v` variable to previous value and returns Voca library instance.\n *\n * @function noConflict\n * @static\n * @since 1.0.0\n * @memberOf Util\n * @return {Object} Returns Voca library instance.\n * @example\n * var voca = v.noConflict();\n * voca.isAlhpa('Hello');\n * // => true\n */\nexport default function noConflict() {\n if (this === globalObject.v) {\n globalObject.v = previousV;\n }\n return this;\n}","import functions from 'functions';\n\n\n/**\n * The chain wrapper constructor.\n *\n * @ignore\n * @param {string} subject The string to be wrapped.\n * @param {boolean} [explicitChain=false] A boolean that indicates if the chain sequence is explicit or implicit.\n * @return {ChainWrapper} Returns a new instance of `ChainWrapper`\n * @constructor\n */\nfunction ChainWrapper(subject, explicitChain) {\n this._wrappedValue = subject;\n this._explicitChain = explicitChain;\n}\n\n/**\n * Unwraps the chain sequence wrapped value.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__value\n * @return {*} Returns the unwrapped value.\n * @example\n * v\n * .chain('Hello world')\n * .replace('Hello', 'Hi')\n * .lowerCase()\n * .slugify()\n * .value()\n * // => 'hi-world'\n *\n * v(' Space travel ')\n * .trim()\n * .truncate(8)\n * .value()\n * // => 'Space...'\n */\nChainWrapper.prototype.value = function() {\n return this._wrappedValue;\n};\n\n/**\n * Override the default object valueOf().\n *\n * @ignore\n * @return {*} Returns the wrapped value.\n */\nChainWrapper.prototype.valueOf = function() {\n return this.value();\n};\n\n/**\n * Returns the wrapped value to be used in JSON.stringify().\n *\n * @ignore\n * @return {*} Returns the wrapped value.\n */\nChainWrapper.prototype.toJSON = function() {\n return this.value();\n};\n\n/**\n * Returns the string representation of the wrapped value.\n *\n * @ignore\n * @return {string} Returns the string representation.\n */\nChainWrapper.prototype.toString = function() {\n return String(this.value());\n};\n\n/**\n * Creates a new chain object that enables explicit chain sequences.\n * Use `v.prototype.value()` to unwrap the result.
\n * Does not modify the wrapped value.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__chain\n * @return {Object} Returns the wrapper in explicit mode.\n * @example\n * v('Back to School')\n * .chain()\n * .lowerCase()\n * .words()\n * .value()\n * // => ['back', 'to', 'school']\n *\n * v(\" Back to School \")\n * .chain()\n * .trim()\n * .truncate(7)\n * .value()\n * // => 'Back...'\n */\nChainWrapper.prototype.chain = function() {\n return new ChainWrapper(this._wrappedValue, true);\n};\n\n/**\n * Modifies the wrapped value with the invocation result of `changer` function. The current wrapped value is the\n * argument of `changer` invocation.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__thru\n * @param {Function} changer The function to invoke.\n * @return {Object} Returns the new wrapper that wraps the invocation result of `changer`.\n * @example\n * v\n * .chain('sun is shining')\n * .words()\n * .thru(function(words) {\n * return words[0];\n * })\n * .value()\n * // => 'sun'\n *\n */\nChainWrapper.prototype.thru = function(changer) {\n if (typeof changer === 'function') {\n return new ChainWrapper(changer(this._wrappedValue), this._explicitChain);\n }\n return this;\n};\n\n/**\n * A boolean that indicates if the chain sequence is explicit or implicit.\n * @ignore\n * @type {boolean}\n * @private\n */\nChainWrapper.prototype._explicitChain = true;\n\n/**\n * Make a voca function chainable.\n *\n * @ignore\n * @param {Function} functionInstance The function to make chainable\n * @return {Function} Returns the chainable function\n */\nfunction makeFunctionChainable(functionInstance) {\n return function(...args) {\n const result = functionInstance(this._wrappedValue, ...args);\n if (this._explicitChain || typeof result === 'string') {\n return new ChainWrapper(result, this._explicitChain);\n } else {\n return result;\n }\n };\n}\n\nObject.keys(functions).forEach(function(name) {\n ChainWrapper.prototype[name] = makeFunctionChainable(functions[name]);\n});\n\n\nexport default ChainWrapper;","import ChainWrapper from 'chain/wrapper';\n\n/**\n * Creates a chain object that wraps `subject`, enabling explicit chain sequences.
\n * Use `v.prototype.value()` to unwrap the result.\n *\n * @memberOf Chain\n * @since 1.0.0\n * @function chain\n * @param {string} subject The string to wrap.\n * @return {Object} Returns the new wrapper object.\n * @example\n * v\n * .chain('Back to School')\n * .lowerCase()\n * .words()\n * .value()\n * // => ['back', 'to', 'school']\n */\nexport default function chain(subject) {\n return new ChainWrapper(subject, true);\n}","import chain from './chain/chain'; // include chain here to resolve af circular reference\nimport ChainWrapper from './chain/wrapper';\nimport functions from './functions';\n\n/**\n * Creates a chain object that wraps `subject`, enabling implicit chain sequences.
\n * A function that returns `number`, `boolean` or `array` type terminates the chain sequence and returns the unwrapped value.\n * Otherwise use `v.prototype.value()` to unwrap the result.\n *\n * @memberOf Chain\n * @since 1.0.0\n * @function v\n * @param {string} subject The string to wrap.\n * @return {Object} Returns the new wrapper object.\n * @example\n * v('Back to School')\n * .lowerCase()\n * .words()\n * // => ['back', 'to', 'school']\n *\n * v(\" Back to School \")\n * .trim()\n * .truncate(7)\n * .value()\n * // => 'Back...'\n */\nfunction Voca(subject) {\n return new ChainWrapper(subject, false);\n}\n\nObject.assign(Voca, functions, {\n chain: chain\n});\n\nexport default Voca;","/**\n * A regular expression string matching digits\n *\n * @type {string}\n * @ignore\n */\nexport const digit = '\\\\d';\n\n/**\n * A regular expression string matching whitespace\n *\n * @type {string}\n * @ignore\n */\nexport const whitespace = '\\\\s\\\\uFEFF\\\\xA0';\n\n/**\n * A regular expression string matching high surrogate\n *\n * @type {string}\n * @ignore\n */\nexport const highSurrogate = '\\\\uD800-\\\\uDBFF';\n\n/**\n * A regular expression string matching low surrogate\n *\n * @type {string}\n * @ignore\n */\nexport const lowSurrogate = '\\\\uDC00-\\\\uDFFF';\n\n/**\n * A regular expression string matching diacritical mark\n *\n * @type {string}\n * @ignore\n */\nexport const diacriticalMark = '\\\\u0300-\\\\u036F\\\\u1AB0-\\\\u1AFF\\\\u1DC0-\\\\u1DFF\\\\u20D0-\\\\u20FF\\\\uFE20-\\\\uFE2F';\n\n/**\n * A regular expression to match the base character for a combining mark\n *\n * @type {string}\n * @ignore\n */\nexport const base = '\\\\0-\\\\u02FF\\\\u0370-\\\\u1AAF\\\\u1B00-\\\\u1DBF\\\\u1E00-\\\\u20CF\\\\u2100-\\\\uD7FF\\\\uE000-\\\\uFE1F\\\\uFE30-\\\\uFFFF';\n\n/**\n * Regular expression to match combining marks\n *\n * @see http://unicode.org/faq/char_combmark.html\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_COMBINING_MARKS = new RegExp('([' + base + ']|[' + highSurrogate + '][' + lowSurrogate + ']|[' + highSurrogate + '](?![' + lowSurrogate + '])|(?:[^' + highSurrogate + ']|^)[' + lowSurrogate + '])([' + diacriticalMark + ']+)', 'g');\n\n/**\n * Regular expression to match surrogate pairs\n *\n * @see http://www.unicode.org/faq/utf_bom.html#utf16-2\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_SURROGATE_PAIRS = new RegExp('([' + highSurrogate + '])([' + lowSurrogate + '])', 'g');\n\n/**\n * Regular expression to match an unicode character\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_UNICODE_CHARACTER = new RegExp(\n'((?:[' + base + ']|[' + highSurrogate + '][' + lowSurrogate + ']|[' + highSurrogate + '](?![' + lowSurrogate + '])|(?:[^' + highSurrogate + ']|^)[' + lowSurrogate + '])(?:[' + diacriticalMark + ']+))|\\\n([' + highSurrogate + '][' + lowSurrogate + '])|\\\n([\\\\n\\\\r\\\\u2028\\\\u2029])|\\\n(.)', 'g');\n\n/**\n * Regular expression to match whitespaces from the left side\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRIM_LEFT = new RegExp('^[' + whitespace + ']+');\n\n/**\n * Regular expression to match whitespaces from the right side\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRIM_RIGHT = new RegExp('[' + whitespace + ']+$');\n\n/**\n * Regular expression to match digit characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_DIGIT = new RegExp('^' + digit + '+$');\n\n/**\n * Regular expression to match regular expression special characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_SPECIAL_CHARACTERS = /[-[\\]{}()*+!<=:?.\\/\\\\^$|#,]/g;\n\n/**\n * Regular expression to match not latin characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_NON_LATIN = /[^A-Za-z0-9]/g;\n\n/**\n * Regular expression to match HTML special characters.\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_HTML_SPECIAL_CHARACTERS = /[<>&\"'`]/g;\n\n/**\n * Regular expression to match sprintf format string\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_CONVERSION_SPECIFICATION = /(%{1,2})(?:(\\d+)\\$)?(\\+)?([ 0]|'.{1})?(-)?(\\d+)?(?:\\.(\\d+))?([bcdiouxXeEfgGs])?/g;\n\n/**\n * Regular expression to match trailing zeros in a number\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRAILING_ZEROS = /\\.?0+$/g;\n\n/**\n * Regular expression to match flags from a regular expression.\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_FLAGS = /[gimuy]*$/;","import { diacriticalMark, digit, whitespace } from 'helper/reg_exp/const';\n\n/**\n * A regular expression to match the General Punctuation Unicode block\n *\n * @type {string}\n * @ignore\n */\nconst generalPunctuationBlock = '\\\\u2000-\\\\u206F';\n\n/**\n * A regular expression to match non characters from from Basic Latin and Latin-1 Supplement Unicode blocks\n *\n * @type {string}\n * @ignore\n */\nconst nonCharacter = '\\\\x00-\\\\x2F\\\\x3A-\\\\x40\\\\x5B-\\\\x60\\\\x7b-\\\\xBF\\\\xD7\\\\xF7';\n\n/**\n * A regular expression to match the dingbat Unicode block\n *\n * @type {string}\n * @ignore\n */\nconst dingbatBlock = '\\\\u2700-\\\\u27BF';\n\n/**\n * A regular expression string that matches lower case letters: LATIN\n *\n * @type {string}\n * @ignore\n */\nconst lowerCaseLetter = 'a-z\\\\xB5\\\\xDF-\\\\xF6\\\\xF8-\\\\xFF\\\\u0101\\\\u0103\\\\u0105\\\\u0107\\\\u0109\\\\u010B\\\\u010D\\\\u010F\\\\u0111\\\\u0113\\\\u0115\\\\u0117\\\\u0119\\\\u011B\\\\u011D\\\\u011F\\\\u0121\\\\u0123\\\\u0125\\\\u0127\\\\u0129\\\\u012B\\\\u012D\\\\u012F\\\\u0131\\\\u0133\\\\u0135\\\\u0137\\\\u0138\\\\u013A\\\\u013C\\\\u013E\\\\u0140\\\\u0142\\\\u0144\\\\u0146\\\\u0148\\\\u0149\\\\u014B\\\\u014D\\\\u014F\\\\u0151\\\\u0153\\\\u0155\\\\u0157\\\\u0159\\\\u015B\\\\u015D\\\\u015F\\\\u0161\\\\u0163\\\\u0165\\\\u0167\\\\u0169\\\\u016B\\\\u016D\\\\u016F\\\\u0171\\\\u0173\\\\u0175\\\\u0177\\\\u017A\\\\u017C\\\\u017E-\\\\u0180\\\\u0183\\\\u0185\\\\u0188\\\\u018C\\\\u018D\\\\u0192\\\\u0195\\\\u0199-\\\\u019B\\\\u019E\\\\u01A1\\\\u01A3\\\\u01A5\\\\u01A8\\\\u01AA\\\\u01AB\\\\u01AD\\\\u01B0\\\\u01B4\\\\u01B6\\\\u01B9\\\\u01BA\\\\u01BD-\\\\u01BF\\\\u01C6\\\\u01C9\\\\u01CC\\\\u01CE\\\\u01D0\\\\u01D2\\\\u01D4\\\\u01D6\\\\u01D8\\\\u01DA\\\\u01DC\\\\u01DD\\\\u01DF\\\\u01E1\\\\u01E3\\\\u01E5\\\\u01E7\\\\u01E9\\\\u01EB\\\\u01ED\\\\u01EF\\\\u01F0\\\\u01F3\\\\u01F5\\\\u01F9\\\\u01FB\\\\u01FD\\\\u01FF\\\\u0201\\\\u0203\\\\u0205\\\\u0207\\\\u0209\\\\u020B\\\\u020D\\\\u020F\\\\u0211\\\\u0213\\\\u0215\\\\u0217\\\\u0219\\\\u021B\\\\u021D\\\\u021F\\\\u0221\\\\u0223\\\\u0225\\\\u0227\\\\u0229\\\\u022B\\\\u022D\\\\u022F\\\\u0231\\\\u0233-\\\\u0239\\\\u023C\\\\u023F\\\\u0240\\\\u0242\\\\u0247\\\\u0249\\\\u024B\\\\u024D\\\\u024F';\n\n/**\n * A regular expression string that matches upper case letters: LATIN\n *\n * @type {string}\n * @ignore\n */\nconst upperCaseLetter = '\\\\x41-\\\\x5a\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\\\\u0100\\\\u0102\\\\u0104\\\\u0106\\\\u0108\\\\u010a\\\\u010c\\\\u010e\\\\u0110\\\\u0112\\\\u0114\\\\u0116\\\\u0118\\\\u011a\\\\u011c\\\\u011e\\\\u0120\\\\u0122\\\\u0124\\\\u0126\\\\u0128\\\\u012a\\\\u012c\\\\u012e\\\\u0130\\\\u0132\\\\u0134\\\\u0136\\\\u0139\\\\u013b\\\\u013d\\\\u013f\\\\u0141\\\\u0143\\\\u0145\\\\u0147\\\\u014a\\\\u014c\\\\u014e\\\\u0150\\\\u0152\\\\u0154\\\\u0156\\\\u0158\\\\u015a\\\\u015c\\\\u015e\\\\u0160\\\\u0162\\\\u0164\\\\u0166\\\\u0168\\\\u016a\\\\u016c\\\\u016e\\\\u0170\\\\u0172\\\\u0174\\\\u0176\\\\u0178\\\\u0179\\\\u017b\\\\u017d\\\\u0181\\\\u0182\\\\u0184\\\\u0186\\\\u0187\\\\u0189-\\\\u018b\\\\u018e-\\\\u0191\\\\u0193\\\\u0194\\\\u0196-\\\\u0198\\\\u019c\\\\u019d\\\\u019f\\\\u01a0\\\\u01a2\\\\u01a4\\\\u01a6\\\\u01a7\\\\u01a9\\\\u01ac\\\\u01ae\\\\u01af\\\\u01b1-\\\\u01b3\\\\u01b5\\\\u01b7\\\\u01b8\\\\u01bc\\\\u01c4\\\\u01c5\\\\u01c7\\\\u01c8\\\\u01ca\\\\u01cb\\\\u01cd\\\\u01cf\\\\u01d1\\\\u01d3\\\\u01d5\\\\u01d7\\\\u01d9\\\\u01db\\\\u01de\\\\u01e0\\\\u01e2\\\\u01e4\\\\u01e6\\\\u01e8\\\\u01ea\\\\u01ec\\\\u01ee\\\\u01f1\\\\u01f2\\\\u01f4\\\\u01f6-\\\\u01f8\\\\u01fa\\\\u01fc\\\\u01fe\\\\u0200\\\\u0202\\\\u0204\\\\u0206\\\\u0208\\\\u020a\\\\u020c\\\\u020e\\\\u0210\\\\u0212\\\\u0214\\\\u0216\\\\u0218\\\\u021a\\\\u021c\\\\u021e\\\\u0220\\\\u0222\\\\u0224\\\\u0226\\\\u0228\\\\u022a\\\\u022c\\\\u022e\\\\u0230\\\\u0232\\\\u023a\\\\u023b\\\\u023d\\\\u023e\\\\u0241\\\\u0243-\\\\u0246\\\\u0248\\\\u024a\\\\u024c\\\\u024e';\n\n\n/**\n * Regular expression to match Unicode words\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_WORD = new RegExp(\n '(?:[' + upperCaseLetter + '][' + diacriticalMark + ']*)?(?:[' + lowerCaseLetter + '][' + diacriticalMark + ']*)+|\\\n(?:[' + upperCaseLetter + '][' + diacriticalMark + ']*)+(?![' + lowerCaseLetter + '])|\\\n[' + digit + ']+|\\\n[' + dingbatBlock + ']|\\\n[^' + nonCharacter + generalPunctuationBlock + whitespace + ']+', 'g');\n\n/**\n * Regular expression to match words from Basic Latin and Latin-1 Supplement blocks\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_LATIN_WORD = /[A-Z\\xC0-\\xD6\\xD8-\\xDE]?[a-z\\xDF-\\xF6\\xF8-\\xFF]+|[A-Z\\xC0-\\xD6\\xD8-\\xDE]+(?![a-z\\xDF-\\xF6\\xF8-\\xFF])|\\d+/g;\n\n/**\n * Regular expression to match alpha characters\n *\n * @see http://stackoverflow.com/a/22075070/1894471\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_ALPHA = new RegExp('^(?:[' + lowerCaseLetter + upperCaseLetter + '][' + diacriticalMark + ']*)+$');\n\n/**\n * Regular expression to match alpha and digit characters\n *\n * @see http://stackoverflow.com/a/22075070/1894471\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_ALPHA_DIGIT = new RegExp('^((?:[' + lowerCaseLetter + upperCaseLetter + '][' + diacriticalMark + ']*)|[' + digit + '])+$');\n\n/**\n * Regular expression to match Extended ASCII characters, i.e. the first 255\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_EXTENDED_ASCII = /^[\\x00-\\xFF]*$/;","/**\n * Max save integer value\n *\n * @ignore\n * @type {number}\n */\nexport const MAX_SAFE_INTEGER = 0x1fffffffffffff;","export default Object.freeze({\n // Type specifiers\n TYPE_INTEGER : 'i',\n TYPE_INTEGER_BINARY : 'b',\n TYPE_INTEGER_ASCII_CHARACTER : 'c',\n TYPE_INTEGER_DECIMAL : 'd',\n TYPE_INTEGER_OCTAL : 'o',\n TYPE_INTEGER_UNSIGNED_DECIMAL : 'u',\n TYPE_INTEGER_HEXADECIMAL : 'x',\n TYPE_INTEGER_HEXADECIMAL_UPPERCASE : 'X',\n TYPE_FLOAT_SCIENTIFIC : 'e',\n TYPE_FLOAT_SCIENTIFIC_UPPERCASE : 'E',\n TYPE_FLOAT : 'f',\n TYPE_FLOAT_SHORT : 'g',\n TYPE_FLOAT_SHORT_UPPERCASE : 'G',\n TYPE_STRING : 's',\n\n // Simple literals\n LITERAL_PERCENT : '%',\n LITERAL_SINGLE_QUOTE : \"'\",\n LITERAL_PLUS : '+',\n LITERAL_MINUS : '-',\n LITERAL_PERCENT_SPECIFIER : '%%',\n\n // Radix constants to format numbers\n RADIX_BINARY : 2,\n RADIX_OCTAL : 8,\n RADIX_DECIMAL : 10,\n RADIX_HEXADECIMAL : 16\n});","/**\n * Generated diacritics map. See bellow the base code.\n * @ignore\n * @see http://stackoverflow.com/a/18391901/1894471\n * @type Object\n */\n\nconst diacritics = {\n \"3\": \"\\u039e\\u03be\",\n \"8\": \"\\u0398\\u03b8\",\n \"A\": \"\\x41\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\u0100\\u0102\\u0104\\u01cd\\u01de\\u01e0\\u01fa\\u0200\\u0202\\u0226\\u023a\\u1e00\\u1ea0\\u1ea2\\u1ea4\\u1ea6\\u1ea8\\u1eaa\\u1eac\\u1eae\\u1eb0\\u1eb2\\u1eb4\\u1eb6\\u24b6\\u2c6f\\uff21\\u0386\\u0391\\u0410\",\n \"B\": \"\\x42\\u0181\\u0182\\u0243\\u1e02\\u1e04\\u1e06\\u24b7\\uff22\\u0392\\u0411\",\n \"C\": \"\\x43\\xc7\\u0106\\u0108\\u010a\\u010c\\u0187\\u023b\\u1e08\\u24b8\\ua73e\\uff23\\u0426\",\n \"D\": \"\\x44\\u010e\\u0110\\u0189\\u018a\\u018b\\u1e0a\\u1e0c\\u1e0e\\u1e10\\u1e12\\u24b9\\ua779\\uff24\\xd0\\u0394\\u0414\",\n \"E\": \"\\x45\\xc8\\xc9\\xca\\xcb\\u0112\\u0114\\u0116\\u0118\\u011a\\u018e\\u0190\\u0204\\u0206\\u0228\\u1e14\\u1e16\\u1e18\\u1e1a\\u1e1c\\u1eb8\\u1eba\\u1ebc\\u1ebe\\u1ec0\\u1ec2\\u1ec4\\u1ec6\\u24ba\\uff25\\u0388\\u0395\\u0415\\u042d\",\n \"F\": \"\\x46\\u0191\\u1e1e\\u24bb\\ua77b\\uff26\\u03a6\\u0424\",\n \"G\": \"\\x47\\u011c\\u011e\\u0120\\u0122\\u0193\\u01e4\\u01e6\\u01f4\\u1e20\\u24bc\\ua77d\\ua77e\\ua7a0\\uff27\\u0393\\u0413\\u0490\",\n \"H\": \"\\x48\\u0124\\u0126\\u021e\\u1e22\\u1e24\\u1e26\\u1e28\\u1e2a\\u24bd\\u2c67\\u2c75\\ua78d\\uff28\\u0389\\u0397\\u0425\",\n \"I\": \"\\x49\\xcc\\xcd\\xce\\xcf\\u0128\\u012a\\u012c\\u012e\\u0130\\u0197\\u01cf\\u0208\\u020a\\u1e2c\\u1e2e\\u1ec8\\u1eca\\u24be\\uff29\\u038a\\u0399\\u03aa\\u0406\\u0418\",\n \"J\": \"\\x4a\\u0134\\u0248\\u24bf\\uff2a\\u0419\",\n \"K\": \"\\x4b\\u0136\\u0198\\u01e8\\u1e30\\u1e32\\u1e34\\u24c0\\u2c69\\ua740\\ua742\\ua744\\ua7a2\\uff2b\\u039a\\u041a\",\n \"L\": \"\\x4c\\u0139\\u013b\\u013d\\u013f\\u0141\\u023d\\u1e36\\u1e38\\u1e3a\\u1e3c\\u24c1\\u2c60\\u2c62\\ua746\\ua748\\ua780\\uff2c\\u039b\\u041b\",\n \"M\": \"\\x4d\\u019c\\u1e3e\\u1e40\\u1e42\\u24c2\\u2c6e\\uff2d\\u039c\\u041c\",\n \"N\": \"\\x4e\\xd1\\u0143\\u0145\\u0147\\u019d\\u01f8\\u0220\\u1e44\\u1e46\\u1e48\\u1e4a\\u24c3\\ua790\\ua7a4\\uff2e\\u039d\\u041d\",\n \"O\": \"\\x4f\\xd2\\xd3\\xd4\\xd5\\xd6\\xd8\\u014c\\u014e\\u0150\\u0186\\u019f\\u01a0\\u01d1\\u01ea\\u01ec\\u01fe\\u020c\\u020e\\u022a\\u022c\\u022e\\u0230\\u1e4c\\u1e4e\\u1e50\\u1e52\\u1ecc\\u1ece\\u1ed0\\u1ed2\\u1ed4\\u1ed6\\u1ed8\\u1eda\\u1edc\\u1ede\\u1ee0\\u1ee2\\u24c4\\ua74a\\ua74c\\uff2f\\u038c\\u039f\\u041e\",\n \"P\": \"\\x50\\u01a4\\u1e54\\u1e56\\u24c5\\u2c63\\ua750\\ua752\\ua754\\uff30\\u03a0\\u041f\",\n \"Q\": \"\\x51\\u024a\\u24c6\\ua756\\ua758\\uff31\",\n \"R\": \"\\x52\\u0154\\u0156\\u0158\\u0210\\u0212\\u024c\\u1e58\\u1e5a\\u1e5c\\u1e5e\\u24c7\\u2c64\\ua75a\\ua782\\ua7a6\\uff32\\u03a1\\u0420\",\n \"S\": \"\\x53\\u015a\\u015c\\u015e\\u0160\\u0218\\u1e60\\u1e62\\u1e64\\u1e66\\u1e68\\u1e9e\\u24c8\\u2c7e\\ua784\\ua7a8\\uff33\\u03a3\\u0421\",\n \"T\": \"\\x54\\u0162\\u0164\\u0166\\u01ac\\u01ae\\u021a\\u023e\\u1e6a\\u1e6c\\u1e6e\\u1e70\\u24c9\\ua786\\uff34\\u03a4\\u0422\",\n \"U\": \"\\x55\\xd9\\xda\\xdb\\xdc\\u0168\\u016a\\u016c\\u016e\\u0170\\u0172\\u01af\\u01d3\\u01d5\\u01d7\\u01d9\\u01db\\u0214\\u0216\\u0244\\u1e72\\u1e74\\u1e76\\u1e78\\u1e7a\\u1ee4\\u1ee6\\u1ee8\\u1eea\\u1eec\\u1eee\\u1ef0\\u24ca\\uff35\\u0423\\u042a\",\n \"V\": \"\\x56\\u01b2\\u0245\\u1e7c\\u1e7e\\u24cb\\ua75e\\uff36\\u0412\",\n \"W\": \"\\x57\\u0174\\u1e80\\u1e82\\u1e84\\u1e86\\u1e88\\u24cc\\u2c72\\uff37\\u038f\\u03a9\",\n \"X\": \"\\x58\\u1e8a\\u1e8c\\u24cd\\uff38\\u03a7\",\n \"Y\": \"\\x59\\xdd\\u0176\\u0178\\u01b3\\u0232\\u024e\\u1e8e\\u1ef2\\u1ef4\\u1ef6\\u1ef8\\u1efe\\u24ce\\uff39\\u038e\\u03a5\\u03ab\\u042b\",\n \"Z\": \"\\x5a\\u0179\\u017b\\u017d\\u01b5\\u0224\\u1e90\\u1e92\\u1e94\\u24cf\\u2c6b\\u2c7f\\ua762\\uff3a\\u0396\\u0417\",\n \"a\": \"\\x61\\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\u0101\\u0103\\u0105\\u01ce\\u01df\\u01e1\\u01fb\\u0201\\u0203\\u0227\\u0250\\u1e01\\u1e9a\\u1ea1\\u1ea3\\u1ea5\\u1ea7\\u1ea9\\u1eab\\u1ead\\u1eaf\\u1eb1\\u1eb3\\u1eb5\\u1eb7\\u24d0\\u2c65\\uff41\\u03ac\\u03b1\\u0430\",\n \"b\": \"\\x62\\u0180\\u0183\\u0253\\u1e03\\u1e05\\u1e07\\u24d1\\uff42\\u03b2\\u0431\",\n \"c\": \"\\x63\\xe7\\u0107\\u0109\\u010b\\u010d\\u0188\\u023c\\u1e09\\u2184\\u24d2\\ua73f\\uff43\\u0446\",\n \"d\": \"\\x64\\u010f\\u0111\\u018c\\u0256\\u0257\\u1e0b\\u1e0d\\u1e0f\\u1e11\\u1e13\\u24d3\\ua77a\\uff44\\xf0\\u03b4\\u0434\",\n \"e\": \"\\x65\\xe8\\xe9\\xea\\xeb\\u0113\\u0115\\u0117\\u0119\\u011b\\u01dd\\u0205\\u0207\\u0229\\u0247\\u025b\\u1e15\\u1e17\\u1e19\\u1e1b\\u1e1d\\u1eb9\\u1ebb\\u1ebd\\u1ebf\\u1ec1\\u1ec3\\u1ec5\\u1ec7\\u24d4\\uff45\\u03ad\\u03b5\\u0435\\u044d\",\n \"f\": \"\\x66\\u0192\\u1e1f\\u24d5\\ua77c\\uff46\\u03c6\\u0444\",\n \"g\": \"\\x67\\u011d\\u011f\\u0121\\u0123\\u01e5\\u01e7\\u01f5\\u0260\\u1d79\\u1e21\\u24d6\\ua77f\\ua7a1\\uff47\\u03b3\\u0433\\u0491\",\n \"h\": \"\\x68\\u0125\\u0127\\u021f\\u0265\\u1e23\\u1e25\\u1e27\\u1e29\\u1e2b\\u1e96\\u24d7\\u2c68\\u2c76\\uff48\\u03ae\\u03b7\\u0445\",\n \"i\": \"\\x69\\xec\\xed\\xee\\xef\\u0129\\u012b\\u012d\\u012f\\u0131\\u01d0\\u0209\\u020b\\u0268\\u1e2d\\u1e2f\\u1ec9\\u1ecb\\u24d8\\uff49\\u0390\\u03af\\u03b9\\u03ca\\u0438\\u0456\",\n \"j\": \"\\x6a\\u0135\\u01f0\\u0249\\u24d9\\uff4a\\u0439\",\n \"k\": \"\\x6b\\u0137\\u0199\\u01e9\\u1e31\\u1e33\\u1e35\\u24da\\u2c6a\\ua741\\ua743\\ua745\\ua7a3\\uff4b\\u03ba\\u043a\",\n \"l\": \"\\x6c\\u013a\\u013c\\u013e\\u0140\\u0142\\u017f\\u019a\\u026b\\u1e37\\u1e39\\u1e3b\\u1e3d\\u24db\\u2c61\\ua747\\ua749\\ua781\\uff4c\\u03bb\\u043b\",\n \"m\": \"\\x6d\\u026f\\u0271\\u1e3f\\u1e41\\u1e43\\u24dc\\uff4d\\u03bc\\u043c\",\n \"n\": \"\\x6e\\xf1\\u0144\\u0146\\u0148\\u0149\\u019e\\u01f9\\u0272\\u1e45\\u1e47\\u1e49\\u1e4b\\u24dd\\ua791\\ua7a5\\uff4e\\u03bd\\u043d\",\n \"o\": \"\\x6f\\xf2\\xf3\\xf4\\xf5\\xf6\\xf8\\u014d\\u014f\\u0151\\u01a1\\u01d2\\u01eb\\u01ed\\u01ff\\u020d\\u020f\\u022b\\u022d\\u022f\\u0231\\u0254\\u0275\\u1e4d\\u1e4f\\u1e51\\u1e53\\u1ecd\\u1ecf\\u1ed1\\u1ed3\\u1ed5\\u1ed7\\u1ed9\\u1edb\\u1edd\\u1edf\\u1ee1\\u1ee3\\u24de\\ua74b\\ua74d\\uff4f\\u03bf\\u03cc\\u043e\",\n \"p\": \"\\x70\\u01a5\\u1d7d\\u1e55\\u1e57\\u24df\\ua751\\ua753\\ua755\\uff50\\u03c0\\u043f\",\n \"q\": \"\\x71\\u024b\\u24e0\\ua757\\ua759\\uff51\",\n \"r\": \"\\x72\\u0155\\u0157\\u0159\\u0211\\u0213\\u024d\\u027d\\u1e59\\u1e5b\\u1e5d\\u1e5f\\u24e1\\ua75b\\ua783\\ua7a7\\uff52\\u03c1\\u0440\",\n \"s\": \"\\x73\\xdf\\u015b\\u015d\\u015f\\u0161\\u0219\\u023f\\u1e61\\u1e63\\u1e65\\u1e67\\u1e69\\u1e9b\\u24e2\\ua785\\ua7a9\\uff53\\u03c2\\u03c3\\u0441\",\n \"t\": \"\\x74\\u0163\\u0165\\u0167\\u01ad\\u021b\\u0288\\u1e6b\\u1e6d\\u1e6f\\u1e71\\u1e97\\u24e3\\u2c66\\ua787\\uff54\\u03c4\\u0442\",\n \"u\": \"\\x75\\xf9\\xfa\\xfb\\xfc\\u0169\\u016b\\u016d\\u016f\\u0171\\u0173\\u01b0\\u01d4\\u01d6\\u01d8\\u01da\\u01dc\\u0215\\u0217\\u0289\\u1e73\\u1e75\\u1e77\\u1e79\\u1e7b\\u1ee5\\u1ee7\\u1ee9\\u1eeb\\u1eed\\u1eef\\u1ef1\\u24e4\\uff55\\u0443\\u044a\",\n \"v\": \"\\x76\\u028b\\u028c\\u1e7d\\u1e7f\\u24e5\\ua75f\\uff56\\u0432\",\n \"w\": \"\\x77\\u0175\\u1e81\\u1e83\\u1e85\\u1e87\\u1e89\\u1e98\\u24e6\\u2c73\\uff57\\u03c9\\u03ce\",\n \"x\": \"\\x78\\u1e8b\\u1e8d\\u24e7\\uff58\\u03c7\",\n \"y\": \"\\x79\\xfd\\xff\\u0177\\u01b4\\u0233\\u024f\\u1e8f\\u1e99\\u1ef3\\u1ef5\\u1ef7\\u1ef9\\u1eff\\u24e8\\uff59\\u03b0\\u03c5\\u03cb\\u03cd\\u044b\",\n \"z\": \"\\x7a\\u017a\\u017c\\u017e\\u01b6\\u0225\\u0240\\u1e91\\u1e93\\u1e95\\u24e9\\u2c6c\\ua763\\uff5a\\u03b6\\u0437\",\n \"OE\": \"\\x8c\\u0152\",\n \"oe\": \"\\x9c\\u0153\",\n \"AE\": \"\\xc6\\u01e2\\u01fc\",\n \"ae\": \"\\xe6\\u01e3\\u01fd\",\n \"hv\": \"\\u0195\",\n \"OI\": \"\\u01a2\",\n \"oi\": \"\\u01a3\",\n \"DZ\": \"\\u01c4\\u01f1\",\n \"Dz\": \"\\u01c5\\u01f2\",\n \"dz\": \"\\u01c6\\u01f3\",\n \"LJ\": \"\\u01c7\",\n \"Lj\": \"\\u01c8\",\n \"lj\": \"\\u01c9\",\n \"NJ\": \"\\u01ca\",\n \"Nj\": \"\\u01cb\",\n \"nj\": \"\\u01cc\",\n \"OU\": \"\\u0222\",\n \"ou\": \"\\u0223\",\n \"TZ\": \"\\ua728\",\n \"tz\": \"\\ua729\",\n \"AA\": \"\\ua732\",\n \"aa\": \"\\ua733\",\n \"AO\": \"\\ua734\",\n \"ao\": \"\\ua735\",\n \"AU\": \"\\ua736\",\n \"au\": \"\\ua737\",\n \"AV\": \"\\ua738\\ua73a\",\n \"av\": \"\\ua739\\ua73b\",\n \"AY\": \"\\ua73c\",\n \"ay\": \"\\ua73d\",\n \"OO\": \"\\ua74e\",\n \"oo\": \"\\ua74f\",\n \"VY\": \"\\ua760\",\n \"vy\": \"\\ua761\",\n \"TH\": \"\\xde\",\n \"th\": \"\\xfe\",\n \"PS\": \"\\u03a8\",\n \"ps\": \"\\u03c8\",\n \"Yo\": \"\\u0401\",\n \"Ye\": \"\\u0404\",\n \"Yi\": \"\\u0407\",\n \"Zh\": \"\\u0416\",\n \"Ch\": \"\\u0427\",\n \"Sh\": \"\\u0428\\u0429\",\n \"\": \"\\u042c\\u044c\",\n \"Yu\": \"\\u042e\",\n \"Ya\": \"\\u042f\",\n \"zh\": \"\\u0436\",\n \"ch\": \"\\u0447\",\n \"sh\": \"\\u0448\\u0449\",\n \"yu\": \"\\u044e\",\n \"ya\": \"\\u044f\",\n \"yo\": \"\\u0451\",\n \"ye\": \"\\u0454\",\n \"yi\": \"\\u0457\"\n};\n\nconst diacriticsMap = {};\nlet index;\n\nObject.keys(diacritics).forEach(function(key) {\n const characters = diacritics[key];\n for (index = 0; index < characters.length; index++) {\n const character = characters[index];\n diacriticsMap[character] = key;\n }\n});\n\nexport default diacriticsMap;","/**\n * A property that contains the library semantic version number.\n * @name version\n * @static\n * @since 1.0.0\n * @memberOf Util\n * @type string\n * @example\n * v.version\n * // => '1.0.0'\n */\nconst version = '1.0.0';\n\nexport default version;"],"names":["isNil","value","undefined","coerceToBoolean","defaultValue","Boolean","isString","subject","coerceToString","String","capitalize","restToLower","subjectString","restToLowerCaseBoolean","toLowerCase","substr","toUpperCase","lowerCase","nilDefault","toString","words","pattern","flags","patternRegExp","REGEXP_EXTENDED_ASCII","test","REGEXP_LATIN_WORD","REGEXP_WORD","RegExp","flagsString","match","wordToCamel","word","index","camelCase","map","join","decapitalize","kebabCase","snakeCase","upperCase","clipNumber","downLimit","upLimit","toInteger","Infinity","MAX_SAFE_INTEGER","truncate","length","end","lengthInt","endString","charAt","position","isHighSurrogate","codePoint","HIGH_SURROGATE_START","HIGH_SURROGATE_END","isLowSurrogate","LOW_SURROGATE_START","LOW_SURROGATE_END","getAstralNumberFromSurrogatePair","highSurrogate","lowSurrogate","coerceToNumber","Number","nanDefault","codePointAt","subjectStringLength","positionNumber","firstCodePoint","charCodeAt","secondCodePoint","first","graphemeAt","graphemeMatch","graphemeMatchIndex","REGEXP_UNICODE_CHARACTER","exec","lastIndex","last","prune","truncatedLength","replace","offset","wordInsertLength","slice","start","substring","count","countGrapheme","REGEXP_COMBINING_MARKS","REGEXP_SURROGATE_PAIRS","countSubstrings","substringString","substringLength","matchIndex","indexOf","countWhere","predicate","context","predicateWithContext","bind","reduce","call","countTruthy","character","countWords","ReplacementIndex","repeat","times","timesInt","repeatString","buildPadding","padCharacters","padStringRepeat","padStringRest","padLeft","pad","padString","padRight","alignAndPad","conversion","width","padType","alignmentSpecifier","Const","LITERAL_MINUS","getPaddingCharacter","addSignToFormattedNumber","replacementNumber","formattedReplacement","signSpecifier","LITERAL_PLUS","float","replacement","parseFloat","isNaN","precision","typeSpecifier","TYPE_FLOAT","toFixed","TYPE_FLOAT_SCIENTIFIC","toExponential","TYPE_FLOAT_SCIENTIFIC_UPPERCASE","TYPE_FLOAT_SHORT","TYPE_FLOAT_SHORT_UPPERCASE","formatFloatAsShort","nonZeroPrecision","toPrecision","REGEXP_TRAILING_ZEROS","integerBase","integer","parseInt","TYPE_INTEGER_ASCII_CHARACTER","fromCharCode","TYPE_INTEGER_BINARY","RADIX_BINARY","TYPE_INTEGER_OCTAL","RADIX_OCTAL","TYPE_INTEGER_HEXADECIMAL","RADIX_HEXADECIMAL","TYPE_INTEGER_HEXADECIMAL_UPPERCASE","integerDecimal","stringFormat","compute","formatFunction","TYPE_STRING","formatString","TYPE_INTEGER_DECIMAL","TYPE_INTEGER","formatIntegerDecimal","TYPE_INTEGER_UNSIGNED_DECIMAL","formatIntegerBase","formatFloat","formattedString","ConversionSpecification","properties","percent","paddingSpecifier","validate","replacementsLength","Error","replacementIndex","replacements","conversionSpecification","widthSpecifier","precisionSpecifier","isPercentLiteral","actualReplacementIndex","getIndexByPosition","incrementOnEmptyPosition","computeReplacement","sprintf","format","boundReplacementMatch","replacementMatch","REGEXP_CONVERSION_SPECIFICATION","vprintf","replaceSpecialCharacter","escapeCharactersMap","escapeHtml","REGEXP_HTML_SPECIAL_CHARACTERS","escapeRegExp","REGEXP_SPECIAL_CHARACTERS","reduceUnescapedString","string","key","unescapeCharactersMap","unescapeHtml","characters","search","fromIndex","lastIndexOf","fromIndexNumber","insert","toInsert","toInsertString","removeDiacritics","characterWithoutDiacritic","diacriticMap","removeCombiningMarks","cleanCharacter","latinise","REGEXP_NON_LATIN","paddingLength","paddingSideLength","paddingSideRemainingLength","getRegExpFlags","regExp","REGEXP_FLAGS","includes","searchString","appendFlagToRegExp","appendFlag","regularExpressionFlags","source","replaceAll","global","appendFlagToRegularExpression","reverse","split","reverseGrapheme","$0","$1","$2","reversedString","slugify","cleanSubjectString","splice","deleteCount","toAdd","toAddString","startPosition","deleteCountNumber","trimLeft","whitespace","whitespaceString","REGEXP_TRIM_LEFT","whitespaceStringLength","matchWhitespace","totalWhitespaceLength","trimRight","REGEXP_TRIM_RIGHT","valueStringLength","trim","wordWrap","options","OPTION_WIDTH","newLine","OPTION_NEW_LINE","indent","OPTION_INDENT","cut","OPTION_CUT","subjectLength","wrappedLine","spaceToWrapAt","endsWith","isAlpha","REGEXP_ALPHA","isAlphaDigit","REGEXP_ALPHA_DIGIT","isBlank","isDigit","REGEXP_DIGIT","isEmpty","isLowerCase","valueString","isNumeric","valueNumeric","isUpperCase","matches","patternString","startsWith","startString","chars","codePoints","codePointArray","codePointNumber","push","graphemes","separator","limit","getGlobalObject","globalObject","Object","self","Function","noConflict","this","v","previousV","ChainWrapper","explicitChain","_wrappedValue","_explicitChain","makeFunctionChainable","functionInstance","args","result","chain","Voca","digit","diacriticalMark","base","generalPunctuationBlock","nonCharacter","dingbatBlock","lowerCaseLetter","upperCaseLetter","Array","prototype","increment","freeze","LITERAL_PERCENT_SPECIFIER","paddingCharacter","LITERAL_SINGLE_QUOTE","keys","diacritics","diacriticsMap","forEach","version","valueOf","toJSON","thru","changer","functions","name","_extends"],"mappings":"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,KAAON,GAAkB,QAAUD,GAAQ,QAQ1H3S,GAAwB,iBClFxBsB,GAAmB,iB7EN1BU,GAAuB,MACvBC,GAAqB,MACrBE,GAAsB,MACtBC,GAAoB,McDpB2C,GAASoO,MAAMC,UAAUrO,MEkB/BK,GAAiBgO,UAAUC,UAAY,gBAChC5S,SAUP2E,EAAiBgO,UAAU7I,yBAA2B,SAAS1I,GACzDrD,EAAMqD,SACHwR,aAWTjO,EAAiBgO,UAAU9I,mBAAqB,SAASzI,SAChDrD,GAAMqD,GAAYiQ,KAAKrR,MAAQoB,EAAW,E8D7CnD,QAAe6P,OAAO4B,qBAEiB,wBACA,iCACA,yBACA,uBACA,kCACA,6BACA,uCACA,0BACA,oCACA,eACA,qBACA,+BACA,gBACA,oBAGT,yBACA,iBACA,kBACA,8BACA,kBAGR,cACA,gBACA,qBACA,IlDuDtB9J,GAAwB4J,UAAUhJ,iBAAmB,iBAC5C9D,IAAMiN,4BAA8BzB,KAAKpI,SASlDF,EAAwB4J,UAAU5M,oBAAsB,cAClDgN,GAAmB9T,EAAWoS,KAAKnI,iBAAkB,WACzB,KAA5B6J,EAAiBhS,QAAgBgS,EAAiB,KAAOlN,GAAMmN,yBAC9CD,EAAiB,IAE/BA,EK/FT,IAAMxI,SACC,WACA,WACA,YACA,aACA,aACA,UEPDQ,QACC,oCACA,oCACA,qCACA,sCACA,6BACA,0BAEDE,GAAagG,OAAOgC,KAAKlI,I4CHzBmI,MACC,OACA,OACA,0CACA,gBACA,kBACA,sBACA,uCACA,aACA,uBACA,sBACA,8BACA,WACA,qBACA,yBACA,eACA,uBACA,mDACA,iBACA,WACA,wBACA,wBACA,sBACA,yCACA,cACA,iBACA,WACA,wBACA,qBACA,2CACA,gBACA,mBACA,sBACA,wCACA,aACA,uBACA,uBACA,+BACA,YACA,qBACA,0BACA,eACA,wBACA,mDACA,iBACA,WACA,wBACA,0BACA,uBACA,yCACA,cACA,kBACA,WACA,0BACA,sBACC,QACA,QACA,SACA,SACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACF,QACE,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,KAGFC,MACFnT,SAEJiR,QAAOgC,KAAKC,IAAYE,QAAQ,SAAStI,MACjCG,GAAaiI,GAAWpI,OACzB9K,GAAQ,EAAGA,GAAQiL,EAAWlK,OAAQf,KAAS,IAC5CyE,GAAYwG,EAAWjL,OACfyE,GAAaqG,IzBzH/B,IAAM6D,IAAe,QACfE,GAAkB,UAClBE,GAAgB,SAChBE,GAAa,MgBRf+B,GAAe,KCEbA,GAAeD,KACfQ,GAAYP,GAAaM,ESQzB+B,GAAU,wxBR4BhB7B,IAAamB,UAAU3U,MAAQ,iBACtBqT,MAAKK,eASdF,GAAamB,UAAUW,QAAU,iBACxBjC,MAAKrT,SASdwT,GAAamB,UAAUY,OAAS,iBACvBlC,MAAKrT,SASdwT,GAAamB,UAAUzT,SAAW,iBACzBV,QAAO6S,KAAKrT,UA2BrBwT,GAAamB,UAAUX,MAAQ,iBACtB,IAAIR,IAAaH,KAAKK,eAAe,IAuB9CF,GAAamB,UAAUa,KAAO,SAASC,SACd,kBAAZA,GACF,GAAIjC,IAAaiC,EAAQpC,KAAKK,eAAgBL,KAAKM,gBAErDN,MASTG,GAAamB,UAAUhB,gBAAiB,EAoBxCV,OAAOgC,KAAKS,IAAWN,QAAQ,SAASO,MACzBhB,UAAUgB,GAAQ/B,GAAsB8B,GAAUC,qLE7HjEC,IAAc3B,GAAMyB,UACX1B"} \ No newline at end of file +{"version":3,"file":null,"sources":["../src/helper/object/is_nil.js","../src/helper/boolean/coerce_to_boolean.js","../src/query/is_string.js","../src/helper/string/coerce_to_string.js","../src/case/capitalize.js","../src/case/lower_case.js","../src/helper/undefined/nil_default.js","../src/helper/string/to_string.js","../src/split/words.js","../src/case/camel_case.js","../src/case/decapitalize.js","../src/case/kebab_case.js","../src/case/snake_case.js","../src/case/upper_case.js","../src/helper/number/clip_number.js","../src/helper/number/to_integer.js","../src/chop/truncate.js","../src/chop/char_at.js","../src/helper/string/surrogate_pair.js","../src/helper/number/coerce_to_number.js","../src/helper/number/nan_default.js","../src/chop/code_point_at.js","../src/chop/first.js","../src/chop/grapheme_at.js","../src/chop/last.js","../src/chop/prune.js","../src/chop/slice.js","../src/chop/substr.js","../src/chop/substring.js","../src/count/count.js","../src/count/count_graphemes.js","../src/count/count_substrings.js","../src/count/count_where.js","../src/count/count_words.js","../src/helper/format/replacement/index.js","../src/manipulate/repeat.js","../src/helper/string/build_padding.js","../src/manipulate/pad_left.js","../src/manipulate/pad_right.js","../src/helper/format/align_and_pad.js","../src/helper/format/type_format/add_sign_to_formatted_number.js","../src/helper/format/type_format/float.js","../src/helper/format/type_format/integer_base.js","../src/helper/format/type_format/integer_decimal.js","../src/helper/format/type_format/string.js","../src/helper/format/replacement/compute.js","../src/helper/format/conversion_specification.js","../src/helper/format/replacement/validate.js","../src/helper/format/replacement/match.js","../src/format/sprintf.js","../src/format/vprintf.js","../src/escape/escape_html.js","../src/escape/escape_reg_exp.js","../src/escape/unescape_html.js","../src/index/index_of.js","../src/index/last_index_of.js","../src/index/search.js","../src/manipulate/insert.js","../src/helper/string/diacritics_map.js","../src/manipulate/latinise.js","../src/manipulate/pad.js","../src/manipulate/replace.js","../src/helper/reg_exp/get_reg_exp_flags.js","../src/query/includes.js","../src/helper/reg_exp/append_flag_to_reg_exp.js","../src/manipulate/replace_all.js","../src/manipulate/reverse.js","../src/manipulate/reverse_grapheme.js","../src/manipulate/slugify.js","../src/manipulate/splice.js","../src/manipulate/trim_left.js","../src/manipulate/trim_right.js","../src/manipulate/trim.js","../src/manipulate/word_wrap.js","../src/query/ends_with.js","../src/query/is_alpha.js","../src/query/is_alpha_digit.js","../src/query/is_blank.js","../src/query/is_digit.js","../src/query/is_empty.js","../src/query/is_lower_case.js","../src/query/is_numeric.js","../src/query/is_upper_case.js","../src/query/matches.js","../src/query/starts_with.js","../src/split/chars.js","../src/split/code_points.js","../src/split/graphemes.js","../src/split/split.js","../src/helper/string/has_substring_at_index.js","../src/helper/strip/parse_tag_list.js","../src/helper/strip/parse_tag_name.js","../src/strip/strip_tags.js","../src/helper/object/get_global.js","../src/util/no_conflict.js","../src/chain/wrapper.js","../src/chain/chain.js","../src/index.js","../src/helper/reg_exp/const.js","../src/helper/reg_exp/const_extended.js","../src/helper/number/const.js","../src/helper/format/const.js","../src/util/version.js"],"sourcesContent":["/**\n * Checks if `value` is `null` or `undefined`\n *\n * @ignore\n * @function isNil\n * @param {*} value The object to check\n * @return {boolean} Returns `true` is `value` is `undefined` or `null`, `false` otherwise\n */\nexport default function isNil(value) {\n return value === undefined || value === null;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Converts the `value` to a boolean. If `value` is `undefined` or `null`, returns `defaultValue`.\n *\n * @ignore\n * @function toBoolean\n * @param {*} value The value to convert.\n * @param {boolean} [defaultValue=false] The default value.\n * @return {boolean} Returns the coercion to boolean.\n */\nexport default function coerceToBoolean(value, defaultValue = false) {\n if (isNil(value)) {\n return defaultValue;\n }\n return Boolean(value);\n}","/**\n * Checks whether `subject` is a string primitive type.\n *\n * @function isString\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} subject The value to verify.\n * @return {boolean} Returns `true` if `subject` is string primitive type or `false` otherwise.\n * @example\n * v.isString('vacation');\n * // => true\n *\n * v.isString(560);\n * // => false\n */\nexport default function isString(subject) {\n return typeof subject === 'string';\n}","import isNil from 'helper/object/is_nil';\nimport isString from 'query/is_string';\n\n/**\n * Get the string representation of the `value`.\n * Converts the `value` to string.\n * If `value` is `null` or `undefined`, return `defaultValue`.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @param {*} [defaultValue=''] The default value to return.\n * @return {string|null} Returns the string representation of `value`. Returns `defaultValue` if `value` is\n * `null` or `undefined`.\n */\nexport default function coerceToString(value, defaultValue = '') {\n if (isNil(value)) {\n return defaultValue;\n }\n if (isString(value)) {\n return value;\n }\n return String(value);\n}","import coerceToBoolean from 'helper/boolean/coerce_to_boolean';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the first character of `subject` to upper case. If `restToLower` is `true`, convert the rest of\n * `subject` to lower case.\n *\n * @function capitalize\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to capitalize.\n * @param {boolean} [restToLower=false] Convert the rest of `subject` to lower case.\n * @return {string} Returns the capitalized string.\n * @example\n * v.capitalize('apple');\n * // => 'Apple'\n *\n * v.capitalize('aPPle', true);\n * // => 'Apple'\n */\nexport default function capitalize(subject, restToLower) {\n let subjectString = coerceToString(subject);\n const restToLowerCaseBoolean = coerceToBoolean(restToLower);\n if (subjectString === '') {\n return '';\n }\n if (restToLowerCaseBoolean) {\n subjectString = subjectString.toLowerCase();\n }\n return subjectString.substr(0, 1).toUpperCase() + subjectString.substr(1);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the `subject` to lower case.\n *\n * @function lowerCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to lower case.\n * @return {string} Returns the lower case string.\n * @example\n * v.lowerCase('Green');\n * // => 'green'\n *\n * v.lowerCase('BLUE');\n * // => 'blue'\n */\nexport default function lowerCase(subject) {\n const subjectString = coerceToString(subject, '');\n return subjectString.toLowerCase();\n}\n","/**\n * Verifies if `value` is `undefined` or `null` and returns `defaultValue`. In other case returns `value`.\n *\n * @ignore\n * @function nilDefault\n * @param {*} value The value to verify.\n * @param {*} defaultValue The default value.\n * @return {*} Returns `defaultValue` if `value` is `undefined` or `null`, otherwise `defaultValue`.\n */\nexport default function nilDefault(value, defaultValue) {\n return value == null ? defaultValue : value;\n}","import isNil from 'helper/object/is_nil';\nimport isString from 'query/is_string';\n\n/**\n * Get the string representation of the `value`.\n * Converts the `value` to string.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @return {string|null} Returns the string representation of `value`.\n */\nexport default function toString(value) {\n if (isNil(value)) {\n return null;\n }\n if (isString(value)) {\n return value;\n }\n return String(value);\n}","import { REGEXP_EXTENDED_ASCII, REGEXP_LATIN_WORD, REGEXP_WORD } from 'helper/reg_exp/const_extended';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport nilDefault from 'helper/undefined/nil_default';\nimport toString from 'helper/string/to_string';\n\n/**\n * Splits `subject` into an array of words.\n *\n * @function words\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into words.\n * @param {string|RegExp} [pattern] The pattern to watch words. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {Array} Returns the array of words.\n * @example\n * v.words('gravity can cross dimensions');\n * // => ['gravity', 'can', 'cross', 'dimensions']\n *\n * v.words('GravityCanCrossDimensions');\n * // => ['Gravity', 'Can', 'Cross', 'Dimensions']\n *\n * v.words('Gravity - can cross dimensions!');\n * // => ['Gravity', 'can', 'cross', 'dimensions']\n *\n * v.words('Earth gravity', /[^\\s]+/g);\n * // => ['Earth', 'gravity']\n */\nexport default function words(subject, pattern, flags) {\n const subjectString = coerceToString(subject);\n let patternRegExp;\n if (isNil(pattern)) {\n patternRegExp = REGEXP_EXTENDED_ASCII.test(subjectString) ? REGEXP_LATIN_WORD : REGEXP_WORD;\n } else if (pattern instanceof RegExp) {\n patternRegExp = pattern;\n } else {\n const flagsString = toString(nilDefault(flags, ''));\n patternRegExp = new RegExp(toString(pattern), flagsString);\n }\n return nilDefault(subjectString.match(patternRegExp), []);\n}","import capitalize from 'case/capitalize';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Transforms the `word` into camel case chunk.\n *\n * @param {string} word The word string\n * @param {number} index The index of the word in phrase.\n * @return {string} The transformed word.\n * @ignore\n */\nfunction wordToCamel(word, index) {\n return index === 0 ? lowerCase(word) : capitalize(word, true);\n}\n\n/**\n * Converts the `subject` to camel case.\n *\n * @function camelCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to camel case.\n * @return {string} The camel case string.\n * @example\n * v.camelCase('bird flight');\n * // => 'birdFlight'\n *\n * v.camelCase('BirdFlight');\n * // => 'birdFlight'\n *\n * v.camelCase('-BIRD-FLIGHT-');\n * // => 'birdFlight'\n */\nexport default function camelCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(wordToCamel).join('');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the first character of `subject` to lower case.\n *\n * @function decapitalize\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to decapitalize.\n * @return {string} Returns the decapitalized string.\n * @example\n * v.decapitalize('Sun');\n * // => 'sun'\n *\n * v.decapitalize('moon');\n * // => 'moon'\n */\nexport default function decapitalize(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return subjectString;\n }\n return subjectString.substr(0, 1).toLowerCase() + subjectString.substr(1);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Converts the `subject` to kebab case,\n * also called spinal case or lisp case.\n *\n * @function kebabCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to kebab case.\n * @return {string} Returns the kebab case string.\n * @example\n * v.kebabCase('goodbye blue sky');\n * // => 'goodbye-blue-sky'\n *\n * v.kebabCase('GoodbyeBlueSky');\n * // => 'goodbye-blue-sky'\n *\n * v.kebabCase('-Goodbye-Blue-Sky-');\n * // => 'goodbye-blue-sky'\n */\nexport default function kebabCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(lowerCase).join('-');\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Converts the `subject` to snake case.\n *\n * @function snakeCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to snake case.\n * @return {string} Returns the snake case string.\n * @example\n * v.snakeCase('learning to fly');\n * // => 'learning_to_fly'\n *\n * v.snakeCase('LearningToFly');\n * // => 'learning_to_fly'\n *\n * v.snakeCase('-Learning-To-Fly-');\n * // => 'learning_to_fly'\n */\nexport default function snakeCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(lowerCase).join('_');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the `subject` to upper case.\n *\n * @function upperCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to upper case.\n * @return {string} Returns the upper case string.\n * @example\n * v.upperCase('school');\n * // => 'SCHOOL'\n */\nexport default function upperCase(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.toUpperCase();\n}","/**\n * Clip the number to interval `downLimit` to `upLimit`.\n *\n * @ignore\n * @function clipNumber\n * @param {number} value The number to clip\n * @param {number} downLimit The down limit\n * @param {number} upLimit The upper limit\n * @return {number} The clipped number\n */\nexport default function clipNumber(value, downLimit, upLimit) {\n if (value <= downLimit) {\n return downLimit;\n }\n if (value >= upLimit) {\n return upLimit;\n }\n return value;\n}","import { MAX_SAFE_INTEGER } from 'helper/number/const';\n\n/**\n * Transforms `value` to an integer.\n *\n * @ignore\n * @function toInteger\n * @param {number} value The number to transform.\n * @returns {number} Returns the transformed integer.\n */\nexport default function toInteger(value) {\n if (value === Infinity) {\n return MAX_SAFE_INTEGER;\n }\n if (value === -Infinity) {\n return - MAX_SAFE_INTEGER;\n }\n return ~~value;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Truncates `subject` to a new `length`.\n *\n * @function truncate\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to truncate.\n * @param {int} length The length to truncate the string.\n * @param {string} [end='...'] The string to be added at the end.\n * @return {string} Returns the truncated string.\n * @example\n * v.truncate('Once upon a time', 7);\n * // => 'Once...'\n *\n * v.truncate('Good day, Little Red Riding Hood', 14, ' (...)');\n * // => 'Good day (...)'\n *\n * v.truncate('Once upon', 10);\n * // => 'Once upon'\n */\nexport default function truncate(subject, length, end) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? subjectString.length : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const endString = coerceToString(end, '...');\n if (lengthInt >= subjectString.length) {\n return subjectString;\n }\n return subjectString.substr(0, length - endString.length) + endString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Access a character from `subject` at specified `position`.\n *\n * @function charAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {numbers} position The position to get the character.\n * @return {string} Returns the character at specified position.\n * @example\n * v.charAt('helicopter', 0);\n * // => 'h'\n *\n * v.charAt('helicopter', 1);\n * // => 'e'\n */\nexport default function charAt(subject, position) {\n const subjectString = coerceToString(subject);\n return subjectString.charAt(position);\n}","const HIGH_SURROGATE_START = 0xD800;\nconst HIGH_SURROGATE_END = 0xDBFF;\nconst LOW_SURROGATE_START = 0xDC00;\nconst LOW_SURROGATE_END = 0xDFFF;\n\n/**\n * Checks if `codePoint` is a high-surrogate number from range 0xD800 to 0xDBFF.\n *\n * @ignore\n * @param {number} codePoint The code point number to be verified\n * @return {boolean} Returns a boolean whether `codePoint` is a high-surrogate number.\n */\nexport function isHighSurrogate(codePoint) {\n return codePoint >= HIGH_SURROGATE_START && codePoint <= HIGH_SURROGATE_END;\n}\n\n/**\n * Checks if `codePoint` is a low-surrogate number from range 0xDC00 to 0xDFFF.\n *\n * @ignore\n * @param {number} codePoint The code point number to be verified\n * @return {boolean} Returns a boolean whether `codePoint` is a low-surrogate number.\n */\nexport function isLowSurrogate(codePoint) {\n return codePoint >= LOW_SURROGATE_START && codePoint <= LOW_SURROGATE_END;\n}\n\n/**\n * Get the astral code point number based on surrogate pair numbers.\n *\n * @ignore\n * @param {number} highSurrogate The high-surrogate code point number.\n * @param {number} lowSurrogate The low-surrogate code point number.\n * @return {number} Returns the astral symbol number.\n */\nexport function getAstralNumberFromSurrogatePair(highSurrogate, lowSurrogate) {\n return (highSurrogate - HIGH_SURROGATE_START) * 0x400 + lowSurrogate - LOW_SURROGATE_START + 0x10000;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Get the number representation of the `value`.\n * Converts the `value` to number.\n * If `value` is `null` or `undefined`, return `defaultValue`.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @param {*} [defaultValue=''] The default value to return.\n * @return {number|null} Returns the number representation of `value`. Returns `defaultValue` if `value` is\n * `null` or `undefined`.\n */\nexport default function coerceToNumber(value, defaultValue = 0) {\n if (isNil(value)) {\n return defaultValue;\n }\n if (typeof value === 'number') {\n return value;\n }\n return Number(value);\n}","/**\n * If `value` is `NaN`, return `defaultValue`. In other case returns `value`.\n *\n * @ignore\n * @function nanDefault\n * @param {*} value The value to verify.\n * @param {*} defaultValue The default value.\n * @return {*} Returns `defaultValue` if `value` is `NaN`, otherwise `defaultValue`.\n */\nexport default function nanDefault(value, defaultValue) {\n return value !== value ? defaultValue : value;\n}","import { getAstralNumberFromSurrogatePair, isHighSurrogate, isLowSurrogate } from 'helper/string/surrogate_pair';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nanDefault from 'helper/number/nan_default';\n\n/**\n * Get the Unicode code point value of the character at `position`.
\n * If a valid UTF-16 \n * surrogate pair starts at `position`, the\n * astral code point\n * value at `position` is returned.\n *\n * @function codePointAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} position The position to get the code point number.\n * @return {number} Returns a non-negative number less than or equal to `0x10FFFF`.\n * @example\n * v.codePointAt('rain', 1);\n * // => 97, or 0x0061\n *\n * v.codePointAt('\\uD83D\\uDE00 is smile', 0); // or '😀 is smile'\n * // => 128512, or 0x1F600\n */\nexport default function codePointAt(subject, position) {\n const subjectString = coerceToString(subject);\n const subjectStringLength = subjectString.length;\n let positionNumber = coerceToNumber(position);\n positionNumber = nanDefault(positionNumber, 0);\n if (positionNumber < 0 || positionNumber >= subjectStringLength) {\n return undefined;\n }\n const firstCodePoint = subjectString.charCodeAt(positionNumber);\n let secondCodePoint;\n if (isHighSurrogate(firstCodePoint) && subjectStringLength > positionNumber + 1) {\n secondCodePoint = subjectString.charCodeAt(positionNumber + 1);\n if (isLowSurrogate(secondCodePoint)) {\n return getAstralNumberFromSurrogatePair(firstCodePoint, secondCodePoint);\n }\n }\n return firstCodePoint;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Extracts the first `length` characters from `subject`.\n *\n * @function first\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {int} [length=1] The number of characters to extract.\n * @return {string} Returns the first characters string.\n * @example\n * v.first('helicopter');\n * // => 'h'\n *\n * v.first('vehicle', 2);\n * // => 've'\n *\n * v.first('car', 5);\n * // => 'car'\n */\nexport default function first(subject, length) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 1 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n if (subjectString.length <= lengthInt) {\n return subjectString;\n }\n return subjectString.substr(0, lengthInt);\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nanDefault from 'helper/number/nan_default';\nimport { REGEXP_UNICODE_CHARACTER } from 'helper/reg_exp/const';\n\n/**\n * Get a grapheme from `subject` at specified `position` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function graphemeAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} position The position to get the grapheme.\n * @return {string} Returns the grapheme at specified position.\n * @example\n * v.graphemeAt('\\uD835\\uDC00\\uD835\\uDC01', 0); // or '𝐀𝐁'\n * // => 'A'\n *\n * v.graphemeAt('cafe\\u0301', 3); // or 'café'\n * // => 'é'\n */\nexport default function graphemeAt(subject, position) {\n const subjectString = coerceToString(subject);\n let positionNumber = coerceToNumber(position);\n let graphemeMatch;\n let graphemeMatchIndex = 0;\n positionNumber = nanDefault(positionNumber, 0);\n while ((graphemeMatch = REGEXP_UNICODE_CHARACTER.exec(subjectString)) !== null) {\n if (graphemeMatchIndex === positionNumber) {\n REGEXP_UNICODE_CHARACTER.lastIndex = 0;\n return graphemeMatch[0];\n }\n graphemeMatchIndex++;\n }\n return '';\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Extracts the last `length` characters from `subject`.\n *\n * @function last\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {int} [length=1] The number of characters to extract.\n * @return {string} Returns the last characters string.\n * @example\n * v.last('helicopter');\n * // => 'r'\n *\n * v.last('vehicle', 2);\n * // => 'le'\n *\n * v.last('car', 5);\n * // => 'car'\n */\nexport default function last(subject, length) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 1 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n if (subjectString.length <= lengthInt) {\n return subjectString;\n }\n return subjectString.substr(subjectString.length - lengthInt, lengthInt);\n}","import { REGEXP_EXTENDED_ASCII, REGEXP_LATIN_WORD, REGEXP_WORD } from 'helper/reg_exp/const_extended';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Truncates `subject` to a new `length` and does not break the words. Guarantees that the truncated string is no longer\n * than `length`.\n *\n * @static\n * @function prune\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to prune.\n * @param {int} length The length to prune the string.\n * @param {string} [end='...'] The string to be added at the end.\n * @return {string} Returns the pruned string.\n * @example\n * v.prune('Once upon a time', 7);\n * // => 'Once...'\n *\n * v.prune('Good day, Little Red Riding Hood', 16, ' (more)');\n * // => 'Good day (more)'\n *\n * v.prune('Once upon', 10);\n * // => 'Once upon'\n */\nexport default function prune(subject, length, end) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? subjectString.length : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const endString = coerceToString(end, '...');\n if (lengthInt >= subjectString.length) {\n return subjectString;\n }\n const pattern = REGEXP_EXTENDED_ASCII.test(subjectString) ? REGEXP_LATIN_WORD : REGEXP_WORD;\n let truncatedLength = 0;\n subjectString.replace(pattern, function(word, offset) {\n const wordInsertLength = offset + word.length;\n if (wordInsertLength <= lengthInt - endString.length) {\n truncatedLength = wordInsertLength;\n }\n });\n return subjectString.substr(0, truncatedLength) + endString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position up to `end` position. The character at `end` position is not\n * included.\n *\n * @function slice\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction. If negative use `subject.length + start`.\n * @param {number} [end=subject.length] The position to end extraction. If negative use `subject.length + end`.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.slice()`\n * @example\n * v.slice('miami', 1);\n * // => 'iami'\n *\n * v.slice('florida', -4);\n * // => 'rida'\n *\n * v.slice('florida', 1, 4);\n * // => \"lor\"\n */\nexport default function slice(subject, start, end) {\n return coerceToString(subject).slice(start, end);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position a number of `length` characters.\n *\n * @function substr\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction.\n * @param {number} [length=subject.endOfString] The number of characters to extract. If omitted, extract to the end of `subject`.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.substr()`\n * @example\n * v.substr('infinite loop', 9);\n * // => 'loop'\n *\n * v.substr('dreams', 2, 2);\n * // => 'ea'\n */\nexport default function substr(subject, start, length) {\n return coerceToString(subject).substr(start, length);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position up to `end` position. The character at `end` position is not\n * included.\n *\n * @function substring\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction.\n * @param {number} [end=subject.length] The position to end extraction.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.substring()`\n * @example\n * v.substring('beach', 1);\n * // => 'each'\n *\n * v.substring('ocean', 1, 3);\n * // => 'ea'\n */\nexport default function substring(subject, start, end) {\n return coerceToString(subject).substring(start, end);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the characters in `subject`.
\n *\n * @function count\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count characters.\n * @return {number} Returns the number of characters in `subject`.\n * @example\n * v.count('rain');\n * // => 4\n */\nexport default function count(subject) {\n return coerceToString(subject).length;\n}","import { REGEXP_COMBINING_MARKS, REGEXP_SURROGATE_PAIRS } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the graphemes in `subject` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function countGraphemes\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count graphemes.\n * @return {number} Returns the number of graphemes in `subject`.\n * @example\n * v.countGraphemes('cafe\\u0301'); // or 'café'\n * // => 4\n *\n * v.countGraphemes('\\uD835\\uDC00\\uD835\\uDC01'); // or '𝐀𝐁'\n * // => 2\n *\n * v.countGraphemes('rain');\n * // => 4\n */\nexport default function countGrapheme(subject) {\n return coerceToString(subject)\n .replace(REGEXP_COMBINING_MARKS, '*')\n .replace(REGEXP_SURROGATE_PAIRS, '*')\n .length;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the number of `substring` appearances in `subject`.\n *\n * @function countSubstrings\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string where to count.\n * @param {string} substring The substring to be counted.\n * @return {number} Returns the number of `substring` appearances.\n * @example\n * v.countSubstrings('bad boys, bad boys whatcha gonna do?', 'boys');\n * // => 2\n *\n * v.countSubstrings('every dog has its day', 'cat');\n * // => 0\n */\nexport default function countSubstrings(subject, substring) {\n const subjectString = coerceToString(subject);\n const substringString = coerceToString(substring);\n const substringLength = substringString.length;\n let count = 0;\n let matchIndex = 0;\n if (subjectString === '' || substringString === '') {\n return count;\n }\n do {\n matchIndex = subjectString.indexOf(substringString, matchIndex);\n if (matchIndex !== -1) {\n count++;\n matchIndex += substringLength;\n }\n } while (matchIndex !== -1);\n return count;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\nconst reduce = Array.prototype.reduce;\n\n/**\n * Counts the characters in `subject` for which `predicate` returns truthy.\n *\n * @function countWhere\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count characters.\n * @param {Function} predicate The predicate function invoked on each character with parameters `(character, index, string)`.\n * @param {Object} [context] The context to invoke the `predicate`.\n * @return {number} Returns the number of characters for which `predicate` returns truthy.\n * @example\n * v.countWhere('hola!', v.isAlpha);\n * // => 4\n *\n * v.countWhere('2022', function(character, index, str) {\n * return character === '2';\n * });\n * // => 3\n */\nexport default function countWhere(subject, predicate, context) {\n const subjectString = coerceToString(subject);\n if (subjectString === '' || typeof predicate !== 'function') {\n return 0;\n }\n const predicateWithContext = predicate.bind(context);\n return reduce.call(subjectString, function(countTruthy, character, index) {\n return predicateWithContext(character, index, subjectString) ? countTruthy + 1 : countTruthy;\n }, 0);\n}","import words from 'split/words';\n\n/**\n * Counts the number of words in `subject`.\n *\n * @function countWords\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to split into words.\n * @param {string|RegExp} [pattern] The pattern to watch words. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {number} Returns the number of words.\n * @example\n * v.countWords('gravity can cross dimensions');\n * // => 4\n *\n * v.countWords('GravityCanCrossDimensions');\n * // => 4\n *\n * v.countWords('Gravity - can cross dimensions!');\n * // => 4\n *\n * v.words('Earth gravity', /[^\\s]+/g);\n * // => 2\n */\nexport default function countWords(subject, pattern, flags) {\n return words(subject, pattern, flags).length;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * The current index.\n *\n * @ignore\n * @name ReplacementIndex#index\n * @type {number}\n * @return {ReplacementIndex} ReplacementIndex instance.\n */\nfunction ReplacementIndex() {\n this.index = 0;\n}\n\n/**\n * Increment the current index.\n *\n * @ignore\n * @return {undefined}\n */\nReplacementIndex.prototype.increment = function() {\n this.index++;\n};\n\n/**\n * Increment the current index by position.\n *\n * @ignore\n * @param {number} [position] The replacement position.\n * @return {undefined}\n */\nReplacementIndex.prototype.incrementOnEmptyPosition = function(position) {\n if (isNil(position)) {\n this.increment();\n }\n};\n\n/**\n * Get the replacement index by position.\n *\n * @ignore\n * @param {number} [position] The replacement position.\n * @return {number} The replacement index.\n */\nReplacementIndex.prototype.getIndexByPosition = function(position) {\n return isNil(position) ? this.index : position - 1;\n};\n\nexport default ReplacementIndex;","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Repeats the `subject` number of `times`.\n *\n * @function repeat\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to repeat.\n * @param {number} [times=1] The number of times to repeat.\n * @return {string} Returns the repeated string.\n * @example\n * v.repeat('w', 3);\n * // => 'www'\n *\n * v.repeat('world', 0);\n * // => ''\n */\nexport default function repeat(subject, times) {\n let subjectString = coerceToString(subject);\n let timesInt = isNil(times) ? 1 : clipNumber(toInteger(times), 0, MAX_SAFE_INTEGER);\n let repeatString = '';\n while (timesInt) {\n if (timesInt & 1) {\n repeatString += subjectString;\n }\n if (timesInt > 1) {\n subjectString += subjectString;\n }\n timesInt >>= 1;\n }\n return repeatString;\n}","import repeat from 'manipulate/repeat';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Creates the padding string.\n *\n * @ignore\n * @param {string} padCharacters The characters to create padding string.\n * @param {number} length The padding string length.\n * @return {string} The padding string.\n */\nexport default function buildPadding(padCharacters, length) {\n const padStringRepeat = toInteger(length / padCharacters.length);\n const padStringRest = length % padCharacters.length;\n return repeat(padCharacters, padStringRepeat + padStringRest).substr(0, length);\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` from left to a new `length`.\n *\n * @function padLeft\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to left pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the left padded string.\n * @example\n * v.padLeft('dog', 5);\n * // => ' dog'\n *\n * v.padLeft('bird', 6, '-');\n * // => '--bird'\n *\n * v.padLeft('cat', 6, '-=');\n * // => '-=-cat'\n */\nexport default function padLeft(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n return buildPadding(padString, lengthInt - subjectString.length) + subjectString;\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` from right to a new `length`.\n *\n * @function padRight\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to right pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the right padded string.\n * @example\n * v.padRight('dog', 5);\n * // => 'dog '\n *\n * v.padRight('bird', 6, '-');\n * // => 'bird--'\n *\n * v.padRight('cat', 6, '-=');\n * // => 'cat-=-'\n */\nexport default function padRight(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n return subjectString + buildPadding(padString, lengthInt - subjectString.length);\n}","import Const from 'helper/format/const';\nimport isNil from 'helper/object/is_nil';\nimport padLeft from 'manipulate/pad_left';\nimport padRight from 'manipulate/pad_right';\n\n/**\n * Aligns and pads `subject` string.\n *\n * @ignore\n * @param {string} subject The subject string.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the aligned and padded string.\n */\nexport default function alignAndPad(subject, conversion) {\n const width = conversion.width;\n if (isNil(width) || subject.length >= width) {\n return subject;\n }\n const padType = conversion.alignmentSpecifier === Const.LITERAL_MINUS ? padRight : padLeft;\n return padType(subject, width, conversion.getPaddingCharacter());\n}","import Const from 'helper/format/const';\n\n/**\n * Add sign to the formatted number.\n *\n * @ignore\n * @name addSignToFormattedNumber\n * @param {number} replacementNumber The number to be replaced.\n * @param {string} formattedReplacement The formatted version of number.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted number string with a sign.\n */\nexport default function addSignToFormattedNumber(replacementNumber, formattedReplacement, conversion) {\n if (conversion.signSpecifier === Const.LITERAL_PLUS && replacementNumber >= 0) {\n formattedReplacement = Const.LITERAL_PLUS + formattedReplacement;\n }\n return formattedReplacement;\n}","import addSignToFormattedNumber from 'helper/format/type_format/add_sign_to_formatted_number';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport Const from 'helper/format/const';\nimport { REGEXP_TRAILING_ZEROS } from 'helper/reg_exp/const';\nimport toString from 'helper/string/coerce_to_string';\n\n/**\n * Formats a float type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function float(replacement, conversion) {\n let replacementNumber = parseFloat(replacement);\n let formattedReplacement;\n if (isNaN(replacementNumber)) {\n replacementNumber = 0;\n }\n const precision = coerceToNumber(conversion.precision, 6);\n switch (conversion.typeSpecifier) {\n case Const.TYPE_FLOAT:\n formattedReplacement = replacementNumber.toFixed(precision);\n break;\n case Const.TYPE_FLOAT_SCIENTIFIC:\n formattedReplacement = replacementNumber.toExponential(precision);\n break;\n case Const.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:\n formattedReplacement = replacementNumber.toExponential(precision).toUpperCase();\n break;\n case Const.TYPE_FLOAT_SHORT:\n case Const.TYPE_FLOAT_SHORT_UPPERCASE:\n formattedReplacement = formatFloatAsShort(replacementNumber, precision, conversion);\n break;\n }\n formattedReplacement = addSignToFormattedNumber(replacementNumber, formattedReplacement, conversion);\n return toString(formattedReplacement);\n}\n\n/**\n * Formats the short float.\n *\n * @ignore\n * @param {number} replacementNumber The number to format.\n * @param {number} precision The precision to format the float.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted short float.\n */\nfunction formatFloatAsShort(replacementNumber, precision, conversion) {\n if (replacementNumber === 0) {\n return '0';\n }\n const nonZeroPrecision = precision === 0 ? 1 : precision;\n let formattedReplacement = replacementNumber\n .toPrecision(nonZeroPrecision)\n .replace(REGEXP_TRAILING_ZEROS, '');\n if (conversion.typeSpecifier === Const.TYPE_FLOAT_SHORT_UPPERCASE) {\n formattedReplacement = formattedReplacement.toUpperCase();\n }\n return formattedReplacement;\n}","import Const from 'helper/format/const';\nimport toString from 'helper/string/coerce_to_string';\n\n/**\n * Formats an integer type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function integerBase(replacement, conversion) {\n let integer = parseInt(replacement);\n if (isNaN(integer)) {\n integer = 0;\n }\n integer = integer >>> 0;\n switch (conversion.typeSpecifier) {\n case Const.TYPE_INTEGER_ASCII_CHARACTER:\n integer = String.fromCharCode(integer);\n break;\n case Const.TYPE_INTEGER_BINARY:\n integer = integer.toString(Const.RADIX_BINARY);\n break;\n case Const.TYPE_INTEGER_OCTAL:\n integer = integer.toString(Const.RADIX_OCTAL);\n break;\n case Const.TYPE_INTEGER_HEXADECIMAL:\n integer = integer.toString(Const.RADIX_HEXADECIMAL);\n break;\n case Const.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:\n integer = integer.toString(Const.RADIX_HEXADECIMAL).toUpperCase();\n break;\n }\n return toString(integer);\n}","import addSignToFormattedNumber from 'helper/format/type_format/add_sign_to_formatted_number';\nimport toString from 'helper/string/to_string';\n\n/**\n * Formats a decimal integer type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function integerDecimal(replacement, conversion) {\n let integer = parseInt(replacement);\n if (isNaN(integer)) {\n integer = 0;\n }\n return addSignToFormattedNumber(integer, toString(integer), conversion);\n}","import isNil from 'helper/object/is_nil';\nimport truncate from 'chop/truncate';\n\n/**\n * Formats a string type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\nexport default function stringFormat(replacement, conversion) {\n let formattedReplacement = replacement;\n const precision = conversion.precision;\n if (!isNil(precision) && formattedReplacement.length > precision) {\n formattedReplacement = truncate(formattedReplacement, precision, '');\n }\n return formattedReplacement;\n}","import alignAndPad from 'helper/format/align_and_pad';\nimport Const from 'helper/format/const';\nimport formatFloat from 'helper/format/type_format/float';\nimport formatIntegerBase from 'helper/format/type_format/integer_base';\nimport formatIntegerDecimal from 'helper/format/type_format/integer_decimal';\nimport formatString from 'helper/format/type_format/string';\n\n/**\n * Returns the computed string based on format specifiers.\n *\n * @ignore\n * @name computeReplacement\n * @param {string} replacement The replacement value.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the computed string.\n */\nexport default function compute(replacement, conversion) {\n let formatFunction;\n switch (conversion.typeSpecifier) {\n case Const.TYPE_STRING:\n formatFunction = formatString;\n break;\n case Const.TYPE_INTEGER_DECIMAL:\n case Const.TYPE_INTEGER:\n formatFunction = formatIntegerDecimal;\n break;\n case Const.TYPE_INTEGER_ASCII_CHARACTER:\n case Const.TYPE_INTEGER_BINARY:\n case Const.TYPE_INTEGER_OCTAL:\n case Const.TYPE_INTEGER_HEXADECIMAL:\n case Const.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:\n case Const.TYPE_INTEGER_UNSIGNED_DECIMAL:\n formatFunction = formatIntegerBase;\n break;\n case Const.TYPE_FLOAT:\n case Const.TYPE_FLOAT_SCIENTIFIC:\n case Const.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:\n case Const.TYPE_FLOAT_SHORT:\n case Const.TYPE_FLOAT_SHORT_UPPERCASE:\n formatFunction = formatFloat;\n break;\n }\n const formattedString = formatFunction(replacement, conversion);\n return alignAndPad(formattedString, conversion);\n}","import Const from 'helper/format/const';\nimport nilDefault from 'helper/undefined/nil_default';\n\n/**\n * Construct the new conversion specification object.\n *\n * @ignore\n * @param {Object} properties An object with properties to initialize.\n * @return {ConversionSpecification} ConversionSpecification instance.\n */\nfunction ConversionSpecification(properties) {\n\n /**\n * The percent characters from conversion specification.\n *\n * @ignore\n * @name ConversionSpecification#percent\n * @type {string}\n */\n this.percent = properties.percent;\n\n /**\n * The sign specifier to force a sign to be used on a number.\n *\n * @ignore\n * @name ConversionSpecification#signSpecifier\n * @type {string}\n */\n this.signSpecifier = properties.signSpecifier;\n\n /**\n * The padding specifier that says what padding character will be used.\n *\n * @ignore\n * @name ConversionSpecification#paddingSpecifier\n * @type {string}\n */\n this.paddingSpecifier = properties.paddingSpecifier;\n\n /**\n * The alignment specifier that says if the result should be left-justified or right-justified.\n *\n * @ignore\n * @name ConversionSpecification#alignmentSpecifier\n * @type {string}\n */\n this.alignmentSpecifier = properties.alignmentSpecifier;\n\n /**\n * The width specifier how many characters this conversion should result in.\n *\n * @ignore\n * @name ConversionSpecification#width\n * @type {number}\n */\n this.width = properties.width;\n\n /**\n * The precision specifier says how many decimal digits should be displayed for floating-point numbers.\n *\n * @ignore\n * @name ConversionSpecification#precision\n * @type {number}\n */\n this.precision = properties.precision;\n\n /**\n * The type specifier says what type the argument data should be treated as.\n *\n * @ignore\n * @name ConversionSpecification#typeSpecifier\n * @type {string}\n */\n this.typeSpecifier = properties.typeSpecifier;\n}\n\n\n/**\n * Check if the conversion specification is a percent literal \"%%\".\n *\n * @ignore\n * @return {boolean} Returns true if the conversion is a percent literal, false otherwise.\n */\nConversionSpecification.prototype.isPercentLiteral = function() {\n return Const.LITERAL_PERCENT_SPECIFIER === this.percent;\n};\n\n/**\n * Get the padding character from padding specifier.\n *\n * @ignore\n * @returns {string} Returns the padding character.\n */\nConversionSpecification.prototype.getPaddingCharacter = function() {\n let paddingCharacter = nilDefault(this.paddingSpecifier, ' ');\n if (paddingCharacter.length === 2 && paddingCharacter[0] === Const.LITERAL_SINGLE_QUOTE) {\n paddingCharacter = paddingCharacter[1];\n }\n return paddingCharacter;\n};\n\nexport default ConversionSpecification;","import isNil from 'helper/object/is_nil';\n\n/**\n * Validates the specifier type and replacement position.\n *\n * @ignore\n * @throws {Error} Throws an exception on insufficient arguments or unknown specifier.\n * @param {number} index The index of the matched specifier.\n * @param {number} replacementsLength The number of replacements.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {undefined}\n */\nexport default function validate(index, replacementsLength, conversion) {\n if (isNil(conversion.typeSpecifier)) {\n throw new Error('sprintf(): Unknown type specifier');\n }\n if (index > replacementsLength - 1) {\n throw new Error('sprintf(): Too few arguments');\n }\n if (index < 0) {\n throw new Error('sprintf(): Argument number must be greater than zero');\n }\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport computeReplacement from 'helper/format/replacement/compute';\nimport ConversionSpecification from 'helper/format/conversion_specification';\nimport validateReplacement from 'helper/format/replacement/validate';\n\n/**\n * Return the replacement for regular expression match of the conversion specification.\n *\n * @ignore\n * @name matchReplacement\n * @param {ReplacementIndex} replacementIndex The replacement index object.\n * @param {string[]} replacements The array of replacements.\n * @param {string} conversionSpecification The conversion specification.\n * @param {string} percent The percent characters from conversion specification.\n * @param {string} position The position to insert the replacement.\n * @param {string} signSpecifier The sign specifier to force a sign to be used on a number.\n * @param {string} paddingSpecifier The padding specifier that says what padding character will be used.\n * @param {string} alignmentSpecifier The alignment specifier that says if the result should be left-justified or right-justified.\n * @param {string} widthSpecifier The width specifier how many characters this conversion should result in.\n * @param {string} precisionSpecifier The precision specifier says how many decimal digits should be displayed for floating-point numbers.\n * @param {string} typeSpecifier The type specifier says what type the argument data should be treated as.\n * @return {string} Returns the computed replacement.\n */\nexport default function match(replacementIndex, replacements, conversionSpecification, percent, position, signSpecifier,\n paddingSpecifier, alignmentSpecifier, widthSpecifier, precisionSpecifier, typeSpecifier) {\n const conversion = new ConversionSpecification({\n percent,\n signSpecifier,\n paddingSpecifier,\n alignmentSpecifier,\n width: coerceToNumber(widthSpecifier, null),\n precision: coerceToNumber(precisionSpecifier, null),\n typeSpecifier\n });\n if (conversion.isPercentLiteral()) {\n return conversionSpecification.slice(1);\n }\n const actualReplacementIndex = replacementIndex.getIndexByPosition(position);\n replacementIndex.incrementOnEmptyPosition(position);\n validateReplacement(actualReplacementIndex, replacements.length, conversion);\n return computeReplacement(replacements[actualReplacementIndex], conversion);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_CONVERSION_SPECIFICATION } from 'helper/reg_exp/const';\nimport ReplacementIndex from 'helper/format/replacement/index';\nimport replacementMatch from 'helper/format/replacement/match';\n\n/**\n * Produces a string according to `format`.\n *\n *
\n * `format` string is composed of zero or more directives: ordinary characters (not %), which are copied unchanged\n * to the output string and conversion specifications, each of which results in fetching zero or more subsequent\n * arguments.

\n *\n * Each conversion specification is introduced by the character %, and ends with a conversion\n * specifier. In between there may be (in this order) zero or more flags, an optional minimum field width\n * and an optional precision.
\n * The syntax is: ConversionSpecification = \"%\" { Flags }\n * [ MinimumFieldWidth ] [ Precision ] ConversionSpecifier, where curly braces { } denote repetition\n * and square brackets [ ] optionality.

\n *\n * By default, the arguments are used in the given order.
\n * For argument numbering and swapping, `%m$` (where `m` is a number indicating the argument order)\n * is used instead of `%` to specify explicitly which argument is taken. For instance `%1$s` fetches the 1st argument,\n * `%2$s` the 2nd and so on, no matter what position the conversion specification has in `format`.\n *

\n *\n * The flags
\n * The character % is followed by zero or more of the following flags:
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
+\n * A sign (+ or -) should always be placed before a number produced by a\n * signed conversion. By default a sign is used only for negative numbers.\n *
0The value should be zero padded.
(a space) The value should be space padded.
'Indicates alternate padding character, specified by prefixing it with a single quote '.
-The converted value is to be left adjusted on the field boundary (the default is right justification).
\n *\n * The minimum field width
\n * An optional decimal digit string (with nonzero first digit) specifying a minimum field width. If the converted\n * value has fewer characters than the field width, it will be padded with spaces on the left (or right, if the\n * left-adjustment flag has been given).

\n *\n * The precision
\n * An optional precision, in the form of a period `.` followed by an optional decimal digit string.
\n * This gives the number of digits to appear after the radix character for `e`, `E`, `f` and `F` conversions, the\n * maximum number of significant digits for `g` and `G` conversions or the maximum number of characters to be printed\n * from a string for `s` conversion.

\n *\n * The conversion specifier
\n * A specifier that mentions what type the argument should be treated as:\n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n *
`s`The string argument is treated as and presented as a string.
`d` `i`The integer argument is converted to signed decimal notation.
`b`The unsigned integer argument is converted to unsigned binary.
`c`The unsigned integer argument is converted to an ASCII character with that number.
`o`The unsigned integer argument is converted to unsigned octal.
`u`The unsigned integer argument is converted to unsigned decimal.
`x` `X`The unsigned integer argument is converted to unsigned hexadecimal. The letters `abcdef` are used for `x`\n * conversions; the letters `ABCDEF` are used for `X` conversions.
`f`\n * The float argument is rounded and converted to decimal notation in the style `[-]ddd.ddd`, where the number of\n * digits after the decimal-point character is equal to the precision specification. If the precision is missing,\n * it is taken as 6; if the precision is explicitly zero, no decimal-point character appears.\n * If a decimal point appears, at least one digit appears before it.\n *
`e` `E`\n * The float argument is rounded and converted in the style `[-]d.ddde±dd`, where there is one digit\n * before the decimal-point character and the number of digits after it is equal to the precision. If\n * the precision is missing, it is taken as `6`; if the precision is zero, no decimal-point character\n * appears. An `E` conversion uses the letter `E` (rather than `e`) to introduce the exponent.\n *
`g` `G`\n * The float argument is converted in style `f` or `e` (or `F` or `E` for `G` conversions). The precision specifies\n * the number of significant digits. If the precision is missing, `6` digits are given; if the\n * precision is zero, it is treated as `1`. Style `e` is used if the exponent from its conversion is less\n * than `-6` or greater than or equal to the precision. Trailing zeros are removed from the fractional\n * part of the result; a decimal point appears only if it is followed by at least one digit.\n *
`%`A literal `%` is written. No argument is converted. The complete conversion specification is `%%`.
\n *
\n *\n * @function sprintf\n * @static\n * @since 1.0.0\n * @memberOf Format\n * @param {string} [format=''] The format string.\n * @param {...*} replacements The replacements to produce the string.\n * @return {string} Returns the produced string.\n * @example\n * v.sprintf('%s, %s!', 'Hello', 'World');\n * // => 'Hello World!'\n *\n * v.sprintf('%s costs $%d', 'coffee', 2);\n * // => 'coffee costs $2'\n *\n * v.sprintf('%1$s %2$s %1$s %2$s, watcha gonna %3$s', 'bad', 'boys', 'do')\n * // => 'bad boys bad boys, watcha gonna do'\n *\n * v.sprintf('% 6s', 'bird');\n * // => ' bird'\n *\n * v.sprintf('% -6s', 'crab');\n * // => 'crab '\n *\n * v.sprintf(\"%'*5s\", 'cat');\n * // => '**cat'\n *\n * v.sprintf(\"%'*-6s\", 'duck');\n * // => 'duck**'\n *\n * v.sprintf('%d %i %+d', 15, -2, 25);\n * // => '15 -2 +25'\n *\n * v.sprintf(\"%06d\", 15);\n * // => '000015'\n *\n * v.sprintf('0b%b 0o%o 0x%X', 12, 9, 155);\n * // => '0b1100 0o11 0x9B'\n *\n * v.sprintf('%.2f', 10.469);\n * // => '10.47'\n *\n * v.sprintf('%.2e %g', 100.5, 0.455);\n * // => '1.01e+2 0.455'\n * \n */\nexport default function sprintf(format, ...replacements) {\n const formatString = coerceToString(format);\n if (formatString === '') {\n return formatString;\n }\n const boundReplacementMatch = replacementMatch.bind(undefined, new ReplacementIndex(), replacements);\n return formatString.replace(REGEXP_CONVERSION_SPECIFICATION, boundReplacementMatch);\n}","import nilDefault from 'helper/undefined/nil_default';\nimport sprintf from 'format/sprintf';\n\n/**\n * Produces a string according to `format`. Works exactly like sprintf(),\n * with the only difference that accepts the formatting arguments in an array `values`.
\n * See here `format` string specifications.\n *\n * @function vprintf\n * @static\n * @since 1.0.0\n * @memberOf Format\n * @param {string} format=''] The format string.\n * @param {Array} replacements The array of replacements to produce the string.\n * @return {string} Returns the produced string.\n * @example\n * v.vprintf('%s', ['Welcome'])\n * // => 'Welcome'\n *\n * v.vprintf('%s has %d apples', ['Alexandra', 3]);\n * // => 'Alexandra has 3 apples'\n */\nexport default function vprintf(format, replacements) {\n return sprintf(format, ...nilDefault(replacements, []));\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_HTML_SPECIAL_CHARACTERS } from 'helper/reg_exp/const';\n\nconst escapeCharactersMap = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n/**\n * Return the escaped version of `character`.\n *\n * @ignore\n * @param {string} character The character to be escape.\n * @return {string} The escaped version of character.\n */\nfunction replaceSpecialCharacter(character) {\n return escapeCharactersMap[character];\n}\n\n/**\n * Escapes HTML special characters < > & ' \" ` in subject.\n *\n * @function escapeHtml\n * @static\n * @since 1.0.0 \n * @memberOf Escape\n * @param {string} [subject=''] The string to escape.\n * @return {string} Returns the escaped string.\n * @example\n * v.escapeHtml('

wonderful world

');\n * // => '<p>wonderful world</p>'\n */\nexport default function escapeHtml(subject) {\n return coerceToString(subject).replace(REGEXP_HTML_SPECIAL_CHARACTERS, replaceSpecialCharacter);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_SPECIAL_CHARACTERS } from 'helper/reg_exp/const';\n\n/**\n * Escapes the regular expression special characters `- [ ] / { } ( ) * + ? . \\ ^ $ |` in `subject`.\n *\n * @function escapeRegExp\n * @static\n * @since 1.0.0\n * @memberOf Escape\n * @param {string} [subject=''] The string to escape.\n * @return {string} Returns the escaped string.\n * @example\n * v.escapeRegExp('(hours)[minutes]{seconds}');\n * // => '\\(hours\\)\\[minutes\\]\\{seconds\\}'\n */\nexport default function escapeRegExp(subject) {\n return coerceToString(subject).replace(REGEXP_SPECIAL_CHARACTERS, '\\\\$&');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\nconst unescapeCharactersMap = {\n '<': /(<)|(�*3c;)|(�*60;)/gi,\n '>': /(>)|(�*3e;)|(�*62;)/gi,\n '&': /(&)|(�*26;)|(�*38;)/gi,\n '\"': /(")|(�*22;)|(�*34;)/gi,\n \"'\": /(�*27;)|(�*39;)/gi,\n '`': /(�*60;)|(�*96;)/gi\n};\nconst characters = Object.keys(unescapeCharactersMap);\n\n/**\n * Replaces the HTML entities with corresponding characters.\n *\n * @ignore\n * @param {string} string The accumulator string.\n * @param {string} key The character.\n * @return {string} The string with replaced HTML entity\n */\nfunction reduceUnescapedString(string, key) {\n return string.replace(unescapeCharactersMap[key], key);\n}\n\n/**\n * Unescapes HTML special characters from &lt; &gt; &amp; &quot; &#x27; &#x60;\n * to corresponding < > & ' \" ` in subject.\n *\n * @function unescapeHtml\n * @static\n * @since 1.0.0\n * @memberOf Escape\n * @param {string} [subject=''] The string to unescape.\n * @return {string} Returns the unescaped string.\n * @example\n * v.unescapeHtml('<p>wonderful world</p>');\n * // => '

wonderful world

'\n */\nexport default function unescapeHtml(subject) {\n const subjectString = coerceToString(subject);\n return characters.reduce(reduceUnescapedString, subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns the first occurrence index of `search` in `subject`.\n *\n * @function indexOf\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [fromIndex=0] The index to start searching.\n * @return {number} Returns the first occurrence index or `-1` if not found.\n * @example\n * v.indexOf('morning', 'n');\n * // => 3\n *\n * v.indexOf('evening', 'o');\n * // => -1\n */\nexport default function indexOf(subject, search, fromIndex) {\n const subjectString = coerceToString(subject);\n return subjectString.indexOf(search, fromIndex);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns the last occurrence index of `search` in `subject`.\n *\n * @function lastIndexOf\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [fromIndex=subject.length - 1] The index to start searching backward in the string.\n * @return {number} Returns the last occurrence index or `-1` if not found.\n * @example\n * v.lastIndexOf('morning', 'n');\n * // => 5\n *\n * v.lastIndexOf('evening', 'o');\n * // => -1\n */\nexport default function lastIndexOf(subject, search, fromIndex) {\n const subjectString = coerceToString(subject);\n return subjectString.lastIndexOf(search, fromIndex);\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Returns the first index of a `pattern` match in `subject`.\n *\n * @function search\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string|RegExp} pattern The pattern to match. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern)`.\n * @param {number} [fromIndex=0] The index to start searching.\n * @return {number} Returns the first match index or `-1` if not found.\n * @example\n * v.search('morning', /rn/);\n * // => 2\n *\n * v.search('evening', '/\\d/');\n * // => -1\n */\nexport default function search(subject, pattern, fromIndex) {\n const subjectString = coerceToString(subject);\n const fromIndexNumber = isNil(fromIndex) ? 0 : clipNumber(toInteger(fromIndex), 0, subjectString.length);\n let matchIndex = subjectString.substr(fromIndexNumber).search(pattern);\n if (matchIndex !== -1 && !isNaN(fromIndexNumber)) {\n matchIndex += fromIndexNumber;\n }\n return matchIndex;\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Inserts into `subject` a string `toInsert` at specified `position`.\n *\n * @function insert\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string where to insert.\n * @param {string} [toInsert=''] The string to be inserted.\n * @param {number} [position=0] The position to insert.\n * @return {string} Returns the string after insertion.\n * @example\n * v.insert('ct', 'a', 1);\n * // => 'cat'\n *\n * v.insert('sunny', ' day', 5);\n * // => 'sunny day'\n */\nexport default function insert(subject, toInsert, position) {\n const subjectString = coerceToString(subject);\n const toInsertString = coerceToString(toInsert);\n const positionNumber = coerceToNumber(position);\n if (positionNumber < 0 || positionNumber > subjectString.length || toInsertString === '') {\n return subjectString;\n }\n return subjectString.slice(0, positionNumber) + toInsertString + subjectString.slice(positionNumber);\n}","/**\n * Generated diacritics map. See bellow the base code.\n * @ignore\n * @see http://stackoverflow.com/a/18391901/1894471\n * @type Object\n */\n\nconst diacritics = {\n \"3\": \"\\u039e\\u03be\",\n \"8\": \"\\u0398\\u03b8\",\n \"A\": \"\\x41\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\u0100\\u0102\\u0104\\u01cd\\u01de\\u01e0\\u01fa\\u0200\\u0202\\u0226\\u023a\\u1e00\\u1ea0\\u1ea2\\u1ea4\\u1ea6\\u1ea8\\u1eaa\\u1eac\\u1eae\\u1eb0\\u1eb2\\u1eb4\\u1eb6\\u24b6\\u2c6f\\uff21\\u0386\\u0391\\u0410\",\n \"B\": \"\\x42\\u0181\\u0182\\u0243\\u1e02\\u1e04\\u1e06\\u24b7\\uff22\\u0392\\u0411\",\n \"C\": \"\\x43\\xc7\\u0106\\u0108\\u010a\\u010c\\u0187\\u023b\\u1e08\\u24b8\\ua73e\\uff23\\u0426\",\n \"D\": \"\\x44\\u010e\\u0110\\u0189\\u018a\\u018b\\u1e0a\\u1e0c\\u1e0e\\u1e10\\u1e12\\u24b9\\ua779\\uff24\\xd0\\u0394\\u0414\",\n \"E\": \"\\x45\\xc8\\xc9\\xca\\xcb\\u0112\\u0114\\u0116\\u0118\\u011a\\u018e\\u0190\\u0204\\u0206\\u0228\\u1e14\\u1e16\\u1e18\\u1e1a\\u1e1c\\u1eb8\\u1eba\\u1ebc\\u1ebe\\u1ec0\\u1ec2\\u1ec4\\u1ec6\\u24ba\\uff25\\u0388\\u0395\\u0415\\u042d\",\n \"F\": \"\\x46\\u0191\\u1e1e\\u24bb\\ua77b\\uff26\\u03a6\\u0424\",\n \"G\": \"\\x47\\u011c\\u011e\\u0120\\u0122\\u0193\\u01e4\\u01e6\\u01f4\\u1e20\\u24bc\\ua77d\\ua77e\\ua7a0\\uff27\\u0393\\u0413\\u0490\",\n \"H\": \"\\x48\\u0124\\u0126\\u021e\\u1e22\\u1e24\\u1e26\\u1e28\\u1e2a\\u24bd\\u2c67\\u2c75\\ua78d\\uff28\\u0389\\u0397\\u0425\",\n \"I\": \"\\x49\\xcc\\xcd\\xce\\xcf\\u0128\\u012a\\u012c\\u012e\\u0130\\u0197\\u01cf\\u0208\\u020a\\u1e2c\\u1e2e\\u1ec8\\u1eca\\u24be\\uff29\\u038a\\u0399\\u03aa\\u0406\\u0418\",\n \"J\": \"\\x4a\\u0134\\u0248\\u24bf\\uff2a\\u0419\",\n \"K\": \"\\x4b\\u0136\\u0198\\u01e8\\u1e30\\u1e32\\u1e34\\u24c0\\u2c69\\ua740\\ua742\\ua744\\ua7a2\\uff2b\\u039a\\u041a\",\n \"L\": \"\\x4c\\u0139\\u013b\\u013d\\u013f\\u0141\\u023d\\u1e36\\u1e38\\u1e3a\\u1e3c\\u24c1\\u2c60\\u2c62\\ua746\\ua748\\ua780\\uff2c\\u039b\\u041b\",\n \"M\": \"\\x4d\\u019c\\u1e3e\\u1e40\\u1e42\\u24c2\\u2c6e\\uff2d\\u039c\\u041c\",\n \"N\": \"\\x4e\\xd1\\u0143\\u0145\\u0147\\u019d\\u01f8\\u0220\\u1e44\\u1e46\\u1e48\\u1e4a\\u24c3\\ua790\\ua7a4\\uff2e\\u039d\\u041d\",\n \"O\": \"\\x4f\\xd2\\xd3\\xd4\\xd5\\xd6\\xd8\\u014c\\u014e\\u0150\\u0186\\u019f\\u01a0\\u01d1\\u01ea\\u01ec\\u01fe\\u020c\\u020e\\u022a\\u022c\\u022e\\u0230\\u1e4c\\u1e4e\\u1e50\\u1e52\\u1ecc\\u1ece\\u1ed0\\u1ed2\\u1ed4\\u1ed6\\u1ed8\\u1eda\\u1edc\\u1ede\\u1ee0\\u1ee2\\u24c4\\ua74a\\ua74c\\uff2f\\u038c\\u039f\\u041e\",\n \"P\": \"\\x50\\u01a4\\u1e54\\u1e56\\u24c5\\u2c63\\ua750\\ua752\\ua754\\uff30\\u03a0\\u041f\",\n \"Q\": \"\\x51\\u024a\\u24c6\\ua756\\ua758\\uff31\",\n \"R\": \"\\x52\\u0154\\u0156\\u0158\\u0210\\u0212\\u024c\\u1e58\\u1e5a\\u1e5c\\u1e5e\\u24c7\\u2c64\\ua75a\\ua782\\ua7a6\\uff32\\u03a1\\u0420\",\n \"S\": \"\\x53\\u015a\\u015c\\u015e\\u0160\\u0218\\u1e60\\u1e62\\u1e64\\u1e66\\u1e68\\u1e9e\\u24c8\\u2c7e\\ua784\\ua7a8\\uff33\\u03a3\\u0421\",\n \"T\": \"\\x54\\u0162\\u0164\\u0166\\u01ac\\u01ae\\u021a\\u023e\\u1e6a\\u1e6c\\u1e6e\\u1e70\\u24c9\\ua786\\uff34\\u03a4\\u0422\",\n \"U\": \"\\x55\\xd9\\xda\\xdb\\xdc\\u0168\\u016a\\u016c\\u016e\\u0170\\u0172\\u01af\\u01d3\\u01d5\\u01d7\\u01d9\\u01db\\u0214\\u0216\\u0244\\u1e72\\u1e74\\u1e76\\u1e78\\u1e7a\\u1ee4\\u1ee6\\u1ee8\\u1eea\\u1eec\\u1eee\\u1ef0\\u24ca\\uff35\\u0423\\u042a\",\n \"V\": \"\\x56\\u01b2\\u0245\\u1e7c\\u1e7e\\u24cb\\ua75e\\uff36\\u0412\",\n \"W\": \"\\x57\\u0174\\u1e80\\u1e82\\u1e84\\u1e86\\u1e88\\u24cc\\u2c72\\uff37\\u038f\\u03a9\",\n \"X\": \"\\x58\\u1e8a\\u1e8c\\u24cd\\uff38\\u03a7\",\n \"Y\": \"\\x59\\xdd\\u0176\\u0178\\u01b3\\u0232\\u024e\\u1e8e\\u1ef2\\u1ef4\\u1ef6\\u1ef8\\u1efe\\u24ce\\uff39\\u038e\\u03a5\\u03ab\\u042b\",\n \"Z\": \"\\x5a\\u0179\\u017b\\u017d\\u01b5\\u0224\\u1e90\\u1e92\\u1e94\\u24cf\\u2c6b\\u2c7f\\ua762\\uff3a\\u0396\\u0417\",\n \"a\": \"\\x61\\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\u0101\\u0103\\u0105\\u01ce\\u01df\\u01e1\\u01fb\\u0201\\u0203\\u0227\\u0250\\u1e01\\u1e9a\\u1ea1\\u1ea3\\u1ea5\\u1ea7\\u1ea9\\u1eab\\u1ead\\u1eaf\\u1eb1\\u1eb3\\u1eb5\\u1eb7\\u24d0\\u2c65\\uff41\\u03ac\\u03b1\\u0430\",\n \"b\": \"\\x62\\u0180\\u0183\\u0253\\u1e03\\u1e05\\u1e07\\u24d1\\uff42\\u03b2\\u0431\",\n \"c\": \"\\x63\\xe7\\u0107\\u0109\\u010b\\u010d\\u0188\\u023c\\u1e09\\u2184\\u24d2\\ua73f\\uff43\\u0446\",\n \"d\": \"\\x64\\u010f\\u0111\\u018c\\u0256\\u0257\\u1e0b\\u1e0d\\u1e0f\\u1e11\\u1e13\\u24d3\\ua77a\\uff44\\xf0\\u03b4\\u0434\",\n \"e\": \"\\x65\\xe8\\xe9\\xea\\xeb\\u0113\\u0115\\u0117\\u0119\\u011b\\u01dd\\u0205\\u0207\\u0229\\u0247\\u025b\\u1e15\\u1e17\\u1e19\\u1e1b\\u1e1d\\u1eb9\\u1ebb\\u1ebd\\u1ebf\\u1ec1\\u1ec3\\u1ec5\\u1ec7\\u24d4\\uff45\\u03ad\\u03b5\\u0435\\u044d\",\n \"f\": \"\\x66\\u0192\\u1e1f\\u24d5\\ua77c\\uff46\\u03c6\\u0444\",\n \"g\": \"\\x67\\u011d\\u011f\\u0121\\u0123\\u01e5\\u01e7\\u01f5\\u0260\\u1d79\\u1e21\\u24d6\\ua77f\\ua7a1\\uff47\\u03b3\\u0433\\u0491\",\n \"h\": \"\\x68\\u0125\\u0127\\u021f\\u0265\\u1e23\\u1e25\\u1e27\\u1e29\\u1e2b\\u1e96\\u24d7\\u2c68\\u2c76\\uff48\\u03ae\\u03b7\\u0445\",\n \"i\": \"\\x69\\xec\\xed\\xee\\xef\\u0129\\u012b\\u012d\\u012f\\u0131\\u01d0\\u0209\\u020b\\u0268\\u1e2d\\u1e2f\\u1ec9\\u1ecb\\u24d8\\uff49\\u0390\\u03af\\u03b9\\u03ca\\u0438\\u0456\",\n \"j\": \"\\x6a\\u0135\\u01f0\\u0249\\u24d9\\uff4a\\u0439\",\n \"k\": \"\\x6b\\u0137\\u0199\\u01e9\\u1e31\\u1e33\\u1e35\\u24da\\u2c6a\\ua741\\ua743\\ua745\\ua7a3\\uff4b\\u03ba\\u043a\",\n \"l\": \"\\x6c\\u013a\\u013c\\u013e\\u0140\\u0142\\u017f\\u019a\\u026b\\u1e37\\u1e39\\u1e3b\\u1e3d\\u24db\\u2c61\\ua747\\ua749\\ua781\\uff4c\\u03bb\\u043b\",\n \"m\": \"\\x6d\\u026f\\u0271\\u1e3f\\u1e41\\u1e43\\u24dc\\uff4d\\u03bc\\u043c\",\n \"n\": \"\\x6e\\xf1\\u0144\\u0146\\u0148\\u0149\\u019e\\u01f9\\u0272\\u1e45\\u1e47\\u1e49\\u1e4b\\u24dd\\ua791\\ua7a5\\uff4e\\u03bd\\u043d\",\n \"o\": \"\\x6f\\xf2\\xf3\\xf4\\xf5\\xf6\\xf8\\u014d\\u014f\\u0151\\u01a1\\u01d2\\u01eb\\u01ed\\u01ff\\u020d\\u020f\\u022b\\u022d\\u022f\\u0231\\u0254\\u0275\\u1e4d\\u1e4f\\u1e51\\u1e53\\u1ecd\\u1ecf\\u1ed1\\u1ed3\\u1ed5\\u1ed7\\u1ed9\\u1edb\\u1edd\\u1edf\\u1ee1\\u1ee3\\u24de\\ua74b\\ua74d\\uff4f\\u03bf\\u03cc\\u043e\",\n \"p\": \"\\x70\\u01a5\\u1d7d\\u1e55\\u1e57\\u24df\\ua751\\ua753\\ua755\\uff50\\u03c0\\u043f\",\n \"q\": \"\\x71\\u024b\\u24e0\\ua757\\ua759\\uff51\",\n \"r\": \"\\x72\\u0155\\u0157\\u0159\\u0211\\u0213\\u024d\\u027d\\u1e59\\u1e5b\\u1e5d\\u1e5f\\u24e1\\ua75b\\ua783\\ua7a7\\uff52\\u03c1\\u0440\",\n \"s\": \"\\x73\\xdf\\u015b\\u015d\\u015f\\u0161\\u0219\\u023f\\u1e61\\u1e63\\u1e65\\u1e67\\u1e69\\u1e9b\\u24e2\\ua785\\ua7a9\\uff53\\u03c2\\u03c3\\u0441\",\n \"t\": \"\\x74\\u0163\\u0165\\u0167\\u01ad\\u021b\\u0288\\u1e6b\\u1e6d\\u1e6f\\u1e71\\u1e97\\u24e3\\u2c66\\ua787\\uff54\\u03c4\\u0442\",\n \"u\": \"\\x75\\xf9\\xfa\\xfb\\xfc\\u0169\\u016b\\u016d\\u016f\\u0171\\u0173\\u01b0\\u01d4\\u01d6\\u01d8\\u01da\\u01dc\\u0215\\u0217\\u0289\\u1e73\\u1e75\\u1e77\\u1e79\\u1e7b\\u1ee5\\u1ee7\\u1ee9\\u1eeb\\u1eed\\u1eef\\u1ef1\\u24e4\\uff55\\u0443\\u044a\",\n \"v\": \"\\x76\\u028b\\u028c\\u1e7d\\u1e7f\\u24e5\\ua75f\\uff56\\u0432\",\n \"w\": \"\\x77\\u0175\\u1e81\\u1e83\\u1e85\\u1e87\\u1e89\\u1e98\\u24e6\\u2c73\\uff57\\u03c9\\u03ce\",\n \"x\": \"\\x78\\u1e8b\\u1e8d\\u24e7\\uff58\\u03c7\",\n \"y\": \"\\x79\\xfd\\xff\\u0177\\u01b4\\u0233\\u024f\\u1e8f\\u1e99\\u1ef3\\u1ef5\\u1ef7\\u1ef9\\u1eff\\u24e8\\uff59\\u03b0\\u03c5\\u03cb\\u03cd\\u044b\",\n \"z\": \"\\x7a\\u017a\\u017c\\u017e\\u01b6\\u0225\\u0240\\u1e91\\u1e93\\u1e95\\u24e9\\u2c6c\\ua763\\uff5a\\u03b6\\u0437\",\n \"OE\": \"\\x8c\\u0152\",\n \"oe\": \"\\x9c\\u0153\",\n \"AE\": \"\\xc6\\u01e2\\u01fc\",\n \"ae\": \"\\xe6\\u01e3\\u01fd\",\n \"hv\": \"\\u0195\",\n \"OI\": \"\\u01a2\",\n \"oi\": \"\\u01a3\",\n \"DZ\": \"\\u01c4\\u01f1\",\n \"Dz\": \"\\u01c5\\u01f2\",\n \"dz\": \"\\u01c6\\u01f3\",\n \"LJ\": \"\\u01c7\",\n \"Lj\": \"\\u01c8\",\n \"lj\": \"\\u01c9\",\n \"NJ\": \"\\u01ca\",\n \"Nj\": \"\\u01cb\",\n \"nj\": \"\\u01cc\",\n \"OU\": \"\\u0222\",\n \"ou\": \"\\u0223\",\n \"TZ\": \"\\ua728\",\n \"tz\": \"\\ua729\",\n \"AA\": \"\\ua732\",\n \"aa\": \"\\ua733\",\n \"AO\": \"\\ua734\",\n \"ao\": \"\\ua735\",\n \"AU\": \"\\ua736\",\n \"au\": \"\\ua737\",\n \"AV\": \"\\ua738\\ua73a\",\n \"av\": \"\\ua739\\ua73b\",\n \"AY\": \"\\ua73c\",\n \"ay\": \"\\ua73d\",\n \"OO\": \"\\ua74e\",\n \"oo\": \"\\ua74f\",\n \"VY\": \"\\ua760\",\n \"vy\": \"\\ua761\",\n \"TH\": \"\\xde\",\n \"th\": \"\\xfe\",\n \"PS\": \"\\u03a8\",\n \"ps\": \"\\u03c8\",\n \"Yo\": \"\\u0401\",\n \"Ye\": \"\\u0404\",\n \"Yi\": \"\\u0407\",\n \"Zh\": \"\\u0416\",\n \"Ch\": \"\\u0427\",\n \"Sh\": \"\\u0428\\u0429\",\n \"\": \"\\u042c\\u044c\",\n \"Yu\": \"\\u042e\",\n \"Ya\": \"\\u042f\",\n \"zh\": \"\\u0436\",\n \"ch\": \"\\u0447\",\n \"sh\": \"\\u0448\\u0449\",\n \"yu\": \"\\u044e\",\n \"ya\": \"\\u044f\",\n \"yo\": \"\\u0451\",\n \"ye\": \"\\u0454\",\n \"yi\": \"\\u0457\"\n};\n\nlet diacriticsMap = null;\n\n/**\n * Creates a map of the diacritics.\n *\n * @ignore\n * @returns {Object} Returns the diacritics map.\n */\nfunction getDiacriticsMap() {\n if (diacriticsMap !== null) {\n return diacriticsMap;\n }\n diacriticsMap = {};\n Object.keys(diacritics).forEach(function(key) {\n const characters = diacritics[key];\n for (let index = 0; index < characters.length; index++) {\n const character = characters[index];\n diacriticsMap[character] = key;\n }\n });\n return diacriticsMap;\n}\n\n/**\n * Get the latin character from character with diacritics.\n *\n * @ignore\n * @param {string} character The character with diacritics.\n * @returns {string} Returns the character without diacritics.\n */\nexport function getLatinCharacter(character) {\n const characterWithoutDiacritic = getDiacriticsMap()[character];\n return characterWithoutDiacritic ? characterWithoutDiacritic : character;\n}","import { REGEXP_COMBINING_MARKS, REGEXP_NON_LATIN } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport { getLatinCharacter } from 'helper/string/diacritics_map';\n\n/**\n * Returns the `cleanCharacter` from combining marks regular expression match.\n *\n * @ignore\n * @param {string} character The character with combining marks\n * @param {string} cleanCharacter The character without combining marks.\n * @return {string} The character without combining marks.\n */\nfunction removeCombiningMarks(character, cleanCharacter) {\n return cleanCharacter;\n}\n\n/**\n * Latinises the `subject` by removing diacritic characters.\n *\n * @function latinise\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to latinise.\n * @return {string} Returns the latinised string.\n * @example\n * v.latinise('cafe\\u0301'); // or 'café'\n * // => 'cafe'\n *\n * v.latinise('août décembre');\n * // => 'aout decembre'\n *\n * v.latinise('как прекрасен этот мир');\n * // => 'kak prekrasen etot mir'\n */\nexport default function latinise(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return subjectString;\n }\n return subjectString\n .replace(REGEXP_NON_LATIN, getLatinCharacter)\n .replace(REGEXP_COMBINING_MARKS, removeCombiningMarks);\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` to a new `length`.\n *\n * @function pad\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the padded string.\n * @example\n * v.pad('dog', 5);\n * // => ' dog '\n *\n * v.pad('bird', 6, '-');\n * // => '-bird-'\n *\n * v.pad('cat', 6, '-=');\n * // => '-cat-='\n */\nexport default function pad(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n const paddingLength = lengthInt - subjectString.length;\n const paddingSideLength = toInteger(paddingLength / 2);\n const paddingSideRemainingLength = paddingLength % 2;\n return buildPadding(padString, paddingSideLength) + subjectString +\n buildPadding(padString, paddingSideLength + paddingSideRemainingLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns a new string where the matches of `pattern` are replaced with `replacement`.
\n *\n * @function replace\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to verify.\n * @param {string|RegExp} pattern The pattern which match is replaced. If `pattern` is a string,\n * a simple string match is evaluated and only the first occurrence replaced.\n * @param {string|Function} replacement The string or function which invocation result replaces `pattern` match.\n * @return {string} Returns the replacement result.\n * @example\n * v.replace('swan', 'wa', 'u');\n * // => 'sun'\n *\n * v.replace('domestic duck', /domestic\\s/, '');\n * // => 'duck'\n *\n * v.replace('nice duck', /(nice)(duck)/, function(match, nice, duck) {\n * return 'the ' + duck + ' is ' + nice;\n * });\n * // => 'the duck is nice'\n */\nexport default function replace(subject, pattern, replacement) {\n const subjectString = coerceToString(subject);\n return subjectString.replace(pattern, replacement);\n}","import { REGEXP_FLAGS } from 'helper/reg_exp/const';\n\n/**\n * Get the flags string from a regular expression object.\n *\n * @ignore\n * @param {RegExp} regExp The regular expression object.\n * @return {string} Returns the string with flags chars.\n */\nexport default function getRegExpFlags(regExp) {\n return regExp.toString().match(REGEXP_FLAGS)[0];\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` includes `search` starting from `position`.\n *\n * @function includes\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [position=0] The position to start searching.\n * @return {boolean} Returns `true` if `subject` includes `search` or `false` otherwise.\n * @example\n * v.includes('starship', 'star');\n * // => true\n *\n * v.includes('galaxy', 'g', 1);\n * // => false\n */\nexport default function includes(subject, search, position) {\n const subjectString = coerceToString(subject);\n const searchString = toString(search);\n if (searchString === null) {\n return false;\n }\n if (searchString === '') {\n return true;\n }\n position = isNil(position) ? 0 : clipNumber(toInteger(position), 0, subjectString.length);\n return subjectString.indexOf(searchString, position) !== -1;\n}","import getRegExpFlags from 'helper/reg_exp/get_reg_exp_flags';\nimport includes from 'query/includes';\n\n/**\n * Append flag to a regular expression.\n *\n * @ignore\n * @param {RegExp} pattern The pattern to coerce.\n * @param {string} appendFlag The flag to append to regular expression.\n * @return {RegExp} The regular expression with added flag.\n */\nexport default function appendFlagToRegExp(pattern, appendFlag) {\n const regularExpressionFlags = getRegExpFlags(pattern);\n if (!includes(regularExpressionFlags, appendFlag)) {\n return new RegExp(pattern.source, regularExpressionFlags + appendFlag);\n }\n return pattern;\n}","import appendFlagToRegularExpression from 'helper/reg_exp/append_flag_to_reg_exp';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport escapeRegExp from 'escape/escape_reg_exp';\n\n/**\n * Returns a new string where all matches of `pattern` are replaced with `replacement`.
\n *\n * @function replaceAll\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to verify.\n * @param {string|RegExp} pattern The pattern which match is replaced. If `pattern` is a string, a simple string match is evaluated.\n * All matches are replaced.\n * @param {string|Function} replacement The string or function which invocation result replaces `pattern` match.\n * @return {string} Returns the replacement result.\n * @example\n * v.replaceAll('good morning', 'o', '*');\n * // => 'g**d m*rning'\n * v.replaceAll('evening', /n/, 's');\n * // => 'evesisg'\n *\n */\nexport default function replaceAll(subject, pattern, replacement) {\n const subjectString = coerceToString(subject);\n let regExp = pattern;\n if (!(pattern instanceof RegExp)) {\n regExp = new RegExp(escapeRegExp(pattern), 'g');\n } else if (!pattern.global) {\n regExp = appendFlagToRegularExpression(pattern, 'g');\n }\n return subjectString.replace(regExp, replacement);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Reverses the `subject`.\n *\n * @function reverse\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to reverse.\n * @return {string} Returns the reversed string.\n * @example\n * v.reverse('winter');\n * // => 'retniw'\n */\nexport default function reverse(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.split('').reverse().join('');\n}","import { REGEXP_COMBINING_MARKS, REGEXP_SURROGATE_PAIRS } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Reverses the `subject` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function reverseGrapheme\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to reverse.\n * @return {string} Returns the reversed string.\n * @example\n * v.reverseGrapheme('summer');\n * // => 'remmus'\n *\n * v.reverseGrapheme('𝌆 bar mañana mañana');\n * // => 'anañam anañam rab 𝌆'\n */\nexport default function reverseGrapheme(subject) {\n let subjectString = coerceToString(subject);\n /**\n * @see https://github.com/mathiasbynens/esrever\n */\n subjectString = subjectString\n .replace(REGEXP_COMBINING_MARKS, function($0, $1, $2) {\n return reverseGrapheme($2) + $1;\n })\n .replace(REGEXP_SURROGATE_PAIRS, '$2$1');\n let reversedString = '';\n let index = subjectString.length;\n while (index--) {\n reversedString += subjectString.charAt(index);\n }\n return reversedString;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport kebabCase from 'case/kebab_case';\nimport latinise from 'manipulate/latinise';\nimport { REGEXP_NON_LATIN } from 'helper/reg_exp/const';\n\n/**\n * Slugifies the `subject`. Cleans the `subject` by replacing diacritics with corresponding latin characters.\n *\n * @function slugify\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to slugify.\n * @return {string} Returns the slugified string.\n * @example\n * v.slugify('Italian cappuccino drink');\n * // => 'italian-cappuccino-drink'\n *\n * v.slugify('caffé latté');\n * // => 'caffe-latte'\n *\n * v.slugify('хорошая погода');\n * // => 'horoshaya-pogoda'\n */\nexport default function slugify(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n const cleanSubjectString = latinise(subjectString).replace(REGEXP_NON_LATIN, '-');\n return kebabCase(cleanSubjectString);\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Changes `subject` by deleting `deleteCount` of characters starting at position `start`. Places a new string\n * `toAdd` instead of deleted characters.\n *\n * @function splice\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string where to insert.\n * @param {string} start The position to start changing the string. For a negative position will start from the end of\n * the string.\n * @param {number} [deleteCount=subject.length-start] The number of characters to delete from string.\n * @param {string} [toAdd=''] The string to be added instead of deleted characters.\n * @return {string} Returns the modified string.\n * @example\n * v.splice('new year', 0, 4);\n * // => 'year'\n *\n * v.splice('new year', 0, 3, 'happy');\n * // => 'happy year'\n *\n * v.splice('new year', -4, 4, 'day');\n * // => 'new day'\n */\nexport default function splice(subject, start, deleteCount, toAdd) {\n const subjectString = coerceToString(subject);\n const toAddString = coerceToString(toAdd);\n let startPosition = coerceToNumber(start);\n if (startPosition < 0) {\n startPosition = subjectString.length + startPosition;\n if (startPosition < 0) {\n startPosition = 0;\n }\n } else if (startPosition > subjectString.length) {\n startPosition = subjectString.length;\n }\n let deleteCountNumber = coerceToNumber(deleteCount, subjectString.length - startPosition);\n if (deleteCountNumber < 0) {\n deleteCountNumber = 0;\n }\n return subjectString.slice(0, startPosition) + toAddString + subjectString.slice(startPosition + deleteCountNumber);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { REGEXP_TRIM_LEFT } from 'helper/reg_exp/const';\nimport toString from 'helper/string/to_string';\n\n/**\n * Removes whitespaces from the left side of the `subject`.\n *\n * @function trimLeft\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trimLeft(' Starship Troopers');\n * // => 'Starship Troopers'\n *\n * v.trimLeft('***Mobile Infantry', '*');\n * // => 'Mobile Infantry'\n */\nexport default function trimLeft(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.replace(REGEXP_TRIM_LEFT, '');\n }\n const whitespaceLength = whitespaceString.length;\n let matchWhitespace = true;\n let totalWhitespaceLength = 0;\n while (matchWhitespace) {\n if (subjectString.indexOf(whitespaceString, totalWhitespaceLength) === totalWhitespaceLength) {\n totalWhitespaceLength += whitespaceLength;\n } else {\n matchWhitespace = false;\n }\n }\n return subjectString.substring(totalWhitespaceLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { REGEXP_TRIM_RIGHT } from 'helper/reg_exp/const';\nimport toString from 'helper/string/to_string';\n\n/**\n * Removes whitespaces from the right side of the `subject`.\n *\n * @function trimRight\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trimRight('the fire rises ');\n * // => 'the fire rises'\n *\n * v.trimRight('do you feel in charge?!!!', '!');\n * // => 'do you feel in charge?'\n */\nexport default function trimRight(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.replace(REGEXP_TRIM_RIGHT, '');\n }\n const whitespaceLength = whitespaceString.length;\n const subjectLength = subjectString.length;\n let matchWhitespace = true;\n let totalWhitespaceLength = 0;\n let position;\n while (matchWhitespace) {\n position = subjectLength - totalWhitespaceLength - whitespaceLength;\n if (subjectString.indexOf(whitespaceString, position) === position) {\n totalWhitespaceLength += whitespaceLength;\n } else {\n matchWhitespace = false;\n }\n }\n return subjectString.substring(0, subjectLength - totalWhitespaceLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toString from 'helper/string/to_string';\nimport trimLeft from 'manipulate/trim_left';\nimport trimRight from 'manipulate/trim_right';\n\n/**\n * Removes whitespaces from left and right sides of the `subject`.\n *\n * @function trim\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trim(' Mother nature ');\n * // => 'Mother nature'\n *\n * v.trim('--Earth--', '-');\n * // => 'Earth'\n */\nexport default function trim(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.trim();\n }\n return trimRight(trimLeft(subjectString, whitespaceString), whitespaceString);\n}","import coerceToBoolean from 'helper/boolean/coerce_to_boolean';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\n\nconst OPTION_WIDTH = 'width';\nconst OPTION_NEW_LINE = 'newLine';\nconst OPTION_INDENT = 'indent';\nconst OPTION_CUT = 'cut';\n\n/**\n * Determine the word wrap options. The missing values are filled with defaults.\n *\n * @param {Object} options The options object.\n * @return {Object} The word wrap options, with default settings if necessary.\n * @ignore\n */\nfunction determineOptions(options) {\n return {\n width: coerceToNumber(options[OPTION_WIDTH], 75),\n newLine: coerceToString(options[OPTION_NEW_LINE], '\\n'),\n indent: coerceToString(options[OPTION_INDENT], ''),\n cut: coerceToBoolean(options[OPTION_CUT], false)\n };\n}\n\n/**\n * Wraps `subject` to a given number of characters using a string break character.\n *\n * @function wordWrap\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to wrap.\n * @param {Object} [options={}] The wrap options.\n * @param {number} [options.width=75] The number of characters at which to wrap.\n * @param {string} [options.newLine='\\n'] The string to add at the end of line.\n * @param {string} [options.indent=''] The string to intend the line.\n * @param {boolean} [options.cut=false] When `false` (default) does not split the word even if word length is bigger than `width`.
\n * When `true` breaks the word that has length bigger than `width`.\n *\n * @return {string} Returns wrapped string.\n * @example\n * v.wordWrap('Hello world', {\n * width: 5\n * });\n * // => 'Hello\\nworld'\n *\n * v.wordWrap('Hello world', {\n * width: 5,\n * newLine: '
',\n * indent: '__'\n * });\n * // => '__Hello
__world'\n *\n * v.wordWrap('Wonderful world', {\n * width: 5,\n * cut: true\n * });\n * // => 'Wonde\\nrful\\nworld'\n *\n */\nexport default function wordWrap(subject, options = {}) {\n const subjectString = coerceToString(subject);\n const { width, newLine, indent, cut } = determineOptions(options);\n if (subjectString === '' || width <= 0) {\n return indent;\n }\n const subjectLength = subjectString.length;\n const substring = subjectString.substring.bind(subjectString);\n let offset = 0;\n let wrappedLine = '';\n while ((subjectLength - offset) > width) {\n if (subjectString[offset] === ' ') {\n offset++;\n continue;\n }\n let spaceToWrapAt = subjectString.lastIndexOf(' ', width + offset);\n if (spaceToWrapAt >= offset) {\n wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine;\n offset = spaceToWrapAt + 1;\n } else {\n if (cut) {\n wrappedLine += indent + substring(offset, width + offset) + newLine;\n offset += width;\n } else {\n spaceToWrapAt = subjectString.indexOf(' ', width + offset);\n if (spaceToWrapAt >= 0) {\n wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine;\n offset = spaceToWrapAt + 1;\n } else {\n wrappedLine += indent + substring(offset);\n offset = subjectLength;\n }\n }\n }\n }\n if (offset < subjectLength) {\n wrappedLine += indent + substring(offset);\n }\n return wrappedLine;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Checks whether `subject` ends with `end`.\n *\n * @function endsWith\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {string} end The ending string.\n * @param {number} [position=subject.length] Search within `subject` as if the string were only `position` long.\n * @return {boolean} Returns `true` if `subject` ends with `end` or `false` otherwise.\n * @example\n * v.endsWith('red alert', 'alert');\n * // => true\n *\n * v.endsWith('metro south', 'metro');\n * // => false\n *\n * v.endsWith('Murphy', 'ph', 5);\n * // => true\n */\nexport default function endsWith(subject, end, position) {\n if (isNil(end)) {\n return false;\n }\n const subjectString = coerceToString(subject);\n const endString = coerceToString(end);\n if (endString === '') {\n return true;\n }\n position = isNil(position) ? subjectString.length : clipNumber(toInteger(position), 0, subjectString.length);\n position -= endString.length;\n const lastIndex = subjectString.indexOf(endString, position);\n return lastIndex !== -1 && lastIndex === position;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_ALPHA } from 'helper/reg_exp/const_extended';\n\n/**\n * Checks whether `subject` contains only alpha characters.\n *\n * @function isAlpha\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only alpha characters or `false` otherwise.\n * @example\n * v.isAlpha('bart');\n * // => true\n *\n * v.isAlpha('lisa!');\n * // => false\n *\n * v.isAlpha('lisa and bart');\n * // => false\n */\nexport default function isAlpha(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_ALPHA.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_ALPHA_DIGIT } from 'helper/reg_exp/const_extended';\n\n/**\n * Checks whether `subject` contains only alpha and digit characters.\n *\n * @function isAlphaDigit\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only alpha and digit characters or `false` otherwise.\n * @example\n * v.isAlphaDigit('year2020');\n * // => true\n *\n * v.isAlphaDigit('1448');\n * // => true\n *\n * v.isAlphaDigit('40-20');\n * // => false\n */\nexport default function isAlphaDigit(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_ALPHA_DIGIT.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Checks whether `subject` is empty or contains only whitespaces.\n *\n * @function isBlank\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is empty or contains only whitespaces or `false` otherwise.\n * @example\n * v.isBlank('');\n * // => true\n *\n * v.isBlank(' ');\n * // => true\n *\n * v.isBlank('World');\n * // => false\n */\nexport default function isBlank(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.trim().length === 0;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_DIGIT } from 'helper/reg_exp/const';\n\n/**\n * Checks whether `subject` contains only digit characters.\n *\n * @function isDigit\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only digit characters or `false` otherwise.\n * @example\n * v.isDigit('35');\n * // => true\n *\n * v.isDigit('1.5');\n * // => false\n *\n * v.isDigit('ten');\n * // => false\n */\nexport default function isDigit(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_DIGIT.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Checks whether `subject` is empty.\n *\n * @function isEmpty\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is empty or `false` otherwise\n * @example\n * v.isEmpty('');\n * // => true\n *\n * v.isEmpty(' ');\n * // => false\n *\n * v.isEmpty('sun');\n * // => false\n */\nexport default function isEmpty(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.length === 0;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isAlpha from 'query/is_alpha';\n\n/**\n * Checks whether `subject` has only lower case characters.\n *\n * @function isLowerCase\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is lower case or `false` otherwise.\n * @example\n * v.isLowerCase('motorcycle');\n * // => true\n *\n * v.isLowerCase('John');\n * // => false\n *\n * v.isLowerCase('T1000');\n * // => false\n */\nexport default function isLowerCase(subject) {\n const valueString = coerceToString(subject);\n return isAlpha(valueString) && valueString.toLowerCase() === valueString;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Checks whether `subject` is numeric.\n *\n * @function isNumeric\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is numeric or `false` otherwise.\n * @example\n * v.isNumeric('350');\n * // => true\n *\n * v.isNumeric('-20.5');\n * // => true\n *\n * v.isNumeric('1.5E+2');\n * // => true\n *\n * v.isNumeric('five');\n * // => false\n */\nexport default function isNumeric(subject) {\n const valueNumeric = typeof subject === 'object' && !isNil(subject) ? Number(subject) : subject;\n return (typeof valueNumeric === 'number' || typeof valueNumeric === 'string')\n && !isNaN(valueNumeric - parseFloat(valueNumeric));\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isAlpha from 'query/is_alpha';\n\n/**\n * Checks whether `subject` contains only upper case characters.\n *\n * @function isUpperCase\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is upper case or `false` otherwise.\n * @example\n * v.isUpperCase('ACDC');\n * // => true\n *\n * v.isUpperCase('Morning');\n * // => false\n */\nexport default function isUpperCase(subject) {\n const subjectString = coerceToString(subject);\n return isAlpha(subjectString) && subjectString.toUpperCase() === subjectString;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` matches the regular expression `pattern`.\n *\n * @function matches\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {RegExp|string} pattern The pattern to match. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {boolean} Returns `true` if `subject` matches `pattern` or `false` otherwise.\n * @example\n * v.matches('pluto', /plu.{2}/);\n * // => true\n *\n * v.matches('sun', 'S', 'i');\n * // => true\n *\n * v.matches('apollo 11', '\\\\d{3}');\n * // => false\n */\nexport default function matches(subject, pattern, flags) {\n const subjectString = coerceToString(subject);\n const flagsString = coerceToString(flags);\n let patternString;\n if (!(pattern instanceof RegExp)) {\n patternString = toString(pattern);\n if (patternString === null) {\n return false;\n }\n pattern = new RegExp(patternString, flagsString);\n }\n return pattern.test(subjectString);\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` starts with `start`.\n *\n * @function startsWith\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {string} start The starting string.\n * @param {number} [position=0] The position to start searching.\n * @return {boolean} Returns `true` if `subject` starts with `start` or `false` otherwise.\n * @example\n * v.startsWith('say hello to my little friend', 'say hello');\n * // => true\n *\n * v.startsWith('tony', 'on', 1);\n * // => true\n *\n * v.startsWith('the world is yours', 'world');\n * // => false\n */\nexport default function startsWith(subject, start, position) {\n const subjectString = coerceToString(subject);\n const startString = toString(start);\n if (startString === null) {\n return false;\n }\n if (startString === '') {\n return true;\n }\n position = isNil(position) ? 0 : clipNumber(toInteger(position), 0, subjectString.length);\n return subjectString.substr(position, startString.length) === startString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Splits `subject` into an array of characters.\n *\n * @function chars\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @return {Array} Returns the array of characters.\n * @example\n * v.chars('cloud');\n * // => ['c', 'l', 'o', 'u', 'd']\n */\nexport default function chars(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.split('');\n}","import codePointAt from 'chop/code_point_at';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns an array of Unicode code point values from characters of `subject`.\n *\n * @function codePoints\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to extract from.\n * @return {Array} Returns an array of non-negative numbers less than or equal to `0x10FFFF`.\n * @example\n * v.codePoints('rain');\n * // => [114, 97, 105, 110], or\n * // [0x72, 0x61, 0x69, 0x6E]\n *\n * v.codePoints('\\uD83D\\uDE00 smile'); // or '😀 smile'\n * // => [128512, 32, 115, 109, 105, 108, 101], or\n * // [0x1F600, 0x20, 0x73, 0x6D, 0x69, 0x6C, 0x65]\n */\nexport default function codePoints(subject) {\n const subjectString = coerceToString(subject);\n const subjectStringLength = subjectString.length;\n const codePointArray = [];\n let index = 0;\n let codePointNumber;\n while (index < subjectStringLength) {\n codePointNumber = codePointAt(subjectString, index);\n codePointArray.push(codePointNumber);\n index += codePointNumber > 0xFFFF ? 2 : 1;\n }\n return codePointArray;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport nilDefault from 'helper/undefined/nil_default';\nimport { REGEXP_UNICODE_CHARACTER } from 'helper/reg_exp/const';\n\n/**\n * Splits `subject` into an array of graphemes taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function graphemes\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @return {Array} Returns the array of graphemes.\n * @example\n * v.graphemes('\\uD835\\uDC00\\uD835\\uDC01'); // or '𝐀𝐁'\n * // => ['\\uD835\\uDC00', '\\uD835\\uDC01'], or\n * // ['𝐀', '𝐁']\n *\n * v.graphemes('cafe\\u0301'); // or 'café'\n * // => ['c', 'a', 'f', 'e\\u0301'], or\n * // ['c', 'a', 'f', 'é']\n */\nexport default function graphemes(subject) {\n const subjectString = coerceToString(subject);\n return nilDefault(subjectString.match(REGEXP_UNICODE_CHARACTER), []);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Splits `subject` into an array of chunks by `separator`.\n *\n * @function split\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @param {string|RegExp} [separator] The pattern to match the separator.\n * @param {number} [limit] Limit the number of chunks to be found.\n * @return {Array} Returns the array of chunks.\n * @example\n * v.split('rage against the dying of the light', ' ');\n * // => ['rage', 'against', 'the', 'dying', 'of', 'the', 'light']\n *\n * v.split('the dying of the light', /\\s/, 3);\n * // => ['the', 'dying', 'of']\n */\nexport default function split(subject, separator, limit) {\n const subjectString = coerceToString(subject);\n return subjectString.split(separator, limit);\n}","/**\n * Checks whether `subject` contains substring at specific `index`.\n *\n * @ignore\n * @param {string} subject The subject to search in.\n * @param {string} substring The substring to search/\n * @param {number} index The index to search substring.\n * @param {boolean} lookBehind Whether to look behind (true) or ahead (false).\n * @return {boolean} Returns a boolean whether the substring exists.\n */\nexport default function hasSubstringAtIndex(subject, substring, index, lookBehind = true) {\n let indexOffset = 0;\n if (lookBehind) {\n indexOffset = - substring.length + 1;\n }\n const extractedSubstring = subject.substr(index + indexOffset, substring.length);\n return extractedSubstring.toLowerCase() === substring;\n}","import { REGEXP_TAG_LIST } from 'helper/reg_exp/const';\n\n/**\n * Parses the tags from the string '...'.\n *\n * @ignore\n * @param {string} tags The string that contains the tags.\n * @return {string[]} Returns the array of tag names.\n */\nexport default function parseTagList(tags) {\n const tagsList = [];\n let match;\n while ((match = REGEXP_TAG_LIST.exec(tags)) !== null) {\n tagsList.push(match[1]);\n }\n return tagsList;\n}","import { REGEXP_WHITESPACE } from 'helper/reg_exp/const';\n\nconst STATE_START_TAG = 0;\nconst STATE_NON_WHITESPACE = 1;\nconst STATE_DONE = 2;\n\n/**\n * Parses the tag name from html content\n *\n * @param {string} tagContent The tag content\n * @return {string} Returns the tag name\n */\nexport default function parseTagName(tagContent) {\n let state = STATE_START_TAG;\n let tagName = '';\n let index = 0;\n while (state !== STATE_DONE) {\n let char = tagContent[index++].toLowerCase();\n switch (char) {\n case '<':\n break;\n case '>':\n state = STATE_DONE;\n break;\n default:\n if (REGEXP_WHITESPACE.test(char)) {\n if (state === STATE_NON_WHITESPACE) {\n state = STATE_DONE;\n }\n } else {\n if (state === STATE_START_TAG) {\n state = STATE_NON_WHITESPACE;\n }\n if (char !== '/') {\n tagName += char;\n }\n }\n break;\n }\n }\n return tagName;\n}","/* eslint-disable */\nimport coerceToString from 'helper/string/coerce_to_string';\nimport hasSubstringAtIndex from 'helper/string/has_substring_at_index';\nimport parseTagList from 'helper/strip/parse_tag_list';\nimport parseTagName from 'helper/strip/parse_tag_name';\n\nconst STATE_OUTPUT = 0;\nconst STATE_HTML = 1;\nconst STATE_EXCLAMATION = 2;\nconst STATE_COMMENT = 3;\n\n/**\n * Strips subject tags from `subject`.\n *\n * @function stripTags\n * @static\n * @since 1.1.0\n * @memberOf Strip\n * @param {string} [subject=''] The string to strip.\n * @param {string|Array} [allowableTags] The string or array of tags that should not be stripped.\n * @param {string} [replacement=''] The string to replace the stripped tag.\n * @return {string} Returns the stripped string.\n * @example\n * v.trim(' Mother nature ');\n * // => 'Mother nature'\n *\n * v.trim('--Earth--', '-');\n * // => 'Earth'\n */\nexport default function trim(subject, allowableTags, replacement) {\n subject = coerceToString(subject);\n if (subject === '') {\n return '';\n }\n if (!Array.isArray(allowableTags)) {\n const allowableTagsString = coerceToString(allowableTags);\n allowableTags = allowableTagsString === '' ? [] : parseTagList(allowableTagsString);\n }\n const replacementString = coerceToString(replacement);\n const length = subject.length;\n const hasAllowableTags = allowableTags.length > 0;\n const hasSubstring = hasSubstringAtIndex.bind(null, subject);\n let state = STATE_OUTPUT;\n let depth = 0;\n let output = '';\n let tagContent = '';\n let quote = null;\n for (let index = 0; index < length; index++) {\n const char = subject[index];\n let advance = false;\n switch (char) {\n case '<':\n if (quote) {\n break;\n }\n if (hasSubstring('< ', index, false)) {\n advance = true;\n break;\n }\n if (state === STATE_OUTPUT) {\n advance = true;\n state = STATE_HTML;\n break;\n }\n if (state === STATE_HTML) {\n depth++;\n break;\n }\n advance = true;\n break;\n case '!':\n if (state === STATE_HTML && hasSubstring('':\n if (depth > 0) {\n depth--;\n break;\n }\n if (quote) {\n break;\n }\n if (state === STATE_HTML) {\n quote = null;\n state = STATE_OUTPUT;\n if (hasAllowableTags) {\n tagContent += '>';\n let tagName = parseTagName(tagContent);\n if (allowableTags.indexOf(tagName.toLowerCase()) !== -1) {\n output += tagContent;\n }\n tagContent = '';\n } else {\n tagContent += replacementString;\n }\n break;\n }\n if (state === STATE_EXCLAMATION || state === STATE_COMMENT && hasSubstring('-->', index)) {\n quote = null;\n state = STATE_OUTPUT;\n tagContent = '';\n break;\n }\n advance = true;\n break;\n default:\n advance = true;\n }\n if (advance) {\n switch (state) {\n case STATE_OUTPUT:\n output += char;\n break;\n case STATE_HTML:\n if (hasAllowableTags) {\n tagContent += char;\n }\n break;\n }\n }\n }\n\n return output;\n}","let globalObject = null;\n\nfunction getGlobalObject() {\n if (globalObject !== null) {\n return globalObject;\n }\n /* istanbul ignore next */\n // It's hard to mock the global variables. This code surely works fine. I hope :)\n if (typeof global === 'object' && global.Object === Object) {\n // NodeJS global object\n globalObject = global;\n } else if (typeof self === 'object' && self.Object === Object) {\n // self property from Window object\n globalObject = self;\n } else {\n // Other cases. Function constructor always has the context as global object\n globalObject = new Function('return this')();\n }\n return globalObject;\n}\n\nexport default getGlobalObject;","import getGlobalObject from 'helper/object/get_global';\n\nconst globalObject = getGlobalObject();\nconst previousV = globalObject.v;\n\n/**\n * Restores `v` variable to previous value and returns Voca library instance.\n *\n * @function noConflict\n * @static\n * @since 1.0.0\n * @memberOf Util\n * @return {Object} Returns Voca library instance.\n * @example\n * var voca = v.noConflict();\n * voca.isAlhpa('Hello');\n * // => true\n */\nexport default function noConflict() {\n if (this === globalObject.v) {\n globalObject.v = previousV;\n }\n return this;\n}","import functions from 'functions';\n\n\n/**\n * The chain wrapper constructor.\n *\n * @ignore\n * @param {string} subject The string to be wrapped.\n * @param {boolean} [explicitChain=false] A boolean that indicates if the chain sequence is explicit or implicit.\n * @return {ChainWrapper} Returns a new instance of `ChainWrapper`\n * @constructor\n */\nfunction ChainWrapper(subject, explicitChain) {\n this._wrappedValue = subject;\n this._explicitChain = explicitChain;\n}\n\n/**\n * Unwraps the chain sequence wrapped value.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__value\n * @return {*} Returns the unwrapped value.\n * @example\n * v\n * .chain('Hello world')\n * .replace('Hello', 'Hi')\n * .lowerCase()\n * .slugify()\n * .value()\n * // => 'hi-world'\n *\n * v(' Space travel ')\n * .trim()\n * .truncate(8)\n * .value()\n * // => 'Space...'\n */\nChainWrapper.prototype.value = function() {\n return this._wrappedValue;\n};\n\n/**\n * Override the default object valueOf().\n *\n * @ignore\n * @return {*} Returns the wrapped value.\n */\nChainWrapper.prototype.valueOf = function() {\n return this.value();\n};\n\n/**\n * Returns the wrapped value to be used in JSON.stringify().\n *\n * @ignore\n * @return {*} Returns the wrapped value.\n */\nChainWrapper.prototype.toJSON = function() {\n return this.value();\n};\n\n/**\n * Returns the string representation of the wrapped value.\n *\n * @ignore\n * @return {string} Returns the string representation.\n */\nChainWrapper.prototype.toString = function() {\n return String(this.value());\n};\n\n/**\n * Creates a new chain object that enables explicit chain sequences.\n * Use `v.prototype.value()` to unwrap the result.
\n * Does not modify the wrapped value.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__chain\n * @return {Object} Returns the wrapper in explicit mode.\n * @example\n * v('Back to School')\n * .chain()\n * .lowerCase()\n * .words()\n * .value()\n * // => ['back', 'to', 'school']\n *\n * v(\" Back to School \")\n * .chain()\n * .trim()\n * .truncate(7)\n * .value()\n * // => 'Back...'\n */\nChainWrapper.prototype.chain = function() {\n return new ChainWrapper(this._wrappedValue, true);\n};\n\n/**\n * Modifies the wrapped value with the invocation result of `changer` function. The current wrapped value is the\n * argument of `changer` invocation.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__thru\n * @param {Function} changer The function to invoke.\n * @return {Object} Returns the new wrapper that wraps the invocation result of `changer`.\n * @example\n * v\n * .chain('sun is shining')\n * .words()\n * .thru(function(words) {\n * return words[0];\n * })\n * .value()\n * // => 'sun'\n *\n */\nChainWrapper.prototype.thru = function(changer) {\n if (typeof changer === 'function') {\n return new ChainWrapper(changer(this._wrappedValue), this._explicitChain);\n }\n return this;\n};\n\n/**\n * A boolean that indicates if the chain sequence is explicit or implicit.\n * @ignore\n * @type {boolean}\n * @private\n */\nChainWrapper.prototype._explicitChain = true;\n\n/**\n * Make a voca function chainable.\n *\n * @ignore\n * @param {Function} functionInstance The function to make chainable\n * @return {Function} Returns the chainable function\n */\nfunction makeFunctionChainable(functionInstance) {\n return function(...args) {\n const result = functionInstance(this._wrappedValue, ...args);\n if (this._explicitChain || typeof result === 'string') {\n return new ChainWrapper(result, this._explicitChain);\n } else {\n return result;\n }\n };\n}\n\nObject.keys(functions).forEach(function(name) {\n ChainWrapper.prototype[name] = makeFunctionChainable(functions[name]);\n});\n\n\nexport default ChainWrapper;","import ChainWrapper from 'chain/wrapper';\n\n/**\n * Creates a chain object that wraps `subject`, enabling explicit chain sequences.
\n * Use `v.prototype.value()` to unwrap the result.\n *\n * @memberOf Chain\n * @since 1.0.0\n * @function chain\n * @param {string} subject The string to wrap.\n * @return {Object} Returns the new wrapper object.\n * @example\n * v\n * .chain('Back to School')\n * .lowerCase()\n * .words()\n * .value()\n * // => ['back', 'to', 'school']\n */\nexport default function chain(subject) {\n return new ChainWrapper(subject, true);\n}","import chain from './chain/chain'; // include chain here to resolve af circular reference\nimport ChainWrapper from './chain/wrapper';\nimport functions from './functions';\n\n/**\n * Creates a chain object that wraps `subject`, enabling implicit chain sequences.
\n * A function that returns `number`, `boolean` or `array` type terminates the chain sequence and returns the unwrapped value.\n * Otherwise use `v.prototype.value()` to unwrap the result.\n *\n * @memberOf Chain\n * @since 1.0.0\n * @function v\n * @param {string} subject The string to wrap.\n * @return {Object} Returns the new wrapper object.\n * @example\n * v('Back to School')\n * .lowerCase()\n * .words()\n * // => ['back', 'to', 'school']\n *\n * v(\" Back to School \")\n * .trim()\n * .truncate(7)\n * .value()\n * // => 'Back...'\n */\nfunction Voca(subject) {\n return new ChainWrapper(subject, false);\n}\n\nObject.assign(Voca, functions, {\n chain: chain\n});\n\nexport default Voca;","/**\n * A regular expression string matching digits\n *\n * @type {string}\n * @ignore\n */\nexport const digit = '\\\\d';\n\n/**\n * A regular expression string matching whitespace\n *\n * @type {string}\n * @ignore\n */\nexport const whitespace = '\\\\s\\\\uFEFF\\\\xA0';\n\n/**\n * A regular expression string matching high surrogate\n *\n * @type {string}\n * @ignore\n */\nexport const highSurrogate = '\\\\uD800-\\\\uDBFF';\n\n/**\n * A regular expression string matching low surrogate\n *\n * @type {string}\n * @ignore\n */\nexport const lowSurrogate = '\\\\uDC00-\\\\uDFFF';\n\n/**\n * A regular expression string matching diacritical mark\n *\n * @type {string}\n * @ignore\n */\nexport const diacriticalMark = '\\\\u0300-\\\\u036F\\\\u1AB0-\\\\u1AFF\\\\u1DC0-\\\\u1DFF\\\\u20D0-\\\\u20FF\\\\uFE20-\\\\uFE2F';\n\n/**\n * A regular expression to match the base character for a combining mark\n *\n * @type {string}\n * @ignore\n */\nexport const base = '\\\\0-\\\\u02FF\\\\u0370-\\\\u1AAF\\\\u1B00-\\\\u1DBF\\\\u1E00-\\\\u20CF\\\\u2100-\\\\uD7FF\\\\uE000-\\\\uFE1F\\\\uFE30-\\\\uFFFF';\n\n/**\n * Regular expression to match combining marks\n *\n * @see http://unicode.org/faq/char_combmark.html\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_COMBINING_MARKS = new RegExp('([' + base + ']|[' + highSurrogate + '][' + lowSurrogate + ']|[' + highSurrogate + '](?![' + lowSurrogate + '])|(?:[^' + highSurrogate + ']|^)[' + lowSurrogate + '])([' + diacriticalMark + ']+)', 'g');\n\n/**\n * Regular expression to match surrogate pairs\n *\n * @see http://www.unicode.org/faq/utf_bom.html#utf16-2\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_SURROGATE_PAIRS = new RegExp('([' + highSurrogate + '])([' + lowSurrogate + '])', 'g');\n\n/**\n * Regular expression to match an unicode character\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_UNICODE_CHARACTER = new RegExp(\n'((?:[' + base + ']|[' + highSurrogate + '][' + lowSurrogate + ']|[' + highSurrogate + '](?![' + lowSurrogate + '])|(?:[^' + highSurrogate + ']|^)[' + lowSurrogate + '])(?:[' + diacriticalMark + ']+))|\\\n([' + highSurrogate + '][' + lowSurrogate + '])|\\\n([\\\\n\\\\r\\\\u2028\\\\u2029])|\\\n(.)', 'g');\n\n/**\n * Regular expression to match whitespaces\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_WHITESPACE = new RegExp('[' + whitespace + ']');\n\n/**\n * Regular expression to match whitespaces from the left side\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRIM_LEFT = new RegExp('^[' + whitespace + ']+');\n\n/**\n * Regular expression to match whitespaces from the right side\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRIM_RIGHT = new RegExp('[' + whitespace + ']+$');\n\n/**\n * Regular expression to match digit characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_DIGIT = new RegExp('^' + digit + '+$');\n\n/**\n * Regular expression to match regular expression special characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_SPECIAL_CHARACTERS = /[-[\\]{}()*+!<=:?.\\/\\\\^$|#,]/g;\n\n/**\n * Regular expression to match not latin characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_NON_LATIN = /[^A-Za-z0-9]/g;\n\n/**\n * Regular expression to match HTML special characters.\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_HTML_SPECIAL_CHARACTERS = /[<>&\"'`]/g;\n\n/**\n * Regular expression to match sprintf format string\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_CONVERSION_SPECIFICATION = /(%{1,2})(?:(\\d+)\\$)?(\\+)?([ 0]|'.{1})?(-)?(\\d+)?(?:\\.(\\d+))?([bcdiouxXeEfgGs])?/g;\n\n/**\n * Regular expression to match trailing zeros in a number\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRAILING_ZEROS = /\\.?0+$/g;\n\n/**\n * Regular expression to match flags from a regular expression.\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_FLAGS = /[gimuy]*$/;\n\n/**\n * Regular expression to match a list of tags.\n *\n * @see https://html.spec.whatwg.org/multipage/syntax.html#syntax-tag-name\n * @type {RegExp}\n * @ignore\n */\n\nexport const REGEXP_TAG_LIST = /<([A-Za-z0-9]+)>/g;","import { diacriticalMark, digit, whitespace } from 'helper/reg_exp/const';\n\n/**\n * A regular expression to match the General Punctuation Unicode block\n *\n * @type {string}\n * @ignore\n */\nconst generalPunctuationBlock = '\\\\u2000-\\\\u206F';\n\n/**\n * A regular expression to match non characters from from Basic Latin and Latin-1 Supplement Unicode blocks\n *\n * @type {string}\n * @ignore\n */\nconst nonCharacter = '\\\\x00-\\\\x2F\\\\x3A-\\\\x40\\\\x5B-\\\\x60\\\\x7b-\\\\xBF\\\\xD7\\\\xF7';\n\n/**\n * A regular expression to match the dingbat Unicode block\n *\n * @type {string}\n * @ignore\n */\nconst dingbatBlock = '\\\\u2700-\\\\u27BF';\n\n/**\n * A regular expression string that matches lower case letters: LATIN\n *\n * @type {string}\n * @ignore\n */\nconst lowerCaseLetter = 'a-z\\\\xB5\\\\xDF-\\\\xF6\\\\xF8-\\\\xFF\\\\u0101\\\\u0103\\\\u0105\\\\u0107\\\\u0109\\\\u010B\\\\u010D\\\\u010F\\\\u0111\\\\u0113\\\\u0115\\\\u0117\\\\u0119\\\\u011B\\\\u011D\\\\u011F\\\\u0121\\\\u0123\\\\u0125\\\\u0127\\\\u0129\\\\u012B\\\\u012D\\\\u012F\\\\u0131\\\\u0133\\\\u0135\\\\u0137\\\\u0138\\\\u013A\\\\u013C\\\\u013E\\\\u0140\\\\u0142\\\\u0144\\\\u0146\\\\u0148\\\\u0149\\\\u014B\\\\u014D\\\\u014F\\\\u0151\\\\u0153\\\\u0155\\\\u0157\\\\u0159\\\\u015B\\\\u015D\\\\u015F\\\\u0161\\\\u0163\\\\u0165\\\\u0167\\\\u0169\\\\u016B\\\\u016D\\\\u016F\\\\u0171\\\\u0173\\\\u0175\\\\u0177\\\\u017A\\\\u017C\\\\u017E-\\\\u0180\\\\u0183\\\\u0185\\\\u0188\\\\u018C\\\\u018D\\\\u0192\\\\u0195\\\\u0199-\\\\u019B\\\\u019E\\\\u01A1\\\\u01A3\\\\u01A5\\\\u01A8\\\\u01AA\\\\u01AB\\\\u01AD\\\\u01B0\\\\u01B4\\\\u01B6\\\\u01B9\\\\u01BA\\\\u01BD-\\\\u01BF\\\\u01C6\\\\u01C9\\\\u01CC\\\\u01CE\\\\u01D0\\\\u01D2\\\\u01D4\\\\u01D6\\\\u01D8\\\\u01DA\\\\u01DC\\\\u01DD\\\\u01DF\\\\u01E1\\\\u01E3\\\\u01E5\\\\u01E7\\\\u01E9\\\\u01EB\\\\u01ED\\\\u01EF\\\\u01F0\\\\u01F3\\\\u01F5\\\\u01F9\\\\u01FB\\\\u01FD\\\\u01FF\\\\u0201\\\\u0203\\\\u0205\\\\u0207\\\\u0209\\\\u020B\\\\u020D\\\\u020F\\\\u0211\\\\u0213\\\\u0215\\\\u0217\\\\u0219\\\\u021B\\\\u021D\\\\u021F\\\\u0221\\\\u0223\\\\u0225\\\\u0227\\\\u0229\\\\u022B\\\\u022D\\\\u022F\\\\u0231\\\\u0233-\\\\u0239\\\\u023C\\\\u023F\\\\u0240\\\\u0242\\\\u0247\\\\u0249\\\\u024B\\\\u024D\\\\u024F';\n\n/**\n * A regular expression string that matches upper case letters: LATIN\n *\n * @type {string}\n * @ignore\n */\nconst upperCaseLetter = '\\\\x41-\\\\x5a\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\\\\u0100\\\\u0102\\\\u0104\\\\u0106\\\\u0108\\\\u010a\\\\u010c\\\\u010e\\\\u0110\\\\u0112\\\\u0114\\\\u0116\\\\u0118\\\\u011a\\\\u011c\\\\u011e\\\\u0120\\\\u0122\\\\u0124\\\\u0126\\\\u0128\\\\u012a\\\\u012c\\\\u012e\\\\u0130\\\\u0132\\\\u0134\\\\u0136\\\\u0139\\\\u013b\\\\u013d\\\\u013f\\\\u0141\\\\u0143\\\\u0145\\\\u0147\\\\u014a\\\\u014c\\\\u014e\\\\u0150\\\\u0152\\\\u0154\\\\u0156\\\\u0158\\\\u015a\\\\u015c\\\\u015e\\\\u0160\\\\u0162\\\\u0164\\\\u0166\\\\u0168\\\\u016a\\\\u016c\\\\u016e\\\\u0170\\\\u0172\\\\u0174\\\\u0176\\\\u0178\\\\u0179\\\\u017b\\\\u017d\\\\u0181\\\\u0182\\\\u0184\\\\u0186\\\\u0187\\\\u0189-\\\\u018b\\\\u018e-\\\\u0191\\\\u0193\\\\u0194\\\\u0196-\\\\u0198\\\\u019c\\\\u019d\\\\u019f\\\\u01a0\\\\u01a2\\\\u01a4\\\\u01a6\\\\u01a7\\\\u01a9\\\\u01ac\\\\u01ae\\\\u01af\\\\u01b1-\\\\u01b3\\\\u01b5\\\\u01b7\\\\u01b8\\\\u01bc\\\\u01c4\\\\u01c5\\\\u01c7\\\\u01c8\\\\u01ca\\\\u01cb\\\\u01cd\\\\u01cf\\\\u01d1\\\\u01d3\\\\u01d5\\\\u01d7\\\\u01d9\\\\u01db\\\\u01de\\\\u01e0\\\\u01e2\\\\u01e4\\\\u01e6\\\\u01e8\\\\u01ea\\\\u01ec\\\\u01ee\\\\u01f1\\\\u01f2\\\\u01f4\\\\u01f6-\\\\u01f8\\\\u01fa\\\\u01fc\\\\u01fe\\\\u0200\\\\u0202\\\\u0204\\\\u0206\\\\u0208\\\\u020a\\\\u020c\\\\u020e\\\\u0210\\\\u0212\\\\u0214\\\\u0216\\\\u0218\\\\u021a\\\\u021c\\\\u021e\\\\u0220\\\\u0222\\\\u0224\\\\u0226\\\\u0228\\\\u022a\\\\u022c\\\\u022e\\\\u0230\\\\u0232\\\\u023a\\\\u023b\\\\u023d\\\\u023e\\\\u0241\\\\u0243-\\\\u0246\\\\u0248\\\\u024a\\\\u024c\\\\u024e';\n\n\n/**\n * Regular expression to match Unicode words\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_WORD = new RegExp(\n '(?:[' + upperCaseLetter + '][' + diacriticalMark + ']*)?(?:[' + lowerCaseLetter + '][' + diacriticalMark + ']*)+|\\\n(?:[' + upperCaseLetter + '][' + diacriticalMark + ']*)+(?![' + lowerCaseLetter + '])|\\\n[' + digit + ']+|\\\n[' + dingbatBlock + ']|\\\n[^' + nonCharacter + generalPunctuationBlock + whitespace + ']+', 'g');\n\n/**\n * Regular expression to match words from Basic Latin and Latin-1 Supplement blocks\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_LATIN_WORD = /[A-Z\\xC0-\\xD6\\xD8-\\xDE]?[a-z\\xDF-\\xF6\\xF8-\\xFF]+|[A-Z\\xC0-\\xD6\\xD8-\\xDE]+(?![a-z\\xDF-\\xF6\\xF8-\\xFF])|\\d+/g;\n\n/**\n * Regular expression to match alpha characters\n *\n * @see http://stackoverflow.com/a/22075070/1894471\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_ALPHA = new RegExp('^(?:[' + lowerCaseLetter + upperCaseLetter + '][' + diacriticalMark + ']*)+$');\n\n/**\n * Regular expression to match alpha and digit characters\n *\n * @see http://stackoverflow.com/a/22075070/1894471\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_ALPHA_DIGIT = new RegExp('^((?:[' + lowerCaseLetter + upperCaseLetter + '][' + diacriticalMark + ']*)|[' + digit + '])+$');\n\n/**\n * Regular expression to match Extended ASCII characters, i.e. the first 255\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_EXTENDED_ASCII = /^[\\x00-\\xFF]*$/;","/**\n * Max save integer value\n *\n * @ignore\n * @type {number}\n */\nexport const MAX_SAFE_INTEGER = 0x1fffffffffffff;","export default Object.freeze({\n // Type specifiers\n TYPE_INTEGER : 'i',\n TYPE_INTEGER_BINARY : 'b',\n TYPE_INTEGER_ASCII_CHARACTER : 'c',\n TYPE_INTEGER_DECIMAL : 'd',\n TYPE_INTEGER_OCTAL : 'o',\n TYPE_INTEGER_UNSIGNED_DECIMAL : 'u',\n TYPE_INTEGER_HEXADECIMAL : 'x',\n TYPE_INTEGER_HEXADECIMAL_UPPERCASE : 'X',\n TYPE_FLOAT_SCIENTIFIC : 'e',\n TYPE_FLOAT_SCIENTIFIC_UPPERCASE : 'E',\n TYPE_FLOAT : 'f',\n TYPE_FLOAT_SHORT : 'g',\n TYPE_FLOAT_SHORT_UPPERCASE : 'G',\n TYPE_STRING : 's',\n\n // Simple literals\n LITERAL_PERCENT : '%',\n LITERAL_SINGLE_QUOTE : \"'\",\n LITERAL_PLUS : '+',\n LITERAL_MINUS : '-',\n LITERAL_PERCENT_SPECIFIER : '%%',\n\n // Radix constants to format numbers\n RADIX_BINARY : 2,\n RADIX_OCTAL : 8,\n RADIX_DECIMAL : 10,\n RADIX_HEXADECIMAL : 16\n});","/**\n * A property that contains the library semantic version number.\n * @name version\n * @static\n * @since 1.0.0\n * @memberOf Util\n * @type string\n * @example\n * v.version\n * // => '1.0.0'\n */\nconst version = '1.0.0';\n\nexport default version;"],"names":["isNil","value","undefined","coerceToBoolean","defaultValue","Boolean","isString","subject","coerceToString","String","capitalize","restToLower","subjectString","restToLowerCaseBoolean","toLowerCase","substr","toUpperCase","lowerCase","nilDefault","toString","words","pattern","flags","patternRegExp","REGEXP_EXTENDED_ASCII","test","REGEXP_LATIN_WORD","REGEXP_WORD","RegExp","flagsString","match","wordToCamel","word","index","camelCase","map","join","decapitalize","kebabCase","snakeCase","upperCase","clipNumber","downLimit","upLimit","toInteger","Infinity","MAX_SAFE_INTEGER","truncate","length","end","lengthInt","endString","charAt","position","isHighSurrogate","codePoint","HIGH_SURROGATE_START","HIGH_SURROGATE_END","isLowSurrogate","LOW_SURROGATE_START","LOW_SURROGATE_END","getAstralNumberFromSurrogatePair","highSurrogate","lowSurrogate","coerceToNumber","Number","nanDefault","codePointAt","subjectStringLength","positionNumber","firstCodePoint","charCodeAt","secondCodePoint","first","graphemeAt","graphemeMatch","graphemeMatchIndex","REGEXP_UNICODE_CHARACTER","exec","lastIndex","last","prune","truncatedLength","replace","offset","wordInsertLength","slice","start","substring","count","countGrapheme","REGEXP_COMBINING_MARKS","REGEXP_SURROGATE_PAIRS","countSubstrings","substringString","substringLength","matchIndex","indexOf","countWhere","predicate","context","predicateWithContext","bind","reduce","call","countTruthy","character","countWords","ReplacementIndex","repeat","times","timesInt","repeatString","buildPadding","padCharacters","padStringRepeat","padStringRest","padLeft","pad","padString","padRight","alignAndPad","conversion","width","padType","alignmentSpecifier","Const","LITERAL_MINUS","getPaddingCharacter","addSignToFormattedNumber","replacementNumber","formattedReplacement","signSpecifier","LITERAL_PLUS","float","replacement","parseFloat","isNaN","precision","typeSpecifier","TYPE_FLOAT","toFixed","TYPE_FLOAT_SCIENTIFIC","toExponential","TYPE_FLOAT_SCIENTIFIC_UPPERCASE","TYPE_FLOAT_SHORT","TYPE_FLOAT_SHORT_UPPERCASE","formatFloatAsShort","nonZeroPrecision","toPrecision","REGEXP_TRAILING_ZEROS","integerBase","integer","parseInt","TYPE_INTEGER_ASCII_CHARACTER","fromCharCode","TYPE_INTEGER_BINARY","RADIX_BINARY","TYPE_INTEGER_OCTAL","RADIX_OCTAL","TYPE_INTEGER_HEXADECIMAL","RADIX_HEXADECIMAL","TYPE_INTEGER_HEXADECIMAL_UPPERCASE","integerDecimal","stringFormat","compute","formatFunction","TYPE_STRING","formatString","TYPE_INTEGER_DECIMAL","TYPE_INTEGER","formatIntegerDecimal","TYPE_INTEGER_UNSIGNED_DECIMAL","formatIntegerBase","formatFloat","formattedString","ConversionSpecification","properties","percent","paddingSpecifier","validate","replacementsLength","Error","replacementIndex","replacements","conversionSpecification","widthSpecifier","precisionSpecifier","isPercentLiteral","actualReplacementIndex","getIndexByPosition","incrementOnEmptyPosition","computeReplacement","sprintf","format","boundReplacementMatch","replacementMatch","REGEXP_CONVERSION_SPECIFICATION","vprintf","replaceSpecialCharacter","escapeCharactersMap","escapeHtml","REGEXP_HTML_SPECIAL_CHARACTERS","escapeRegExp","REGEXP_SPECIAL_CHARACTERS","reduceUnescapedString","string","key","unescapeCharactersMap","unescapeHtml","characters","search","fromIndex","lastIndexOf","fromIndexNumber","insert","toInsert","toInsertString","getDiacriticsMap","diacriticsMap","keys","diacritics","forEach","getLatinCharacter","characterWithoutDiacritic","removeCombiningMarks","cleanCharacter","latinise","REGEXP_NON_LATIN","paddingLength","paddingSideLength","paddingSideRemainingLength","getRegExpFlags","regExp","REGEXP_FLAGS","includes","searchString","appendFlagToRegExp","appendFlag","regularExpressionFlags","source","replaceAll","global","appendFlagToRegularExpression","reverse","split","reverseGrapheme","$0","$1","$2","reversedString","slugify","cleanSubjectString","splice","deleteCount","toAdd","toAddString","startPosition","deleteCountNumber","trimLeft","whitespace","whitespaceString","REGEXP_TRIM_LEFT","whitespaceLength","matchWhitespace","totalWhitespaceLength","trimRight","REGEXP_TRIM_RIGHT","subjectLength","trim","determineOptions","options","OPTION_WIDTH","OPTION_NEW_LINE","OPTION_INDENT","OPTION_CUT","wordWrap","newLine","indent","cut","wrappedLine","spaceToWrapAt","endsWith","isAlpha","REGEXP_ALPHA","isAlphaDigit","REGEXP_ALPHA_DIGIT","isBlank","isDigit","REGEXP_DIGIT","isEmpty","isLowerCase","valueString","isNumeric","valueNumeric","isUpperCase","matches","patternString","startsWith","startString","chars","codePoints","codePointArray","codePointNumber","push","graphemes","separator","limit","hasSubstringAtIndex","lookBehind","indexOffset","extractedSubstring","parseTagList","tags","tagsList","REGEXP_TAG_LIST","parseTagName","tagContent","state","STATE_START_TAG","tagName","STATE_DONE","char","REGEXP_WHITESPACE","STATE_NON_WHITESPACE","allowableTags","Array","isArray","allowableTagsString","replacementString","hasAllowableTags","hasSubstring","STATE_OUTPUT","depth","output","quote","advance","STATE_HTML","STATE_EXCLAMATION","STATE_COMMENT","getGlobalObject","globalObject","Object","self","Function","noConflict","this","v","previousV","ChainWrapper","explicitChain","_wrappedValue","_explicitChain","makeFunctionChainable","functionInstance","args","result","chain","Voca","digit","diacriticalMark","base","generalPunctuationBlock","nonCharacter","dingbatBlock","lowerCaseLetter","upperCaseLetter","prototype","increment","freeze","LITERAL_PERCENT_SPECIFIER","paddingCharacter","LITERAL_SINGLE_QUOTE","version","valueOf","toJSON","thru","changer","functions","name","_extends"],"mappings":"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ACC,WACA,WACA,YACA,aACA,aACA,UEPDQ,QACC,oCACA,oCACA,qCACA,sCACA,6BACA,0BAEDE,GAAaoI,OAAO1H,KAAKZ,IKHzBa,MACC,OACA,OACA,0CACA,gBACA,kBACA,sBACA,uCACA,aACA,uBACA,sBACA,8BACA,WACA,qBACA,yBACA,eACA,uBACA,mDACA,iBACA,WACA,wBACA,wBACA,sBACA,yCACA,cACA,iBACA,WACA,wBACA,qBACA,2CACA,gBACA,mBACA,sBACA,wCACA,aACA,uBACA,uBACA,+BACA,YACA,qBACA,0BACA,eACA,wBACA,mDACA,iBACA,WACA,wBACA,0BACA,uBACA,yCACA,cACA,kBACA,WACA,0BACA,sBACC,QACA,QACA,SACA,SACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACF,QACE,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,KAGJF,GAAgB,KenHdqD,GAAe,QACfC,GAAkB,UAClBC,GAAgB,SAChBC,GAAa,MkBLb4C,GAAkB,EAClBK,GAAuB,EACvBH,GAAa,ECEbW,GAAe,EACfK,GAAa,EACbC,GAAoB,EACpBC,GAAgB,ECTlBE,GAAe,KCEbA,GAAeD,KACfQ,GAAYP,GAAaM,EQQzB0B,GAAU,qyBP4BhBxB,IAAakB,UAAU9W,MAAQ,iBACtByV,MAAKK,eASdF,GAAakB,UAAUO,QAAU,iBACxB5B,MAAKzV,SASd4V,GAAakB,UAAUQ,OAAS,iBACvB7B,MAAKzV,SASd4V,GAAakB,UAAU5V,SAAW,iBACzBV,QAAOiV,KAAKzV,UA2BrB4V,GAAakB,UAAUV,MAAQ,iBACtB,IAAIR,IAAaH,KAAKK,eAAe,IAuB9CF,GAAakB,UAAUS,KAAO,SAASC,SACd,kBAAZA,GACF,GAAI5B,IAAa4B,EAAQ/B,KAAKK,eAAgBL,KAAKM,gBAErDN,MASTG,GAAakB,UAAUf,gBAAiB,EAoBxCV,OAAO1H,KAAK8J,IAAW5J,QAAQ,SAAS6J,MACzBZ,UAAUY,GAAQ1B,GAAsByB,GAAUC,qLE7HjEC,IAActB,GAAMoB,UACXrB"} \ No newline at end of file diff --git a/package.json b/package.json index 1f97798..37298c9 100644 --- a/package.json +++ b/package.json @@ -49,14 +49,14 @@ }, "devDependencies": { "babel-cli": "6.18.0", - "babel-core": "6.20.0", + "babel-core": "6.21.0", "babel-eslint": "7.1.1", "babel-plugin-add-module-exports": "0.2.1", "babel-plugin-module-resolver": "2.4.0", - "babel-plugin-transform-es2015-block-scoping": "6.20.0", + "babel-plugin-transform-es2015-block-scoping": "6.21.0", "babel-plugin-transform-es2015-destructuring": "6.19.0", "babel-plugin-transform-es2015-modules-commonjs": "6.18.0", - "babel-plugin-transform-es2015-parameters": "6.18.0", + "babel-plugin-transform-es2015-parameters": "6.21.0", "babel-plugin-transform-es2015-shorthand-properties": "6.18.0", "babel-plugin-transform-es2015-spread": "6.8.0", "babel-plugin-transform-object-assign": "6.8.0", @@ -65,7 +65,7 @@ "chai": "3.5.0", "codecov.io": "0.1.6", "eslint": "3.12.2", - "ghooks": "1.3.2", + "ghooks": "2.0.0", "glob": "7.1.1", "grunt": "1.0.1", "grunt-contrib-connect": "1.0.2", @@ -74,10 +74,10 @@ "jsdoc": "3.4.3", "mkdirp": "0.5.1", "mocha": "3.2.0", - "rollup": "0.37.0", + "rollup": "0.38.0", "rollup-plugin-babel": "2.7.1", "rollup-plugin-uglify": "1.0.1", - "source-map-support": "0.4.6" + "source-map-support": "0.4.8" }, "dependencies": {}, "config": { diff --git a/src/helper/reg_exp/const.js b/src/helper/reg_exp/const.js index 922019a..c075e3e 100644 --- a/src/helper/reg_exp/const.js +++ b/src/helper/reg_exp/const.js @@ -76,6 +76,14 @@ export const REGEXP_UNICODE_CHARACTER = new RegExp( ([\\n\\r\\u2028\\u2029])|\ (.)', 'g'); +/** + * Regular expression to match whitespaces + * + * @type {RegExp} + * @ignore + */ +export const REGEXP_WHITESPACE = new RegExp('[' + whitespace + ']'); + /** * Regular expression to match whitespaces from the left side * diff --git a/src/helper/string/has_substring_at_index.js b/src/helper/string/has_substring_at_index.js new file mode 100644 index 0000000..4a2ff03 --- /dev/null +++ b/src/helper/string/has_substring_at_index.js @@ -0,0 +1,18 @@ +/** + * Checks whether `subject` contains substring at specific `index`. + * + * @ignore + * @param {string} subject The subject to search in. + * @param {string} substring The substring to search/ + * @param {number} index The index to search substring. + * @param {boolean} lookBehind Whether to look behind (true) or ahead (false). + * @return {boolean} Returns a boolean whether the substring exists. + */ +export default function hasSubstringAtIndex(subject, substring, index, lookBehind = true) { + let indexOffset = 0; + if (lookBehind) { + indexOffset = - substring.length + 1; + } + const extractedSubstring = subject.substr(index + indexOffset, substring.length); + return extractedSubstring.toLowerCase() === substring; +} \ No newline at end of file diff --git a/src/helper/strip/tag/parse_tag_list.js b/src/helper/strip/parse_tag_list.js similarity index 93% rename from src/helper/strip/tag/parse_tag_list.js rename to src/helper/strip/parse_tag_list.js index 0dfa1f6..b253890 100644 --- a/src/helper/strip/tag/parse_tag_list.js +++ b/src/helper/strip/parse_tag_list.js @@ -11,7 +11,7 @@ export default function parseTagList(tags) { const tagsList = []; let match; while ((match = REGEXP_TAG_LIST.exec(tags)) !== null) { - tagsList.push(match[0]); + tagsList.push(match[1]); } return tagsList; } \ No newline at end of file diff --git a/src/helper/strip/parse_tag_name.js b/src/helper/strip/parse_tag_name.js new file mode 100644 index 0000000..45d16c6 --- /dev/null +++ b/src/helper/strip/parse_tag_name.js @@ -0,0 +1,42 @@ +import { REGEXP_WHITESPACE } from 'helper/reg_exp/const'; + +const STATE_START_TAG = 0; +const STATE_NON_WHITESPACE = 1; +const STATE_DONE = 2; + +/** + * Parses the tag name from html content + * + * @param {string} tagContent The tag content + * @return {string} Returns the tag name + */ +export default function parseTagName(tagContent) { + let state = STATE_START_TAG; + let tagName = ''; + let index = 0; + while (state !== STATE_DONE) { + const char = tagContent[index++].toLowerCase(); + switch (char) { + case '<': + break; + case '>': + state = STATE_DONE; + break; + default: + if (REGEXP_WHITESPACE.test(char)) { + if (state === STATE_NON_WHITESPACE) { + state = STATE_DONE; + } + } else { + if (state === STATE_START_TAG) { + state = STATE_NON_WHITESPACE; + } + if (char !== '/') { + tagName += char; + } + } + break; + } + } + return tagName; +} \ No newline at end of file diff --git a/src/strip/strip_tags.js b/src/strip/strip_tags.js index 2c2d30b..5b283f5 100644 --- a/src/strip/strip_tags.js +++ b/src/strip/strip_tags.js @@ -1,13 +1,15 @@ -/* eslint-disable */ -import parseTagList from 'helper/strip/tag/parse_tag_list'; import coerceToString from 'helper/string/coerce_to_string'; -import isNil from 'helper/object/is_nil'; -import toString from 'helper/string/to_string'; -import trimLeft from 'manipulate/trim_left'; -import trimRight from 'manipulate/trim_right'; +import hasSubstringAtIndex from 'helper/string/has_substring_at_index'; +import parseTagList from 'helper/strip/parse_tag_list'; +import parseTagName from 'helper/strip/parse_tag_name'; + +const STATE_OUTPUT = 0; +const STATE_HTML = 1; +const STATE_EXCLAMATION = 2; +const STATE_COMMENT = 3; /** - * Strips HTML tags from `subject`. + * Strips subject tags from `subject`. * * @function stripTags * @static @@ -25,14 +27,126 @@ import trimRight from 'manipulate/trim_right'; * // => 'Earth' */ export default function trim(subject, allowableTags, replacement) { - const subjectString = coerceToString(subject); - if (subjectString === '') { + subject = coerceToString(subject); + if (subject === '') { return ''; } if (!Array.isArray(allowableTags)) { - allowableTags = parseTagList(coerceToString(allowableTags)) + const allowableTagsString = coerceToString(allowableTags); + allowableTags = allowableTagsString === '' ? [] : parseTagList(allowableTagsString); } const replacementString = coerceToString(replacement); + const length = subject.length; + const hasAllowableTags = allowableTags.length > 0; + const hasSubstring = hasSubstringAtIndex.bind(null, subject); + let state = STATE_OUTPUT; + let depth = 0; + let output = ''; + let tagContent = ''; + let quote = null; + for (let index = 0; index < length; index++) { + const char = subject[index]; + let advance = false; + switch (char) { + case '<': + if (quote) { + break; + } + if (hasSubstring('< ', index, false)) { + advance = true; + break; + } + if (state === STATE_OUTPUT) { + advance = true; + state = STATE_HTML; + break; + } + if (state === STATE_HTML) { + depth++; + break; + } + advance = true; + break; + case '!': + if (state === STATE_HTML && hasSubstring('': + if (depth > 0) { + depth--; + break; + } + if (quote) { + break; + } + if (state === STATE_HTML) { + quote = null; + state = STATE_OUTPUT; + if (hasAllowableTags) { + tagContent += '>'; + const tagName = parseTagName(tagContent); + if (allowableTags.indexOf(tagName.toLowerCase()) !== -1) { + output += tagContent; + } + tagContent = ''; + } else { + tagContent += replacementString; + } + break; + } + if (state === STATE_EXCLAMATION || state === STATE_COMMENT && hasSubstring('-->', index)) { + quote = null; + state = STATE_OUTPUT; + tagContent = ''; + break; + } + advance = true; + break; + default: + advance = true; + } + if (advance) { + switch (state) { + case STATE_OUTPUT: + output += char; + break; + case STATE_HTML: + if (hasAllowableTags) { + tagContent += char; + } + break; + } + } + } - + return output; } \ No newline at end of file diff --git a/test/helper/strip/parse_tag_name.js b/test/helper/strip/parse_tag_name.js new file mode 100644 index 0000000..1bdd2da --- /dev/null +++ b/test/helper/strip/parse_tag_name.js @@ -0,0 +1,11 @@ +import { expect } from 'chai'; +import parseTagName from 'helper/strip/parse_tag_name'; + +describe('parseTagName', function() { + + it('should parse the tag name from markup', function () { + expect(parseTagName("")).to.be.equal('img'); + expect(parseTagName("< b>Wonderful world")).to.be.equal('b'); + }); + +}); \ No newline at end of file diff --git a/test/index.js b/test/index.js index 985629a..a367a53 100644 --- a/test/index.js +++ b/test/index.js @@ -38,6 +38,7 @@ import './escape/unescape_html'; import './helper/boolean/coerce_to_boolean'; import './helper/number/coerce_to_number'; import './helper/reg_exp/append_flag_to_reg_exp'; +import './helper/strip/parse_tag_name'; //format import './format/sprintf'; diff --git a/test/modules_common.js b/test/modules_common.js index 883c51f..9c33ab6 100644 --- a/test/modules_common.js +++ b/test/modules_common.js @@ -344,6 +344,13 @@ describe('CommonJS modules', function() { expect(words('*gravity***can****cross&&dimensions++')).to.eql(['gravity', 'can', 'cross', 'dimensions']); }); + // Strip + + it('should require stripTags()', function() { + const stripTags = require('../dist_mod/strip_tags'); + expect(stripTags('Welcome')).to.equal('Welcome'); + }); + // Util it('should require version()', function() { diff --git a/test/modules_es2015.js b/test/modules_es2015.js index ba32688..5fa62e1 100644 --- a/test/modules_es2015.js +++ b/test/modules_es2015.js @@ -92,6 +92,10 @@ import graphemes from '../dist_mod/graphemes'; import split from '../dist_mod/split'; import words from '../dist_mod/words'; +// Strip + +import stripTags from '../dist_mod/strip_tags'; + // Util import version from '../dist_mod/version'; @@ -380,6 +384,10 @@ describe('CommonJS modules', function() { expect(words('*gravity***can****cross&&dimensions++')).to.eql(['gravity', 'can', 'cross', 'dimensions']); }); + it('should require stripTags()', function() { + expect(stripTags('Welcome')).to.equal('Welcome'); + }); + // Util it('should require version()', function() { diff --git a/test/strip/strip_tags.js b/test/strip/strip_tags.js index 37ec3d7..6f0047d 100644 --- a/test/strip/strip_tags.js +++ b/test/strip/strip_tags.js @@ -1,15 +1,77 @@ -/* eslint-disable */ import { expect } from 'chai'; -import { PRINTABLE_ASCII } from '../const'; import v from '../voca'; describe('stripTags', function() { - it('should strip tags from a string', function() { + it('should strip tags', function() { + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags('hello')).to.be.equal('hello'); + expect(v.stripTags('')).to.be.equal(' echo hello '); + expect(v.stripTags('hello

world

')).to.be.equal('helloworld'); }); - it('should strip tags from a string representation of an object', function() { + it('should strip tags which attributes contain < or > ', function() { + const helloWorld = 'hello world'; + expect(v.stripTags('hello world')).to.be.equal(helloWorld); + expect(v.stripTags('hello world')).to.be.equal(helloWorld); + expect(v.stripTags('hello world')).to.be.equal(helloWorld); + expect(v.stripTags("hello world")).to.be.equal(helloWorld); + expect(v.stripTags("hello world")).to.be.equal(helloWorld); + }); + + it('should strip tags on multiple lines', function() { + const multilineHtml = +`This's a string with quotes: +"strings in double quote"; +'strings in single quote'; +this\line is single quoted /with\slashes `; + expect(v.stripTags(multilineHtml, '')).to.be.equal(multilineHtml); + }); + it('should strip comments and doctype', function() { + expect(v.stripTags('')).to.be.equal(''); + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!')) + .to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!')) + .to.be.equal('Hello world!'); + }); + + it('should not strip allowable tags', function() { + expect(v.stripTags('Hello world!', ['b'])).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!', ['b'])).to.be.equal('Hello world!'); + expect(v.stripTags('Hello world!', '')).to.be.equal('Hello world!'); + const helloWorldHtml = '

hello

world
Other text'; + expect(v.stripTags(helloWorldHtml, '')).to.be.equal('helloworldOther text'); + expect(v.stripTags(helloWorldHtml, ['p'])).to.be.equal('

hello

worldOther text'); + expect(v.stripTags(helloWorldHtml, '')).to.be.equal('helloworldOther text'); + expect(v.stripTags(helloWorldHtml, ['html', 'p', 'a', 'b'])).to.be.equal(helloWorldHtml); + }); + + it('should not modify a string without tags', function() { + expect(v.stripTags('Hello world!')).to.be.equal('Hello world!'); + expect(v.stripTags(' ')).to.be.equal(' '); + expect(v.stripTags('')).to.be.equal(''); + }); + + it('should treat especially broken or invalid tags', function() { + expect(v.stripTags('< html >')).to.be.equal('< html >'); + expect(v.stripTags('<<>>')).to.be.equal(''); + const allowableTags = '

'; + expect(v.stripTags('<>hello<>', allowableTags)).to.be.equal('hello'); + expect(v.stripTags('HtMl text', allowableTags)).to.be.equal('HtMl text'); + expect(v.stripTags('I am a quoted (\") string with special chars like \$,\!,\@,\%,\&', allowableTags)) + .to.be.equal('I am a quoted (\") string with special chars like \$,\!,\@,\%,\&'); + expect(v.stripTags('hello \t\tworld... strip_tags_test', allowableTags)) + .to.be.equal('hello \t\tworld... strip_tags_test'); + }); + + it('should strip tags from a string representation of an object', function() { }); it('should return empty string for null or undefined', function() { diff --git a/test_runner/test_bundle.js b/test_runner/test_bundle.js index b48929b..31e9940 100644 --- a/test_runner/test_bundle.js +++ b/test_runner/test_bundle.js @@ -138,6 +138,9 @@ function capitalize(subject, restToLower) { * @example * v.lowerCase('Green'); * // => 'green' + * + * v.lowerCase('BLUE'); + * // => 'blue' */ function lowerCase(subject) { var subjectString = coerceToString(subject, ''); @@ -221,6 +224,14 @@ var REGEXP_UNICODE_CHARACTER = new RegExp('((?:[' + base + ']|[' + highSurrogate ([\\n\\r\\u2028\\u2029])|\ (.)', 'g'); +/** + * Regular expression to match whitespaces + * + * @type {RegExp} + * @ignore + */ +var REGEXP_WHITESPACE = new RegExp('[' + whitespace + ']'); + /** * Regular expression to match whitespaces from the left side * @@ -293,6 +304,16 @@ var REGEXP_TRAILING_ZEROS = /\.?0+$/g; */ var REGEXP_FLAGS = /[gimuy]*$/; +/** + * Regular expression to match a list of tags. + * + * @see https://html.spec.whatwg.org/multipage/syntax.html#syntax-tag-name + * @type {RegExp} + * @ignore + */ + +var REGEXP_TAG_LIST = /<([A-Za-z0-9]+)>/g; + /** * A regular expression to match the General Punctuation Unicode block * @@ -500,6 +521,9 @@ function camelCase(subject) { * @example * v.decapitalize('Sun'); * // => 'sun' + * + * v.decapitalize('moon'); + * // => 'moon' */ function decapitalize(subject) { var subjectString = coerceToString(subject); @@ -1283,7 +1307,7 @@ function buildPadding(padCharacters, length) { * // => ' dog' * * v.padLeft('bird', 6, '-'); - * // => '--bird-' + * // => '--bird' * * v.padLeft('cat', 6, '-='); * // => '-=-cat' @@ -1882,9 +1906,9 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr * @static * @since 1.0.0 * @memberOf Format - * @param {string} [format=''] The format string. - * @param {Array.} replacements The array of replacements to produce the string. - * @return {string} Returns the produced string. + * @param {string} format=''] The format string. + * @param {Array} replacements The array of replacements to produce the string. + * @return {string} Returns the produced string. * @example * v.vprintf('%s', ['Welcome']) * // => 'Welcome' @@ -2212,31 +2236,44 @@ var diacritics = { "yi": "\u0457" }; -var diacriticsMap = {}; -var index = void 0; +var diacriticsMap = null; -Object.keys(diacritics).forEach(function (key) { - var characters = diacritics[key]; - for (index = 0; index < characters.length; index++) { - var character = characters[index]; - diacriticsMap[character] = key; +/** + * Creates a map of the diacritics. + * + * @ignore + * @returns {Object} Returns the diacritics map. + */ +function getDiacriticsMap() { + if (diacriticsMap !== null) { + return diacriticsMap; } -}); + diacriticsMap = {}; + Object.keys(diacritics).forEach(function (key) { + var characters = diacritics[key]; + for (var index = 0; index < characters.length; index++) { + var character = characters[index]; + diacriticsMap[character] = key; + } + }); + return diacriticsMap; +} /** - * Removes the diacritics from `character`. + * Get the latin character from character with diacritics. * * @ignore - * @param {string} character The character with diacritics. - * @returns {string} Returns the character without diacritics. + * @param {string} character The character with diacritics. + * @returns {string} Returns the character without diacritics. */ -function removeDiacritics(character) { - var characterWithoutDiacritic = diacriticsMap[character]; +function getLatinCharacter(character) { + var characterWithoutDiacritic = getDiacriticsMap()[character]; return characterWithoutDiacritic ? characterWithoutDiacritic : character; } /** * Returns the `cleanCharacter` from combining marks regular expression match. + * * @ignore * @param {string} character The character with combining marks * @param {string} cleanCharacter The character without combining marks. @@ -2270,7 +2307,7 @@ function latinise(subject) { if (subjectString === '') { return subjectString; } - return subjectString.replace(REGEXP_NON_LATIN, removeDiacritics).replace(REGEXP_COMBINING_MARKS, removeCombiningMarks); + return subjectString.replace(REGEXP_NON_LATIN, getLatinCharacter).replace(REGEXP_COMBINING_MARKS, removeCombiningMarks); } /** @@ -2409,7 +2446,7 @@ function appendFlagToRegExp(pattern, appendFlag) { * @example * v.replaceAll('good morning', 'o', '*'); * // => 'g**d m*rning' - * v.replaceAll('evening', \n\, 's'); + * v.replaceAll('evening', /n/, 's'); * // => 'evesisg' * */ @@ -2489,7 +2526,7 @@ function reverseGrapheme(subject) { * v.slugify('Italian cappuccino drink'); * // => 'italian-cappuccino-drink' * - * v.slugify('café latté'); + * v.slugify('caffé latté'); * // => 'caffe-latte' * * v.slugify('хорошая погода'); @@ -2548,7 +2585,7 @@ function splice(subject, start, deleteCount, toAdd) { } /** - * Removes whitespaces from the left part of the `subject`. + * Removes whitespaces from the left side of the `subject`. * * @function trimLeft * @static @@ -2573,12 +2610,12 @@ function trimLeft(subject, whitespace$$1) { if (isNil(whitespaceString)) { return subjectString.replace(REGEXP_TRIM_LEFT, ''); } - var whitespaceStringLength = whitespaceString.length; + var whitespaceLength = whitespaceString.length; var matchWhitespace = true; var totalWhitespaceLength = 0; while (matchWhitespace) { if (subjectString.indexOf(whitespaceString, totalWhitespaceLength) === totalWhitespaceLength) { - totalWhitespaceLength += whitespaceStringLength; + totalWhitespaceLength += whitespaceLength; } else { matchWhitespace = false; } @@ -2587,7 +2624,7 @@ function trimLeft(subject, whitespace$$1) { } /** - * Removes whitespaces from the right part of the `subject`. + * Removes whitespaces from the right side of the `subject`. * * @function trimRight * @static @@ -2612,24 +2649,24 @@ function trimRight(subject, whitespace$$1) { if (isNil(whitespaceString)) { return subjectString.replace(REGEXP_TRIM_RIGHT, ''); } - var whitespaceStringLength = whitespaceString.length; - var valueStringLength = subjectString.length; + var whitespaceLength = whitespaceString.length; + var subjectLength = subjectString.length; var matchWhitespace = true; var totalWhitespaceLength = 0; var position = void 0; while (matchWhitespace) { - position = valueStringLength - totalWhitespaceLength - whitespaceStringLength; + position = subjectLength - totalWhitespaceLength - whitespaceLength; if (subjectString.indexOf(whitespaceString, position) === position) { - totalWhitespaceLength += whitespaceStringLength; + totalWhitespaceLength += whitespaceLength; } else { matchWhitespace = false; } } - return subjectString.substring(0, valueStringLength - totalWhitespaceLength); + return subjectString.substring(0, subjectLength - totalWhitespaceLength); } /** - * Removes whitespaces from left and right parts of the `subject`. + * Removes whitespaces from left and right sides of the `subject`. * * @function trim * @static @@ -2662,6 +2699,22 @@ var OPTION_NEW_LINE = 'newLine'; var OPTION_INDENT = 'indent'; var OPTION_CUT = 'cut'; +/** + * Determine the word wrap options. The missing values are filled with defaults. + * + * @param {Object} options The options object. + * @return {Object} The word wrap options, with default settings if necessary. + * @ignore + */ +function determineOptions(options) { + return { + width: coerceToNumber(options[OPTION_WIDTH], 75), + newLine: coerceToString(options[OPTION_NEW_LINE], '\n'), + indent: coerceToString(options[OPTION_INDENT], ''), + cut: coerceToBoolean(options[OPTION_CUT], false) + }; +} + /** * Wraps `subject` to a given number of characters using a string break character. * @@ -2698,22 +2751,24 @@ var OPTION_CUT = 'cut'; * // => 'Wonde\nrful\nworld' * */ -function wordWrap(subject, options) { +function wordWrap(subject) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var subjectString = coerceToString(subject); - options = nilDefault(options, {}); - var width = coerceToNumber(options[OPTION_WIDTH], 75); - var newLine = coerceToString(options[OPTION_NEW_LINE], '\n'); - var indent = coerceToString(options[OPTION_INDENT], ''); - var cut = coerceToBoolean(options[OPTION_CUT], false); + + var _determineOptions = determineOptions(options), + width = _determineOptions.width, + newLine = _determineOptions.newLine, + indent = _determineOptions.indent, + cut = _determineOptions.cut; if (subjectString === '' || width <= 0) { return indent; } - var subjectLength = subjectString.length; + var substring = subjectString.substring.bind(subjectString); var offset = 0; var wrappedLine = ''; - while (subjectLength - offset > width) { if (subjectString[offset] === ' ') { offset++; @@ -2721,26 +2776,26 @@ function wordWrap(subject, options) { } var spaceToWrapAt = subjectString.lastIndexOf(' ', width + offset); if (spaceToWrapAt >= offset) { - wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine; + wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine; offset = spaceToWrapAt + 1; } else { if (cut) { - wrappedLine += indent + subjectString.substring(offset, width + offset) + newLine; + wrappedLine += indent + substring(offset, width + offset) + newLine; offset += width; } else { spaceToWrapAt = subjectString.indexOf(' ', width + offset); if (spaceToWrapAt >= 0) { - wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine; + wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine; offset = spaceToWrapAt + 1; } else { - wrappedLine += indent + subjectString.substring(offset); + wrappedLine += indent + substring(offset); offset = subjectLength; } } } } if (offset < subjectLength) { - wrappedLine += indent + subjectString.substring(offset); + wrappedLine += indent + substring(offset); } return wrappedLine; } @@ -2892,6 +2947,9 @@ function isDigit(subject) { * * v.isEmpty(' '); * // => false + * + * v.isEmpty('sun'); + * // => false */ function isEmpty(subject) { var subjectString = coerceToString(subject); @@ -2938,7 +2996,10 @@ function isLowerCase(subject) { * v.isNumeric('-20.5'); * // => true * - * v.isNumeric('NaN'); + * v.isNumeric('1.5E+2'); + * // => true + * + * v.isNumeric('five'); * // => false */ function isNumeric(subject) { @@ -3134,6 +3195,233 @@ function split(subject, separator, limit) { return subjectString.split(separator, limit); } +/** + * Checks whether `subject` contains substring at specific `index`. + * + * @ignore + * @param {string} subject The subject to search in. + * @param {string} substring The substring to search/ + * @param {number} index The index to search substring. + * @param {boolean} lookBehind Whether to look behind (true) or ahead (false). + * @return {boolean} Returns a boolean whether the substring exists. + */ +function hasSubstringAtIndex(subject, substring, index) { + var lookBehind = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + + var indexOffset = 0; + if (lookBehind) { + indexOffset = -substring.length + 1; + } + var extractedSubstring = subject.substr(index + indexOffset, substring.length); + return extractedSubstring.toLowerCase() === substring; +} + +/** + * Parses the tags from the string '...'. + * + * @ignore + * @param {string} tags The string that contains the tags. + * @return {string[]} Returns the array of tag names. + */ +function parseTagList(tags) { + var tagsList = []; + var match = void 0; + while ((match = REGEXP_TAG_LIST.exec(tags)) !== null) { + tagsList.push(match[1]); + } + return tagsList; +} + +var STATE_START_TAG = 0; +var STATE_NON_WHITESPACE = 1; +var STATE_DONE = 2; + +/** + * Parses the tag name from html content + * + * @param {string} tagContent The tag content + * @return {string} Returns the tag name + */ +function parseTagName(tagContent) { + var state = STATE_START_TAG; + var tagName = ''; + var index = 0; + while (state !== STATE_DONE) { + var char = tagContent[index++].toLowerCase(); + switch (char) { + case '<': + break; + case '>': + state = STATE_DONE; + break; + default: + if (REGEXP_WHITESPACE.test(char)) { + if (state === STATE_NON_WHITESPACE) { + state = STATE_DONE; + } + } else { + if (state === STATE_START_TAG) { + state = STATE_NON_WHITESPACE; + } + if (char !== '/') { + tagName += char; + } + } + break; + } + } + return tagName; +} + +/* eslint-disable */ +var STATE_OUTPUT = 0; +var STATE_HTML = 1; +var STATE_EXCLAMATION = 2; +var STATE_COMMENT = 3; + +/** + * Strips subject tags from `subject`. + * + * @function stripTags + * @static + * @since 1.1.0 + * @memberOf Strip + * @param {string} [subject=''] The string to strip. + * @param {string|Array} [allowableTags] The string or array of tags that should not be stripped. + * @param {string} [replacement=''] The string to replace the stripped tag. + * @return {string} Returns the stripped string. + * @example + * v.trim(' Mother nature '); + * // => 'Mother nature' + * + * v.trim('--Earth--', '-'); + * // => 'Earth' + */ +function trim$1(subject, allowableTags, replacement) { + subject = coerceToString(subject); + if (subject === '') { + return ''; + } + if (!Array.isArray(allowableTags)) { + var allowableTagsString = coerceToString(allowableTags); + allowableTags = allowableTagsString === '' ? [] : parseTagList(allowableTagsString); + } + var replacementString = coerceToString(replacement); + var length = subject.length; + var hasAllowableTags = allowableTags.length > 0; + var hasSubstring = hasSubstringAtIndex.bind(null, subject); + var state = STATE_OUTPUT; + var depth = 0; + var output = ''; + var tagContent = ''; + var quote = null; + for (var index = 0; index < length; index++) { + var char = subject[index]; + var advance = false; + switch (char) { + case '<': + if (quote) { + break; + } + if (hasSubstring('< ', index, false)) { + advance = true; + break; + } + if (state === STATE_OUTPUT) { + advance = true; + state = STATE_HTML; + break; + } + if (state === STATE_HTML) { + depth++; + break; + } + advance = true; + break; + case '!': + if (state === STATE_HTML && hasSubstring('': + if (depth > 0) { + depth--; + break; + } + if (quote) { + break; + } + if (state === STATE_HTML) { + quote = null; + state = STATE_OUTPUT; + if (hasAllowableTags) { + tagContent += '>'; + var tagName = parseTagName(tagContent); + if (allowableTags.indexOf(tagName.toLowerCase()) !== -1) { + output += tagContent; + } + tagContent = ''; + } else { + tagContent += replacementString; + } + break; + } + if (state === STATE_EXCLAMATION || state === STATE_COMMENT && hasSubstring('-->', index)) { + quote = null; + state = STATE_OUTPUT; + tagContent = ''; + break; + } + advance = true; + break; + default: + advance = true; + } + if (advance) { + switch (state) { + case STATE_OUTPUT: + output += char; + break; + case STATE_HTML: + if (hasAllowableTags) { + tagContent += char; + } + break; + } + } + } + + return output; +} + var globalObject$1 = null; function getGlobalObject() { @@ -3234,6 +3522,10 @@ var version = '1.0.0'; * Functions to split a string * @namespace Split */ +/** + * Functions to strip a string + * @namespace Strip + */ /** * Util functions and properties * @namespace Util @@ -3312,6 +3604,8 @@ var functions = { split: split, words: words, + stripTags: trim$1, + noConflict: noConflict, version: version }; @@ -4595,6 +4889,14 @@ describe('coerceToRegularExpression', function () { }); }); +describe('parseTagName', function () { + + it('should parse the tag name from markup', function () { + chai.expect(parseTagName("")).to.be.equal('img'); + chai.expect(parseTagName("< b>Wonderful world")).to.be.equal('b'); + }); +}); + describe('sprintf', function () { it('should return a string according to string type formatting', function () { @@ -7027,6 +7329,83 @@ describe('words', function () { }); }); +/* eslint-disable */ +describe('stripTags', function () { + + it('should strip tags', function () { + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('hello')).to.be.equal('hello'); + chai.expect(Voca.stripTags('')).to.be.equal(' echo hello '); + chai.expect(Voca.stripTags('hello

world

')).to.be.equal('helloworld'); + }); + + it('should strip tags which attributes contain < or > ', function () { + var helloWorld = 'hello world'; + chai.expect(Voca.stripTags('hello world')).to.be.equal(helloWorld); + chai.expect(Voca.stripTags('hello world')).to.be.equal(helloWorld); + chai.expect(Voca.stripTags('hello world')).to.be.equal(helloWorld); + chai.expect(Voca.stripTags("hello world")).to.be.equal(helloWorld); + chai.expect(Voca.stripTags("hello world")).to.be.equal(helloWorld); + }); + + it('should strip tags on multiple lines', function () { + var multilineHtml = `This's a string with quotes: +"strings in double quote"; +'strings in single quote'; +this\line is single quoted /with\slashes `; + chai.expect(Voca.stripTags(multilineHtml, '')).to.be.equal(multilineHtml); + }); + + it('should strip comments and doctype', function () { + chai.expect(Voca.stripTags('')).to.be.equal(''); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + }); + + it('should not strip allowable tags', function () { + chai.expect(Voca.stripTags('Hello world!', ['b'])).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!', ['b'])).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags('Hello world!', '')).to.be.equal('Hello world!'); + var helloWorldHtml = '

hello

world
Other text'; + chai.expect(Voca.stripTags(helloWorldHtml, '')).to.be.equal('helloworldOther text'); + chai.expect(Voca.stripTags(helloWorldHtml, ['p'])).to.be.equal('

hello

worldOther text'); + chai.expect(Voca.stripTags(helloWorldHtml, '')).to.be.equal('helloworldOther text'); + chai.expect(Voca.stripTags(helloWorldHtml, ['html', 'p', 'a', 'b'])).to.be.equal(helloWorldHtml); + }); + + it('should not modify a string without tags', function () { + chai.expect(Voca.stripTags('Hello world!')).to.be.equal('Hello world!'); + chai.expect(Voca.stripTags(' ')).to.be.equal(' '); + chai.expect(Voca.stripTags('')).to.be.equal(''); + }); + + it('should treat especially broken or invalid tags', function () { + chai.expect(Voca.stripTags('< html >')).to.be.equal('< html >'); + chai.expect(Voca.stripTags('<<>>')).to.be.equal(''); + var allowableTags = '

'; + chai.expect(Voca.stripTags('<>hello<>', allowableTags)).to.be.equal('hello'); + chai.expect(Voca.stripTags('HtMl text', allowableTags)).to.be.equal('HtMl text'); + chai.expect(Voca.stripTags('I am a quoted (\") string with special chars like \$,\!,\@,\%,\&', allowableTags)).to.be.equal('I am a quoted (\") string with special chars like \$,\!,\@,\%,\&'); + chai.expect(Voca.stripTags('hello \t\tworld... strip_tags_test', allowableTags)).to.be.equal('hello \t\tworld... strip_tags_test'); + }); + + it('should strip tags from a string representation of an object', function () {}); + + it('should return empty string for null or undefined', function () { + chai.expect(Voca.stripTags(null)).to.be.equal(''); + chai.expect(Voca.stripTags(null, null)).to.be.equal(''); + chai.expect(Voca.stripTags(undefined)).to.be.equal(''); + chai.expect(Voca.stripTags(undefined, '')).to.be.equal(''); + chai.expect(Voca.stripTags(undefined, undefined)).to.be.equal(''); + }); +}); + describe('noConflict', function () { it('should return Voca library instance and restore v global variable', function () { @@ -7063,6 +7442,7 @@ describe('version', function () { //manipulate //query //split +//strip //util }(chai)); diff --git a/test_runner/test_bundle.js.map b/test_runner/test_bundle.js.map index a39e656..e298406 100644 --- a/test_runner/test_bundle.js.map +++ b/test_runner/test_bundle.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../test/const.js","../src/helper/object/is_nil.js","../src/helper/boolean/coerce_to_boolean.js","../src/query/is_string.js","../src/helper/string/coerce_to_string.js","../src/case/capitalize.js","../src/case/lower_case.js","../src/helper/reg_exp/const.js","../src/helper/reg_exp/const_extended.js","../src/helper/undefined/nil_default.js","../src/helper/string/to_string.js","../src/split/words.js","../src/case/camel_case.js","../src/case/decapitalize.js","../src/case/kebab_case.js","../src/case/snake_case.js","../src/case/upper_case.js","../src/helper/number/clip_number.js","../src/helper/number/const.js","../src/helper/number/to_integer.js","../src/chop/truncate.js","../src/chop/char_at.js","../src/helper/string/surrogate_pair.js","../src/helper/number/coerce_to_number.js","../src/helper/number/nan_default.js","../src/chop/code_point_at.js","../src/chop/first.js","../src/chop/grapheme_at.js","../src/chop/last.js","../src/chop/prune.js","../src/chop/slice.js","../src/chop/substr.js","../src/chop/substring.js","../src/count/count.js","../src/count/count_graphemes.js","../src/count/count_substrings.js","../src/count/count_where.js","../src/count/count_words.js","../src/helper/format/replacement/index.js","../src/helper/format/const.js","../src/manipulate/repeat.js","../src/helper/string/build_padding.js","../src/manipulate/pad_left.js","../src/manipulate/pad_right.js","../src/helper/format/align_and_pad.js","../src/helper/format/type_format/add_sign_to_formatted_number.js","../src/helper/format/type_format/float.js","../src/helper/format/type_format/integer_base.js","../src/helper/format/type_format/integer_decimal.js","../src/helper/format/type_format/string.js","../src/helper/format/replacement/compute.js","../src/helper/format/conversion_specification.js","../src/helper/format/replacement/validate.js","../src/helper/format/replacement/match.js","../src/format/sprintf.js","../src/format/vprintf.js","../src/escape/escape_html.js","../src/escape/escape_reg_exp.js","../src/escape/unescape_html.js","../src/index/index_of.js","../src/index/last_index_of.js","../src/index/search.js","../src/manipulate/insert.js","../src/helper/string/diacritics_map.js","../src/manipulate/latinise.js","../src/manipulate/pad.js","../src/manipulate/replace.js","../src/helper/reg_exp/get_reg_exp_flags.js","../src/query/includes.js","../src/helper/reg_exp/append_flag_to_reg_exp.js","../src/manipulate/replace_all.js","../src/manipulate/reverse.js","../src/manipulate/reverse_grapheme.js","../src/manipulate/slugify.js","../src/manipulate/splice.js","../src/manipulate/trim_left.js","../src/manipulate/trim_right.js","../src/manipulate/trim.js","../src/manipulate/word_wrap.js","../src/query/ends_with.js","../src/query/is_alpha.js","../src/query/is_alpha_digit.js","../src/query/is_blank.js","../src/query/is_digit.js","../src/query/is_empty.js","../src/query/is_lower_case.js","../src/query/is_numeric.js","../src/query/is_upper_case.js","../src/query/matches.js","../src/query/starts_with.js","../src/split/chars.js","../src/split/code_points.js","../src/split/graphemes.js","../src/split/split.js","../src/helper/object/get_global.js","../src/util/no_conflict.js","../src/util/version.js","../src/functions.js","../src/chain/wrapper.js","../src/chain/chain.js","../src/index.js","../test/case/camel_case.js","../test/case/capitalize.js","../test/case/decapitalize.js","../test/case/kebab_case.js","../test/case/lower_case.js","../test/case/snake_case.js","../test/case/upper_case.js","../test/chain/chain.js","../test/chop/char_at.js","../test/chop/code_point_at.js","../test/chop/grapheme_at.js","../test/chop/first.js","../test/chop/last.js","../test/chop/prune.js","../test/chop/slice.js","../test/chop/substr.js","../test/chop/substring.js","../test/chop/truncate.js","../test/count/count.js","../test/count/count_graphemes.js","../test/count/count_substrings.js","../test/count/count_where.js","../test/count/count_words.js","../test/escape/escape_html.js","../test/escape/escape_reg_exp.js","../test/escape/unescape_html.js","../test/helper/boolean/coerce_to_boolean.js","../test/helper/number/coerce_to_number.js","../test/helper/reg_exp/append_flag_to_reg_exp.js","../test/format/sprintf.js","../test/format/vprintf.js","../test/index/index_of.js","../test/index/last_index_of.js","../test/index/search.js","../test/manipulate/insert.js","../test/manipulate/latinise.js","../test/manipulate/repeat.js","../test/manipulate/pad.js","../test/manipulate/pad_left.js","../test/manipulate/pad_right.js","../test/manipulate/replace.js","../test/manipulate/replace_all.js","../test/manipulate/reverse.js","../test/manipulate/reverse_grapheme.js","../test/manipulate/slugify.js","../test/manipulate/splice.js","../test/manipulate/trim.js","../test/manipulate/trim_left.js","../test/manipulate/trim_right.js","../test/manipulate/word_wrap.js","../test/query/ends_with.js","../test/query/includes.js","../test/query/is_alpha.js","../test/query/is_alpha_digit.js","../test/query/is_blank.js","../test/query/is_digit.js","../test/query/is_empty.js","../test/query/is_lower_case.js","../test/query/is_numeric.js","../test/query/is_string.js","../test/query/is_upper_case.js","../test/query/matches.js","../test/query/starts_with.js","../test/split/chars.js","../test/split/code_points.js","../test/split/graphemes.js","../test/split/split.js","../test/split/words.js","../test/util/no_conflict.js","../test/util/version.js","../test/index.js"],"sourcesContent":["/**\n * The string containing all printable ASCII characters.\n * @ignore\n * @type {string}\n */\nexport const PRINTABLE_ASCII = ' !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~';\n\n/**\n * The string containing all printable ASCII characters in reverse order.\n * @ignore\n * @type {string}\n */\nexport const REVERSED_PRINTABLE_ASCII = '~}|{zyxwvutsrqponmlkjihgfedcba`_^]\\\\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(\\'&%$#\"! ';\n\n/**\n * Regular expression to match the library version.\n * @see http://semver.org/\n * @type {RegExp}\n */\nexport const REGEXP_SEMVER = /\\bv?(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?\\b/ig;","/**\n * Checks if `value` is `null` or `undefined`\n *\n * @ignore\n * @function isNil\n * @param {*} value The object to check\n * @return {boolean} Returns `true` is `value` is `undefined` or `null`, `false` otherwise\n */\nexport default function isNil(value) {\n return value === undefined || value === null;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Converts the `value` to a boolean. If `value` is `undefined` or `null`, returns `defaultValue`.\n *\n * @ignore\n * @function toBoolean\n * @param {*} value The value to convert.\n * @param {boolean} [defaultValue=false] The default value.\n * @return {boolean} Returns the coercion to boolean.\n */\nexport default function coerceToBoolean(value, defaultValue = false) {\n if (isNil(value)) {\n return defaultValue;\n }\n return Boolean(value);\n}","/**\n * Checks whether `subject` is a string primitive type.\n *\n * @function isString\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} subject The value to verify.\n * @return {boolean} Returns `true` if `subject` is string primitive type or `false` otherwise.\n * @example\n * v.isString('vacation');\n * // => true\n *\n * v.isString(560);\n * // => false\n */\nexport default function isString(subject) {\n return typeof subject === 'string';\n}","import isNil from 'helper/object/is_nil';\nimport isString from 'query/is_string';\n\n/**\n * Get the string representation of the `value`.\n * Converts the `value` to string.\n * If `value` is `null` or `undefined`, return `defaultValue`.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @param {*} [defaultValue=''] The default value to return.\n * @return {string|null} Returns the string representation of `value`. Returns `defaultValue` if `value` is\n * `null` or `undefined`.\n */\nexport default function coerceToString(value, defaultValue = '') {\n if (isNil(value)) {\n return defaultValue;\n }\n if (isString(value)) {\n return value;\n }\n return String(value);\n}","import coerceToBoolean from 'helper/boolean/coerce_to_boolean';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the first character of `subject` to upper case. If `restToLower` is `true`, convert the rest of\n * `subject` to lower case.\n *\n * @function capitalize\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to capitalize.\n * @param {boolean} [restToLower=false] Convert the rest of `subject` to lower case.\n * @return {string} Returns the capitalized string.\n * @example\n * v.capitalize('apple');\n * // => 'Apple'\n *\n * v.capitalize('aPPle', true);\n * // => 'Apple'\n */\nexport default function capitalize(subject, restToLower) {\n let subjectString = coerceToString(subject);\n const restToLowerCaseBoolean = coerceToBoolean(restToLower);\n if (subjectString === '') {\n return '';\n }\n if (restToLowerCaseBoolean) {\n subjectString = subjectString.toLowerCase();\n }\n return subjectString.substr(0, 1).toUpperCase() + subjectString.substr(1);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the `subject` to lower case.\n *\n * @function lowerCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to lower case.\n * @return {string} Returns the lower case string.\n * @example\n * v.lowerCase('Green');\n * // => 'green'\n */\nexport default function lowerCase(subject) {\n const subjectString = coerceToString(subject, '');\n return subjectString.toLowerCase();\n}","/**\n * A regular expression string matching digits\n *\n * @type {string}\n * @ignore\n */\nexport const digit = '\\\\d';\n\n/**\n * A regular expression string matching whitespace\n *\n * @type {string}\n * @ignore\n */\nexport const whitespace = '\\\\s\\\\uFEFF\\\\xA0';\n\n/**\n * A regular expression string matching high surrogate\n *\n * @type {string}\n * @ignore\n */\nexport const highSurrogate = '\\\\uD800-\\\\uDBFF';\n\n/**\n * A regular expression string matching low surrogate\n *\n * @type {string}\n * @ignore\n */\nexport const lowSurrogate = '\\\\uDC00-\\\\uDFFF';\n\n/**\n * A regular expression string matching diacritical mark\n *\n * @type {string}\n * @ignore\n */\nexport const diacriticalMark = '\\\\u0300-\\\\u036F\\\\u1AB0-\\\\u1AFF\\\\u1DC0-\\\\u1DFF\\\\u20D0-\\\\u20FF\\\\uFE20-\\\\uFE2F';\n\n/**\n * A regular expression to match the base character for a combining mark\n *\n * @type {string}\n * @ignore\n */\nexport const base = '\\\\0-\\\\u02FF\\\\u0370-\\\\u1AAF\\\\u1B00-\\\\u1DBF\\\\u1E00-\\\\u20CF\\\\u2100-\\\\uD7FF\\\\uE000-\\\\uFE1F\\\\uFE30-\\\\uFFFF';\n\n/**\n * Regular expression to match combining marks\n *\n * @see http://unicode.org/faq/char_combmark.html\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_COMBINING_MARKS = new RegExp('([' + base + ']|[' + highSurrogate + '][' + lowSurrogate + ']|[' + highSurrogate + '](?![' + lowSurrogate + '])|(?:[^' + highSurrogate + ']|^)[' + lowSurrogate + '])([' + diacriticalMark + ']+)', 'g');\n\n/**\n * Regular expression to match surrogate pairs\n *\n * @see http://www.unicode.org/faq/utf_bom.html#utf16-2\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_SURROGATE_PAIRS = new RegExp('([' + highSurrogate + '])([' + lowSurrogate + '])', 'g');\n\n/**\n * Regular expression to match an unicode character\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_UNICODE_CHARACTER = new RegExp(\n'((?:[' + base + ']|[' + highSurrogate + '][' + lowSurrogate + ']|[' + highSurrogate + '](?![' + lowSurrogate + '])|(?:[^' + highSurrogate + ']|^)[' + lowSurrogate + '])(?:[' + diacriticalMark + ']+))|\\\n([' + highSurrogate + '][' + lowSurrogate + '])|\\\n([\\\\n\\\\r\\\\u2028\\\\u2029])|\\\n(.)', 'g');\n\n/**\n * Regular expression to match whitespaces from the left side\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRIM_LEFT = new RegExp('^[' + whitespace + ']+');\n\n/**\n * Regular expression to match whitespaces from the right side\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRIM_RIGHT = new RegExp('[' + whitespace + ']+$');\n\n/**\n * Regular expression to match digit characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_DIGIT = new RegExp('^' + digit + '+$');\n\n/**\n * Regular expression to match regular expression special characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_SPECIAL_CHARACTERS = /[-[\\]{}()*+!<=:?.\\/\\\\^$|#,]/g;\n\n/**\n * Regular expression to match not latin characters\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_NON_LATIN = /[^A-Za-z0-9]/g;\n\n/**\n * Regular expression to match HTML special characters.\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_HTML_SPECIAL_CHARACTERS = /[<>&\"'`]/g;\n\n/**\n * Regular expression to match sprintf format string\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_CONVERSION_SPECIFICATION = /(%{1,2})(?:(\\d+)\\$)?(\\+)?([ 0]|'.{1})?(-)?(\\d+)?(?:\\.(\\d+))?([bcdiouxXeEfgGs])?/g;\n\n/**\n * Regular expression to match trailing zeros in a number\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_TRAILING_ZEROS = /\\.?0+$/g;\n\n/**\n * Regular expression to match flags from a regular expression.\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_FLAGS = /[gimuy]*$/;","import { diacriticalMark, digit, whitespace } from 'helper/reg_exp/const';\n\n/**\n * A regular expression to match the General Punctuation Unicode block\n *\n * @type {string}\n * @ignore\n */\nconst generalPunctuationBlock = '\\\\u2000-\\\\u206F';\n\n/**\n * A regular expression to match non characters from from Basic Latin and Latin-1 Supplement Unicode blocks\n *\n * @type {string}\n * @ignore\n */\nconst nonCharacter = '\\\\x00-\\\\x2F\\\\x3A-\\\\x40\\\\x5B-\\\\x60\\\\x7b-\\\\xBF\\\\xD7\\\\xF7';\n\n/**\n * A regular expression to match the dingbat Unicode block\n *\n * @type {string}\n * @ignore\n */\nconst dingbatBlock = '\\\\u2700-\\\\u27BF';\n\n/**\n * A regular expression string that matches lower case letters: LATIN\n *\n * @type {string}\n * @ignore\n */\nconst lowerCaseLetter = 'a-z\\\\xB5\\\\xDF-\\\\xF6\\\\xF8-\\\\xFF\\\\u0101\\\\u0103\\\\u0105\\\\u0107\\\\u0109\\\\u010B\\\\u010D\\\\u010F\\\\u0111\\\\u0113\\\\u0115\\\\u0117\\\\u0119\\\\u011B\\\\u011D\\\\u011F\\\\u0121\\\\u0123\\\\u0125\\\\u0127\\\\u0129\\\\u012B\\\\u012D\\\\u012F\\\\u0131\\\\u0133\\\\u0135\\\\u0137\\\\u0138\\\\u013A\\\\u013C\\\\u013E\\\\u0140\\\\u0142\\\\u0144\\\\u0146\\\\u0148\\\\u0149\\\\u014B\\\\u014D\\\\u014F\\\\u0151\\\\u0153\\\\u0155\\\\u0157\\\\u0159\\\\u015B\\\\u015D\\\\u015F\\\\u0161\\\\u0163\\\\u0165\\\\u0167\\\\u0169\\\\u016B\\\\u016D\\\\u016F\\\\u0171\\\\u0173\\\\u0175\\\\u0177\\\\u017A\\\\u017C\\\\u017E-\\\\u0180\\\\u0183\\\\u0185\\\\u0188\\\\u018C\\\\u018D\\\\u0192\\\\u0195\\\\u0199-\\\\u019B\\\\u019E\\\\u01A1\\\\u01A3\\\\u01A5\\\\u01A8\\\\u01AA\\\\u01AB\\\\u01AD\\\\u01B0\\\\u01B4\\\\u01B6\\\\u01B9\\\\u01BA\\\\u01BD-\\\\u01BF\\\\u01C6\\\\u01C9\\\\u01CC\\\\u01CE\\\\u01D0\\\\u01D2\\\\u01D4\\\\u01D6\\\\u01D8\\\\u01DA\\\\u01DC\\\\u01DD\\\\u01DF\\\\u01E1\\\\u01E3\\\\u01E5\\\\u01E7\\\\u01E9\\\\u01EB\\\\u01ED\\\\u01EF\\\\u01F0\\\\u01F3\\\\u01F5\\\\u01F9\\\\u01FB\\\\u01FD\\\\u01FF\\\\u0201\\\\u0203\\\\u0205\\\\u0207\\\\u0209\\\\u020B\\\\u020D\\\\u020F\\\\u0211\\\\u0213\\\\u0215\\\\u0217\\\\u0219\\\\u021B\\\\u021D\\\\u021F\\\\u0221\\\\u0223\\\\u0225\\\\u0227\\\\u0229\\\\u022B\\\\u022D\\\\u022F\\\\u0231\\\\u0233-\\\\u0239\\\\u023C\\\\u023F\\\\u0240\\\\u0242\\\\u0247\\\\u0249\\\\u024B\\\\u024D\\\\u024F';\n\n/**\n * A regular expression string that matches upper case letters: LATIN\n *\n * @type {string}\n * @ignore\n */\nconst upperCaseLetter = '\\\\x41-\\\\x5a\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\\\\u0100\\\\u0102\\\\u0104\\\\u0106\\\\u0108\\\\u010a\\\\u010c\\\\u010e\\\\u0110\\\\u0112\\\\u0114\\\\u0116\\\\u0118\\\\u011a\\\\u011c\\\\u011e\\\\u0120\\\\u0122\\\\u0124\\\\u0126\\\\u0128\\\\u012a\\\\u012c\\\\u012e\\\\u0130\\\\u0132\\\\u0134\\\\u0136\\\\u0139\\\\u013b\\\\u013d\\\\u013f\\\\u0141\\\\u0143\\\\u0145\\\\u0147\\\\u014a\\\\u014c\\\\u014e\\\\u0150\\\\u0152\\\\u0154\\\\u0156\\\\u0158\\\\u015a\\\\u015c\\\\u015e\\\\u0160\\\\u0162\\\\u0164\\\\u0166\\\\u0168\\\\u016a\\\\u016c\\\\u016e\\\\u0170\\\\u0172\\\\u0174\\\\u0176\\\\u0178\\\\u0179\\\\u017b\\\\u017d\\\\u0181\\\\u0182\\\\u0184\\\\u0186\\\\u0187\\\\u0189-\\\\u018b\\\\u018e-\\\\u0191\\\\u0193\\\\u0194\\\\u0196-\\\\u0198\\\\u019c\\\\u019d\\\\u019f\\\\u01a0\\\\u01a2\\\\u01a4\\\\u01a6\\\\u01a7\\\\u01a9\\\\u01ac\\\\u01ae\\\\u01af\\\\u01b1-\\\\u01b3\\\\u01b5\\\\u01b7\\\\u01b8\\\\u01bc\\\\u01c4\\\\u01c5\\\\u01c7\\\\u01c8\\\\u01ca\\\\u01cb\\\\u01cd\\\\u01cf\\\\u01d1\\\\u01d3\\\\u01d5\\\\u01d7\\\\u01d9\\\\u01db\\\\u01de\\\\u01e0\\\\u01e2\\\\u01e4\\\\u01e6\\\\u01e8\\\\u01ea\\\\u01ec\\\\u01ee\\\\u01f1\\\\u01f2\\\\u01f4\\\\u01f6-\\\\u01f8\\\\u01fa\\\\u01fc\\\\u01fe\\\\u0200\\\\u0202\\\\u0204\\\\u0206\\\\u0208\\\\u020a\\\\u020c\\\\u020e\\\\u0210\\\\u0212\\\\u0214\\\\u0216\\\\u0218\\\\u021a\\\\u021c\\\\u021e\\\\u0220\\\\u0222\\\\u0224\\\\u0226\\\\u0228\\\\u022a\\\\u022c\\\\u022e\\\\u0230\\\\u0232\\\\u023a\\\\u023b\\\\u023d\\\\u023e\\\\u0241\\\\u0243-\\\\u0246\\\\u0248\\\\u024a\\\\u024c\\\\u024e';\n\n\n/**\n * Regular expression to match Unicode words\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_WORD = new RegExp(\n '(?:[' + upperCaseLetter + '][' + diacriticalMark + ']*)?(?:[' + lowerCaseLetter + '][' + diacriticalMark + ']*)+|\\\n(?:[' + upperCaseLetter + '][' + diacriticalMark + ']*)+(?![' + lowerCaseLetter + '])|\\\n[' + digit + ']+|\\\n[' + dingbatBlock + ']|\\\n[^' + nonCharacter + generalPunctuationBlock + whitespace + ']+', 'g');\n\n/**\n * Regular expression to match words from Basic Latin and Latin-1 Supplement blocks\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_LATIN_WORD = /[A-Z\\xC0-\\xD6\\xD8-\\xDE]?[a-z\\xDF-\\xF6\\xF8-\\xFF]+|[A-Z\\xC0-\\xD6\\xD8-\\xDE]+(?![a-z\\xDF-\\xF6\\xF8-\\xFF])|\\d+/g;\n\n/**\n * Regular expression to match alpha characters\n *\n * @see http://stackoverflow.com/a/22075070/1894471\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_ALPHA = new RegExp('^(?:[' + lowerCaseLetter + upperCaseLetter + '][' + diacriticalMark + ']*)+$');\n\n/**\n * Regular expression to match alpha and digit characters\n *\n * @see http://stackoverflow.com/a/22075070/1894471\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_ALPHA_DIGIT = new RegExp('^((?:[' + lowerCaseLetter + upperCaseLetter + '][' + diacriticalMark + ']*)|[' + digit + '])+$');\n\n/**\n * Regular expression to match Extended ASCII characters, i.e. the first 255\n *\n * @type {RegExp}\n * @ignore\n */\nexport const REGEXP_EXTENDED_ASCII = /^[\\x00-\\xFF]*$/;","/**\n * Verifies if `value` is `undefined` or `null` and returns `defaultValue`. In other case returns `value`.\n *\n * @ignore\n * @function nilDefault\n * @param {*} value The value to verify.\n * @param {*} defaultValue The default value.\n * @return {*} Returns `defaultValue` if `value` is `undefined` or `null`, otherwise `defaultValue`.\n */\nexport default function nilDefault(value, defaultValue) {\n return value == null ? defaultValue : value;\n}","import isNil from 'helper/object/is_nil';\nimport isString from 'query/is_string';\n\n/**\n * Get the string representation of the `value`.\n * Converts the `value` to string.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @return {string|null} Returns the string representation of `value`.\n */\nexport default function toString(value) {\n if (isNil(value)) {\n return null;\n }\n if (isString(value)) {\n return value;\n }\n return String(value);\n}","import { REGEXP_EXTENDED_ASCII, REGEXP_LATIN_WORD, REGEXP_WORD } from 'helper/reg_exp/const_extended';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport nilDefault from 'helper/undefined/nil_default';\nimport toString from 'helper/string/to_string';\n\n/**\n * Splits `subject` into an array of words.\n *\n * @function words\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into words.\n * @param {string|RegExp} [pattern] The pattern to watch words. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {Array} Returns the array of words.\n * @example\n * v.words('gravity can cross dimensions');\n * // => ['gravity', 'can', 'cross', 'dimensions']\n *\n * v.words('GravityCanCrossDimensions');\n * // => ['Gravity', 'Can', 'Cross', 'Dimensions']\n *\n * v.words('Gravity - can cross dimensions!');\n * // => ['Gravity', 'can', 'cross', 'dimensions']\n *\n * v.words('Earth gravity', /[^\\s]+/g);\n * // => ['Earth', 'gravity']\n */\nexport default function words(subject, pattern, flags) {\n const subjectString = coerceToString(subject);\n let patternRegExp;\n if (isNil(pattern)) {\n patternRegExp = REGEXP_EXTENDED_ASCII.test(subjectString) ? REGEXP_LATIN_WORD : REGEXP_WORD;\n } else if (pattern instanceof RegExp) {\n patternRegExp = pattern;\n } else {\n const flagsString = toString(nilDefault(flags, ''));\n patternRegExp = new RegExp(toString(pattern), flagsString);\n }\n return nilDefault(subjectString.match(patternRegExp), []);\n}","import capitalize from 'case/capitalize';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Transforms the `word` into camel case chunk.\n *\n * @param {string} word The word string\n * @param {number} index The index of the word in phrase.\n * @return {string} The transformed word.\n * @ignore\n */\nfunction wordToCamel(word, index) {\n return index === 0 ? lowerCase(word) : capitalize(word, true);\n}\n\n/**\n * Converts the `subject` to camel case.\n *\n * @function camelCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to camel case.\n * @return {string} The camel case string.\n * @example\n * v.camelCase('bird flight');\n * // => 'birdFlight'\n *\n * v.camelCase('BirdFlight');\n * // => 'birdFlight'\n *\n * v.camelCase('-BIRD-FLIGHT-');\n * // => 'birdFlight'\n */\nexport default function camelCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(wordToCamel).join('');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the first character of `subject` to lower case.\n *\n * @function decapitalize\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to decapitalize.\n * @return {string} Returns the decapitalized string.\n * @example\n * v.decapitalize('Sun');\n * // => 'sun'\n */\nexport default function decapitalize(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return subjectString;\n }\n return subjectString.substr(0, 1).toLowerCase() + subjectString.substr(1);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Converts the `subject` to kebab case,\n * also called spinal case or lisp case.\n *\n * @function kebabCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to kebab case.\n * @return {string} Returns the kebab case string.\n * @example\n * v.kebabCase('goodbye blue sky');\n * // => 'goodbye-blue-sky'\n *\n * v.kebabCase('GoodbyeBlueSky');\n * // => 'goodbye-blue-sky'\n *\n * v.kebabCase('-Goodbye-Blue-Sky-');\n * // => 'goodbye-blue-sky'\n */\nexport default function kebabCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(lowerCase).join('-');\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport lowerCase from 'case/lower_case';\nimport words from 'split/words';\n\n/**\n * Converts the `subject` to snake case.\n *\n * @function snakeCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to snake case.\n * @return {string} Returns the snake case string.\n * @example\n * v.snakeCase('learning to fly');\n * // => 'learning_to_fly'\n *\n * v.snakeCase('LearningToFly');\n * // => 'learning_to_fly'\n *\n * v.snakeCase('-Learning-To-Fly-');\n * // => 'learning_to_fly'\n */\nexport default function snakeCase(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n return words(subjectString).map(lowerCase).join('_');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Converts the `subject` to upper case.\n *\n * @function upperCase\n * @static\n * @since 1.0.0\n * @memberOf Case\n * @param {string} [subject=''] The string to convert to upper case.\n * @return {string} Returns the upper case string.\n * @example\n * v.upperCase('school');\n * // => 'SCHOOL'\n */\nexport default function upperCase(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.toUpperCase();\n}","/**\n * Clip the number to interval `downLimit` to `upLimit`.\n *\n * @ignore\n * @function clipNumber\n * @param {number} value The number to clip\n * @param {number} downLimit The down limit\n * @param {number} upLimit The upper limit\n * @return {number} The clipped number\n */\nexport default function clipNumber(value, downLimit, upLimit) {\n if (value <= downLimit) {\n return downLimit;\n }\n if (value >= upLimit) {\n return upLimit;\n }\n return value;\n}","/**\n * Max save integer value\n *\n * @ignore\n * @type {number}\n */\nexport const MAX_SAFE_INTEGER = 0x1fffffffffffff;","import { MAX_SAFE_INTEGER } from 'helper/number/const';\n\n/**\n * Transforms `value` to an integer.\n *\n * @ignore\n * @function toInteger\n * @param {number} value The number to transform.\n * @returns {number} Returns the transformed integer.\n */\nexport default function toInteger(value) {\n if (value === Infinity) {\n return MAX_SAFE_INTEGER;\n }\n if (value === -Infinity) {\n return - MAX_SAFE_INTEGER;\n }\n return ~~value;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Truncates `subject` to a new `length`.\n *\n * @function truncate\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to truncate.\n * @param {int} length The length to truncate the string.\n * @param {string} [end='...'] The string to be added at the end.\n * @return {string} Returns the truncated string.\n * @example\n * v.truncate('Once upon a time', 7);\n * // => 'Once...'\n *\n * v.truncate('Good day, Little Red Riding Hood', 14, ' (...)');\n * // => 'Good day (...)'\n *\n * v.truncate('Once upon', 10);\n * // => 'Once upon'\n */\nexport default function truncate(subject, length, end) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? subjectString.length : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const endString = coerceToString(end, '...');\n if (lengthInt >= subjectString.length) {\n return subjectString;\n }\n return subjectString.substr(0, length - endString.length) + endString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Access a character from `subject` at specified `position`.\n *\n * @function charAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {numbers} position The position to get the character.\n * @return {string} Returns the character at specified position.\n * @example\n * v.charAt('helicopter', 0);\n * // => 'h'\n *\n * v.charAt('helicopter', 1);\n * // => 'e'\n */\nexport default function charAt(subject, position) {\n const subjectString = coerceToString(subject);\n return subjectString.charAt(position);\n}","const HIGH_SURROGATE_START = 0xD800;\nconst HIGH_SURROGATE_END = 0xDBFF;\nconst LOW_SURROGATE_START = 0xDC00;\nconst LOW_SURROGATE_END = 0xDFFF;\n\n/**\n * Checks if `codePoint` is a high-surrogate number from range 0xD800 to 0xDBFF.\n *\n * @ignore\n * @param {number} codePoint The code point number to be verified\n * @return {boolean} Returns a boolean whether `codePoint` is a high-surrogate number.\n */\nexport function isHighSurrogate(codePoint) {\n return codePoint >= HIGH_SURROGATE_START && codePoint <= HIGH_SURROGATE_END;\n}\n\n/**\n * Checks if `codePoint` is a low-surrogate number from range 0xDC00 to 0xDFFF.\n *\n * @ignore\n * @param {number} codePoint The code point number to be verified\n * @return {boolean} Returns a boolean whether `codePoint` is a low-surrogate number.\n */\nexport function isLowSurrogate(codePoint) {\n return codePoint >= LOW_SURROGATE_START && codePoint <= LOW_SURROGATE_END;\n}\n\n/**\n * Get the astral code point number based on surrogate pair numbers.\n *\n * @ignore\n * @param {number} highSurrogate The high-surrogate code point number.\n * @param {number} lowSurrogate The low-surrogate code point number.\n * @return {number} Returns the astral symbol number.\n */\nexport function getAstralNumberFromSurrogatePair(highSurrogate, lowSurrogate) {\n return (highSurrogate - HIGH_SURROGATE_START) * 0x400 + lowSurrogate - LOW_SURROGATE_START + 0x10000;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Get the number representation of the `value`.\n * Converts the `value` to number.\n * If `value` is `null` or `undefined`, return `defaultValue`.\n *\n * @ignore\n * @function toString\n * @param {*} value The value to convert.\n * @param {*} [defaultValue=''] The default value to return.\n * @return {number|null} Returns the number representation of `value`. Returns `defaultValue` if `value` is\n * `null` or `undefined`.\n */\nexport default function coerceToNumber(value, defaultValue = 0) {\n if (isNil(value)) {\n return defaultValue;\n }\n if (typeof value === 'number') {\n return value;\n }\n return Number(value);\n}","/**\n * If `value` is `NaN`, return `defaultValue`. In other case returns `value`.\n *\n * @ignore\n * @function nanDefault\n * @param {*} value The value to verify.\n * @param {*} defaultValue The default value.\n * @return {*} Returns `defaultValue` if `value` is `NaN`, otherwise `defaultValue`.\n */\nexport default function nanDefault(value, defaultValue) {\n return value !== value ? defaultValue : value;\n}","import { getAstralNumberFromSurrogatePair, isHighSurrogate, isLowSurrogate } from 'helper/string/surrogate_pair';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nanDefault from 'helper/number/nan_default';\n\n/**\n * Get the Unicode code point value of the character at `position`.
\n * If a valid UTF-16 \n * surrogate pair starts at `position`, the\n * astral code point\n * value at `position` is returned.\n *\n * @function codePointAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} position The position to get the code point number.\n * @return {number} Returns a non-negative number less than or equal to `0x10FFFF`.\n * @example\n * v.codePointAt('rain', 1);\n * // => 97, or 0x0061\n *\n * v.codePointAt('\\uD83D\\uDE00 is smile', 0); // or '😀 is smile'\n * // => 128512, or 0x1F600\n */\nexport default function codePointAt(subject, position) {\n const subjectString = coerceToString(subject);\n const subjectStringLength = subjectString.length;\n let positionNumber = coerceToNumber(position);\n positionNumber = nanDefault(positionNumber, 0);\n if (positionNumber < 0 || positionNumber >= subjectStringLength) {\n return undefined;\n }\n const firstCodePoint = subjectString.charCodeAt(positionNumber);\n let secondCodePoint;\n if (isHighSurrogate(firstCodePoint) && subjectStringLength > positionNumber + 1) {\n secondCodePoint = subjectString.charCodeAt(positionNumber + 1);\n if (isLowSurrogate(secondCodePoint)) {\n return getAstralNumberFromSurrogatePair(firstCodePoint, secondCodePoint);\n }\n }\n return firstCodePoint;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Extracts the first `length` characters from `subject`.\n *\n * @function first\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {int} [length=1] The number of characters to extract.\n * @return {string} Returns the first characters string.\n * @example\n * v.first('helicopter');\n * // => 'h'\n *\n * v.first('vehicle', 2);\n * // => 've'\n *\n * v.first('car', 5);\n * // => 'car'\n */\nexport default function first(subject, length) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 1 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n if (subjectString.length <= lengthInt) {\n return subjectString;\n }\n return subjectString.substr(0, lengthInt);\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nanDefault from 'helper/number/nan_default';\nimport { REGEXP_UNICODE_CHARACTER } from 'helper/reg_exp/const';\n\n/**\n * Get a grapheme from `subject` at specified `position` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function graphemeAt\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} position The position to get the grapheme.\n * @return {string} Returns the grapheme at specified position.\n * @example\n * v.graphemeAt('\\uD835\\uDC00\\uD835\\uDC01', 0); // or '𝐀𝐁'\n * // => 'A'\n *\n * v.graphemeAt('cafe\\u0301', 3); // or 'café'\n * // => 'é'\n */\nexport default function graphemeAt(subject, position) {\n const subjectString = coerceToString(subject);\n let positionNumber = coerceToNumber(position);\n let graphemeMatch;\n let graphemeMatchIndex = 0;\n positionNumber = nanDefault(positionNumber, 0);\n while ((graphemeMatch = REGEXP_UNICODE_CHARACTER.exec(subjectString)) !== null) {\n if (graphemeMatchIndex === positionNumber) {\n REGEXP_UNICODE_CHARACTER.lastIndex = 0;\n return graphemeMatch[0];\n }\n graphemeMatchIndex++;\n }\n return '';\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Extracts the last `length` characters from `subject`.\n *\n * @function last\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {int} [length=1] The number of characters to extract.\n * @return {string} Returns the last characters string.\n * @example\n * v.last('helicopter');\n * // => 'r'\n *\n * v.last('vehicle', 2);\n * // => 'le'\n *\n * v.last('car', 5);\n * // => 'car'\n */\nexport default function last(subject, length) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 1 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n if (subjectString.length <= lengthInt) {\n return subjectString;\n }\n return subjectString.substr(subjectString.length - lengthInt, lengthInt);\n}","import { REGEXP_EXTENDED_ASCII, REGEXP_LATIN_WORD, REGEXP_WORD } from 'helper/reg_exp/const_extended';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Truncates `subject` to a new `length` and does not break the words. Guarantees that the truncated string is no longer\n * than `length`.\n *\n * @static\n * @function prune\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to prune.\n * @param {int} length The length to prune the string.\n * @param {string} [end='...'] The string to be added at the end.\n * @return {string} Returns the pruned string.\n * @example\n * v.prune('Once upon a time', 7);\n * // => 'Once...'\n *\n * v.prune('Good day, Little Red Riding Hood', 16, ' (more)');\n * // => 'Good day (more)'\n *\n * v.prune('Once upon', 10);\n * // => 'Once upon'\n */\nexport default function prune(subject, length, end) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? subjectString.length : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const endString = coerceToString(end, '...');\n if (lengthInt >= subjectString.length) {\n return subjectString;\n }\n const pattern = REGEXP_EXTENDED_ASCII.test(subjectString) ? REGEXP_LATIN_WORD : REGEXP_WORD;\n let truncatedLength = 0;\n subjectString.replace(pattern, function(word, offset) {\n const wordInsertLength = offset + word.length;\n if (wordInsertLength <= lengthInt - endString.length) {\n truncatedLength = wordInsertLength;\n }\n });\n return subjectString.substr(0, truncatedLength) + endString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position up to `end` position. The character at `end` position is not\n * included.\n *\n * @function slice\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction. If negative use `subject.length + start`.\n * @param {number} [end=subject.length] The position to end extraction. If negative use `subject.length + end`.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.slice()`\n * @example\n * v.slice('miami', 1);\n * // => 'iami'\n *\n * v.slice('florida', -4);\n * // => 'rida'\n *\n * v.slice('florida', 1, 4);\n * // => \"lor\"\n */\nexport default function slice(subject, start, end) {\n return coerceToString(subject).slice(start, end);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position a number of `length` characters.\n *\n * @function substr\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction.\n * @param {number} [length=subject.endOfString] The number of characters to extract. If omitted, extract to the end of `subject`.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.substr()`\n * @example\n * v.substr('infinite loop', 9);\n * // => 'loop'\n *\n * v.substr('dreams', 2, 2);\n * // => 'ea'\n */\nexport default function substr(subject, start, length) {\n return coerceToString(subject).substr(start, length);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Extracts from `subject` a string from `start` position up to `end` position. The character at `end` position is not\n * included.\n *\n * @function substring\n * @static\n * @since 1.0.0\n * @memberOf Chop\n * @param {string} [subject=''] The string to extract from.\n * @param {number} start The position to start extraction.\n * @param {number} [end=subject.length] The position to end extraction.\n * @return {string} Returns the extracted string.\n * @note Uses native `String.prototype.substring()`\n * @example\n * v.substring('beach', 1);\n * // => 'each'\n *\n * v.substring('ocean', 1, 3);\n * // => 'ea'\n */\nexport default function substring(subject, start, end) {\n return coerceToString(subject).substring(start, end);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the characters in `subject`.
\n *\n * @function count\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count characters.\n * @return {number} Returns the number of characters in `subject`.\n * @example\n * v.count('rain');\n * // => 4\n */\nexport default function count(subject) {\n return coerceToString(subject).length;\n}","import { REGEXP_COMBINING_MARKS, REGEXP_SURROGATE_PAIRS } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the graphemes in `subject` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function countGraphemes\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count graphemes.\n * @return {number} Returns the number of graphemes in `subject`.\n * @example\n * v.countGraphemes('cafe\\u0301'); // or 'café'\n * // => 4\n *\n * v.countGraphemes('\\uD835\\uDC00\\uD835\\uDC01'); // or '𝐀𝐁'\n * // => 2\n *\n * v.countGraphemes('rain');\n * // => 4\n */\nexport default function countGrapheme(subject) {\n return coerceToString(subject)\n .replace(REGEXP_COMBINING_MARKS, '*')\n .replace(REGEXP_SURROGATE_PAIRS, '*')\n .length;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Counts the number of `substring` appearances in `subject`.\n *\n * @function countSubstrings\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string where to count.\n * @param {string} substring The substring to be counted.\n * @return {number} Returns the number of `substring` appearances.\n * @example\n * v.countSubstrings('bad boys, bad boys whatcha gonna do?', 'boys');\n * // => 2\n *\n * v.countSubstrings('every dog has its day', 'cat');\n * // => 0\n */\nexport default function countSubstrings(subject, substring) {\n const subjectString = coerceToString(subject);\n const substringString = coerceToString(substring);\n const substringLength = substringString.length;\n let count = 0;\n let matchIndex = 0;\n if (subjectString === '' || substringString === '') {\n return count;\n }\n do {\n matchIndex = subjectString.indexOf(substringString, matchIndex);\n if (matchIndex !== -1) {\n count++;\n matchIndex += substringLength;\n }\n } while (matchIndex !== -1);\n return count;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\nconst reduce = Array.prototype.reduce;\n\n/**\n * Counts the characters in `subject` for which `predicate` returns truthy.\n *\n * @function countWhere\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to count characters.\n * @param {Function} predicate The predicate function invoked on each character with parameters `(character, index, string)`.\n * @param {Object} [context] The context to invoke the `predicate`.\n * @return {number} Returns the number of characters for which `predicate` returns truthy.\n * @example\n * v.countWhere('hola!', v.isAlpha);\n * // => 4\n *\n * v.countWhere('2022', function(character, index, str) {\n * return character === '2';\n * });\n * // => 3\n */\nexport default function countWhere(subject, predicate, context) {\n const subjectString = coerceToString(subject);\n if (subjectString === '' || typeof predicate !== 'function') {\n return 0;\n }\n const predicateWithContext = predicate.bind(context);\n return reduce.call(subjectString, function(countTruthy, character, index) {\n return predicateWithContext(character, index, subjectString) ? countTruthy + 1 : countTruthy;\n }, 0);\n}","import words from 'split/words';\n\n/**\n * Counts the number of words in `subject`.\n *\n * @function countWords\n * @static\n * @since 1.0.0\n * @memberOf Count\n * @param {string} [subject=''] The string to split into words.\n * @param {string|RegExp} [pattern] The pattern to watch words. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {number} Returns the number of words.\n * @example\n * v.countWords('gravity can cross dimensions');\n * // => 4\n *\n * v.countWords('GravityCanCrossDimensions');\n * // => 4\n *\n * v.countWords('Gravity - can cross dimensions!');\n * // => 4\n *\n * v.words('Earth gravity', /[^\\s]+/g);\n * // => 2\n */\nexport default function countWords(subject, pattern, flags) {\n return words(subject, pattern, flags).length;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * The current index.\n *\n * @ignore\n * @name ReplacementIndex#index\n * @type {number}\n * @return {ReplacementIndex} ReplacementIndex instance.\n */\nfunction ReplacementIndex() {\n this.index = 0;\n}\n\n/**\n * Increment the current index.\n *\n * @ignore\n * @return {undefined}\n */\nReplacementIndex.prototype.increment = function() {\n this.index++;\n};\n\n/**\n * Increment the current index by position.\n *\n * @ignore\n * @param {number} [position] The replacement position.\n * @return {undefined}\n */\nReplacementIndex.prototype.incrementOnEmptyPosition = function(position) {\n if (isNil(position)) {\n this.increment();\n }\n};\n\n/**\n * Get the replacement index by position.\n *\n * @ignore\n * @param {number} [position] The replacement position.\n * @return {number} The replacement index.\n */\nReplacementIndex.prototype.getIndexByPosition = function(position) {\n return isNil(position) ? this.index : position - 1;\n};\n\nexport default ReplacementIndex;","export default Object.freeze({\n // Type specifiers\n TYPE_INTEGER : 'i',\n TYPE_INTEGER_BINARY : 'b',\n TYPE_INTEGER_ASCII_CHARACTER : 'c',\n TYPE_INTEGER_DECIMAL : 'd',\n TYPE_INTEGER_OCTAL : 'o',\n TYPE_INTEGER_UNSIGNED_DECIMAL : 'u',\n TYPE_INTEGER_HEXADECIMAL : 'x',\n TYPE_INTEGER_HEXADECIMAL_UPPERCASE : 'X',\n TYPE_FLOAT_SCIENTIFIC : 'e',\n TYPE_FLOAT_SCIENTIFIC_UPPERCASE : 'E',\n TYPE_FLOAT : 'f',\n TYPE_FLOAT_SHORT : 'g',\n TYPE_FLOAT_SHORT_UPPERCASE : 'G',\n TYPE_STRING : 's',\n\n // Simple literals\n LITERAL_PERCENT : '%',\n LITERAL_SINGLE_QUOTE : \"'\",\n LITERAL_PLUS : '+',\n LITERAL_MINUS : '-',\n LITERAL_PERCENT_SPECIFIER : '%%',\n\n // Radix constants to format numbers\n RADIX_BINARY : 2,\n RADIX_OCTAL : 8,\n RADIX_DECIMAL : 10,\n RADIX_HEXADECIMAL : 16\n});","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Repeats the `subject` number of `times`.\n *\n * @function repeat\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to repeat.\n * @param {number} [times=1] The number of times to repeat.\n * @return {string} Returns the repeated string.\n * @example\n * v.repeat('w', 3);\n * // => 'www'\n *\n * v.repeat('world', 0);\n * // => ''\n */\nexport default function repeat(subject, times) {\n let subjectString = coerceToString(subject);\n let timesInt = isNil(times) ? 1 : clipNumber(toInteger(times), 0, MAX_SAFE_INTEGER);\n let repeatString = '';\n while (timesInt) {\n if (timesInt & 1) {\n repeatString += subjectString;\n }\n if (timesInt > 1) {\n subjectString += subjectString;\n }\n timesInt >>= 1;\n }\n return repeatString;\n}","import repeat from 'manipulate/repeat';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Creates the padding string.\n *\n * @ignore\n * @param {string} padCharacters The characters to create padding string.\n * @param {number} length The padding string length.\n * @return {string} The padding string.\n */\nexport default function buildPadding(padCharacters, length) {\n const padStringRepeat = toInteger(length / padCharacters.length);\n const padStringRest = length % padCharacters.length;\n return repeat(padCharacters, padStringRepeat + padStringRest).substr(0, length);\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` from left to a new `length`.\n *\n * @function padLeft\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to left pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the left padded string.\n * @example\n * v.padLeft('dog', 5);\n * // => ' dog'\n *\n * v.padLeft('bird', 6, '-');\n * // => '--bird-'\n *\n * v.padLeft('cat', 6, '-=');\n * // => '-=-cat'\n */\nexport default function padLeft(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n return buildPadding(padString, lengthInt - subjectString.length) + subjectString;\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` from right to a new `length`.\n *\n * @function padRight\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to right pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the right padded string.\n * @example\n * v.padRight('dog', 5);\n * // => 'dog '\n *\n * v.padRight('bird', 6, '-');\n * // => 'bird--'\n *\n * v.padRight('cat', 6, '-=');\n * // => 'cat-=-'\n */\nexport default function padRight(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n return subjectString + buildPadding(padString, lengthInt - subjectString.length);\n}","import Const from 'helper/format/const';\nimport isNil from 'helper/object/is_nil';\nimport padLeft from 'manipulate/pad_left';\nimport padRight from 'manipulate/pad_right';\n\n/**\n * Aligns and pads `subject` string.\n *\n * @ignore\n * @param {string} subject The subject string.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the aligned and padded string.\n */\nexport default function alignAndPad(subject, conversion) {\n const width = conversion.width;\n if (isNil(width) || subject.length >= width) {\n return subject;\n }\n const padType = conversion.alignmentSpecifier === Const.LITERAL_MINUS ? padRight : padLeft;\n return padType(subject, width, conversion.getPaddingCharacter());\n}","import Const from 'helper/format/const';\n\n/**\n * Add sign to the formatted number.\n *\n * @ignore\n * @name addSignToFormattedNumber\n * @param {number} replacementNumber The number to be replaced.\n * @param {string} formattedReplacement The formatted version of number.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted number string with a sign.\n */\nexport default function addSignToFormattedNumber(replacementNumber, formattedReplacement, conversion) {\n if (conversion.signSpecifier === Const.LITERAL_PLUS && replacementNumber >= 0) {\n formattedReplacement = Const.LITERAL_PLUS + formattedReplacement;\n }\n return formattedReplacement;\n}","import addSignToFormattedNumber from 'helper/format/type_format/add_sign_to_formatted_number';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport Const from 'helper/format/const';\nimport { REGEXP_TRAILING_ZEROS } from 'helper/reg_exp/const';\nimport toString from 'helper/string/coerce_to_string';\n\n/**\n * Formats a float type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function float(replacement, conversion) {\n let replacementNumber = parseFloat(replacement);\n let formattedReplacement;\n if (isNaN(replacementNumber)) {\n replacementNumber = 0;\n }\n const precision = coerceToNumber(conversion.precision, 6);\n switch (conversion.typeSpecifier) {\n case Const.TYPE_FLOAT:\n formattedReplacement = replacementNumber.toFixed(precision);\n break;\n case Const.TYPE_FLOAT_SCIENTIFIC:\n formattedReplacement = replacementNumber.toExponential(precision);\n break;\n case Const.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:\n formattedReplacement = replacementNumber.toExponential(precision).toUpperCase();\n break;\n case Const.TYPE_FLOAT_SHORT:\n case Const.TYPE_FLOAT_SHORT_UPPERCASE:\n formattedReplacement = formatFloatAsShort(replacementNumber, precision, conversion);\n break;\n }\n formattedReplacement = addSignToFormattedNumber(replacementNumber, formattedReplacement, conversion);\n return toString(formattedReplacement);\n}\n\n/**\n * Formats the short float.\n *\n * @ignore\n * @param {number} replacementNumber The number to format.\n * @param {number} precision The precision to format the float.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted short float.\n */\nfunction formatFloatAsShort(replacementNumber, precision, conversion) {\n if (replacementNumber === 0) {\n return '0';\n }\n const nonZeroPrecision = precision === 0 ? 1 : precision;\n let formattedReplacement = replacementNumber\n .toPrecision(nonZeroPrecision)\n .replace(REGEXP_TRAILING_ZEROS, '');\n if (conversion.typeSpecifier === Const.TYPE_FLOAT_SHORT_UPPERCASE) {\n formattedReplacement = formattedReplacement.toUpperCase();\n }\n return formattedReplacement;\n}","import Const from 'helper/format/const';\nimport toString from 'helper/string/coerce_to_string';\n\n/**\n * Formats an integer type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function integerBase(replacement, conversion) {\n let integer = parseInt(replacement);\n if (isNaN(integer)) {\n integer = 0;\n }\n integer = integer >>> 0;\n switch (conversion.typeSpecifier) {\n case Const.TYPE_INTEGER_ASCII_CHARACTER:\n integer = String.fromCharCode(integer);\n break;\n case Const.TYPE_INTEGER_BINARY:\n integer = integer.toString(Const.RADIX_BINARY);\n break;\n case Const.TYPE_INTEGER_OCTAL:\n integer = integer.toString(Const.RADIX_OCTAL);\n break;\n case Const.TYPE_INTEGER_HEXADECIMAL:\n integer = integer.toString(Const.RADIX_HEXADECIMAL);\n break;\n case Const.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:\n integer = integer.toString(Const.RADIX_HEXADECIMAL).toUpperCase();\n break;\n }\n return toString(integer);\n}","import addSignToFormattedNumber from 'helper/format/type_format/add_sign_to_formatted_number';\nimport toString from 'helper/string/to_string';\n\n/**\n * Formats a decimal integer type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\n\nexport default function integerDecimal(replacement, conversion) {\n let integer = parseInt(replacement);\n if (isNaN(integer)) {\n integer = 0;\n }\n return addSignToFormattedNumber(integer, toString(integer), conversion);\n}","import isNil from 'helper/object/is_nil';\nimport truncate from 'chop/truncate';\n\n/**\n * Formats a string type according to specifiers.\n *\n * @ignore\n * @param {string} replacement The string to be formatted.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the formatted string.\n */\nexport default function stringFormat(replacement, conversion) {\n let formattedReplacement = replacement;\n const precision = conversion.precision;\n if (!isNil(precision) && formattedReplacement.length > precision) {\n formattedReplacement = truncate(formattedReplacement, precision, '');\n }\n return formattedReplacement;\n}","import alignAndPad from 'helper/format/align_and_pad';\nimport Const from 'helper/format/const';\nimport formatFloat from 'helper/format/type_format/float';\nimport formatIntegerBase from 'helper/format/type_format/integer_base';\nimport formatIntegerDecimal from 'helper/format/type_format/integer_decimal';\nimport formatString from 'helper/format/type_format/string';\n\n/**\n * Returns the computed string based on format specifiers.\n *\n * @ignore\n * @name computeReplacement\n * @param {string} replacement The replacement value.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {string} Returns the computed string.\n */\nexport default function compute(replacement, conversion) {\n let formatFunction;\n switch (conversion.typeSpecifier) {\n case Const.TYPE_STRING:\n formatFunction = formatString;\n break;\n case Const.TYPE_INTEGER_DECIMAL:\n case Const.TYPE_INTEGER:\n formatFunction = formatIntegerDecimal;\n break;\n case Const.TYPE_INTEGER_ASCII_CHARACTER:\n case Const.TYPE_INTEGER_BINARY:\n case Const.TYPE_INTEGER_OCTAL:\n case Const.TYPE_INTEGER_HEXADECIMAL:\n case Const.TYPE_INTEGER_HEXADECIMAL_UPPERCASE:\n case Const.TYPE_INTEGER_UNSIGNED_DECIMAL:\n formatFunction = formatIntegerBase;\n break;\n case Const.TYPE_FLOAT:\n case Const.TYPE_FLOAT_SCIENTIFIC:\n case Const.TYPE_FLOAT_SCIENTIFIC_UPPERCASE:\n case Const.TYPE_FLOAT_SHORT:\n case Const.TYPE_FLOAT_SHORT_UPPERCASE:\n formatFunction = formatFloat;\n break;\n }\n const formattedString = formatFunction(replacement, conversion);\n return alignAndPad(formattedString, conversion);\n}","import Const from 'helper/format/const';\nimport nilDefault from 'helper/undefined/nil_default';\n\n/**\n * Construct the new conversion specification object.\n *\n * @ignore\n * @param {Object} properties An object with properties to initialize.\n * @return {ConversionSpecification} ConversionSpecification instance.\n */\nfunction ConversionSpecification(properties) {\n\n /**\n * The percent characters from conversion specification.\n *\n * @ignore\n * @name ConversionSpecification#percent\n * @type {string}\n */\n this.percent = properties.percent;\n\n /**\n * The sign specifier to force a sign to be used on a number.\n *\n * @ignore\n * @name ConversionSpecification#signSpecifier\n * @type {string}\n */\n this.signSpecifier = properties.signSpecifier;\n\n /**\n * The padding specifier that says what padding character will be used.\n *\n * @ignore\n * @name ConversionSpecification#paddingSpecifier\n * @type {string}\n */\n this.paddingSpecifier = properties.paddingSpecifier;\n\n /**\n * The alignment specifier that says if the result should be left-justified or right-justified.\n *\n * @ignore\n * @name ConversionSpecification#alignmentSpecifier\n * @type {string}\n */\n this.alignmentSpecifier = properties.alignmentSpecifier;\n\n /**\n * The width specifier how many characters this conversion should result in.\n *\n * @ignore\n * @name ConversionSpecification#width\n * @type {number}\n */\n this.width = properties.width;\n\n /**\n * The precision specifier says how many decimal digits should be displayed for floating-point numbers.\n *\n * @ignore\n * @name ConversionSpecification#precision\n * @type {number}\n */\n this.precision = properties.precision;\n\n /**\n * The type specifier says what type the argument data should be treated as.\n *\n * @ignore\n * @name ConversionSpecification#typeSpecifier\n * @type {string}\n */\n this.typeSpecifier = properties.typeSpecifier;\n}\n\n\n/**\n * Check if the conversion specification is a percent literal \"%%\".\n *\n * @ignore\n * @return {boolean} Returns true if the conversion is a percent literal, false otherwise.\n */\nConversionSpecification.prototype.isPercentLiteral = function() {\n return Const.LITERAL_PERCENT_SPECIFIER === this.percent;\n};\n\n/**\n * Get the padding character from padding specifier.\n *\n * @ignore\n * @returns {string} Returns the padding character.\n */\nConversionSpecification.prototype.getPaddingCharacter = function() {\n let paddingCharacter = nilDefault(this.paddingSpecifier, ' ');\n if (paddingCharacter.length === 2 && paddingCharacter[0] === Const.LITERAL_SINGLE_QUOTE) {\n paddingCharacter = paddingCharacter[1];\n }\n return paddingCharacter;\n};\n\nexport default ConversionSpecification;","import isNil from 'helper/object/is_nil';\n\n/**\n * Validates the specifier type and replacement position.\n *\n * @ignore\n * @throws {Error} Throws an exception on insufficient arguments or unknown specifier.\n * @param {number} index The index of the matched specifier.\n * @param {number} replacementsLength The number of replacements.\n * @param {ConversionSpecification} conversion The conversion specification object.\n * @return {undefined}\n */\nexport default function validate(index, replacementsLength, conversion) {\n if (isNil(conversion.typeSpecifier)) {\n throw new Error('sprintf(): Unknown type specifier');\n }\n if (index > replacementsLength - 1) {\n throw new Error('sprintf(): Too few arguments');\n }\n if (index < 0) {\n throw new Error('sprintf(): Argument number must be greater than zero');\n }\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport computeReplacement from 'helper/format/replacement/compute';\nimport ConversionSpecification from 'helper/format/conversion_specification';\nimport validateReplacement from 'helper/format/replacement/validate';\n\n/**\n * Return the replacement for regular expression match of the conversion specification.\n *\n * @ignore\n * @name matchReplacement\n * @param {ReplacementIndex} replacementIndex The replacement index object.\n * @param {string[]} replacements The array of replacements.\n * @param {string} conversionSpecification The conversion specification.\n * @param {string} percent The percent characters from conversion specification.\n * @param {string} position The position to insert the replacement.\n * @param {string} signSpecifier The sign specifier to force a sign to be used on a number.\n * @param {string} paddingSpecifier The padding specifier that says what padding character will be used.\n * @param {string} alignmentSpecifier The alignment specifier that says if the result should be left-justified or right-justified.\n * @param {string} widthSpecifier The width specifier how many characters this conversion should result in.\n * @param {string} precisionSpecifier The precision specifier says how many decimal digits should be displayed for floating-point numbers.\n * @param {string} typeSpecifier The type specifier says what type the argument data should be treated as.\n * @return {string} Returns the computed replacement.\n */\nexport default function match(replacementIndex, replacements, conversionSpecification, percent, position, signSpecifier,\n paddingSpecifier, alignmentSpecifier, widthSpecifier, precisionSpecifier, typeSpecifier) {\n const conversion = new ConversionSpecification({\n percent,\n signSpecifier,\n paddingSpecifier,\n alignmentSpecifier,\n width: coerceToNumber(widthSpecifier, null),\n precision: coerceToNumber(precisionSpecifier, null),\n typeSpecifier\n });\n if (conversion.isPercentLiteral()) {\n return conversionSpecification.slice(1);\n }\n const actualReplacementIndex = replacementIndex.getIndexByPosition(position);\n replacementIndex.incrementOnEmptyPosition(position);\n validateReplacement(actualReplacementIndex, replacements.length, conversion);\n return computeReplacement(replacements[actualReplacementIndex], conversion);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_CONVERSION_SPECIFICATION } from 'helper/reg_exp/const';\nimport ReplacementIndex from 'helper/format/replacement/index';\nimport replacementMatch from 'helper/format/replacement/match';\n\n/**\n * Produces a string according to `format`.\n *\n *

\n * `format` string is composed of zero or more directives: ordinary characters (not %), which are copied unchanged\n * to the output string and conversion specifications, each of which results in fetching zero or more subsequent\n * arguments.

\n *\n * Each conversion specification is introduced by the character %, and ends with a conversion\n * specifier. In between there may be (in this order) zero or more flags, an optional minimum field width\n * and an optional precision.
\n * The syntax is: ConversionSpecification = \"%\" { Flags }\n * [ MinimumFieldWidth ] [ Precision ] ConversionSpecifier, where curly braces { } denote repetition\n * and square brackets [ ] optionality.

\n *\n * By default, the arguments are used in the given order.
\n * For argument numbering and swapping, `%m$` (where `m` is a number indicating the argument order)\n * is used instead of `%` to specify explicitly which argument is taken. For instance `%1$s` fetches the 1st argument,\n * `%2$s` the 2nd and so on, no matter what position the conversion specification has in `format`.\n *

\n *\n * The flags
\n * The character % is followed by zero or more of the following flags:
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
+\n * A sign (+ or -) should always be placed before a number produced by a\n * signed conversion. By default a sign is used only for negative numbers.\n *
0The value should be zero padded.
(a space) The value should be space padded.
'Indicates alternate padding character, specified by prefixing it with a single quote '.
-The converted value is to be left adjusted on the field boundary (the default is right justification).
\n *\n * The minimum field width
\n * An optional decimal digit string (with nonzero first digit) specifying a minimum field width. If the converted\n * value has fewer characters than the field width, it will be padded with spaces on the left (or right, if the\n * left-adjustment flag has been given).

\n *\n * The precision
\n * An optional precision, in the form of a period `.` followed by an optional decimal digit string.
\n * This gives the number of digits to appear after the radix character for `e`, `E`, `f` and `F` conversions, the\n * maximum number of significant digits for `g` and `G` conversions or the maximum number of characters to be printed\n * from a string for `s` conversion.

\n *\n * The conversion specifier
\n * A specifier that mentions what type the argument should be treated as:\n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n *
`s`The string argument is treated as and presented as a string.
`d` `i`The integer argument is converted to signed decimal notation.
`b`The unsigned integer argument is converted to unsigned binary.
`c`The unsigned integer argument is converted to an ASCII character with that number.
`o`The unsigned integer argument is converted to unsigned octal.
`u`The unsigned integer argument is converted to unsigned decimal.
`x` `X`The unsigned integer argument is converted to unsigned hexadecimal. The letters `abcdef` are used for `x`\n * conversions; the letters `ABCDEF` are used for `X` conversions.
`f`\n * The float argument is rounded and converted to decimal notation in the style `[-]ddd.ddd`, where the number of\n * digits after the decimal-point character is equal to the precision specification. If the precision is missing,\n * it is taken as 6; if the precision is explicitly zero, no decimal-point character appears.\n * If a decimal point appears, at least one digit appears before it.\n *
`e` `E`\n * The float argument is rounded and converted in the style `[-]d.ddde±dd`, where there is one digit\n * before the decimal-point character and the number of digits after it is equal to the precision. If\n * the precision is missing, it is taken as `6`; if the precision is zero, no decimal-point character\n * appears. An `E` conversion uses the letter `E` (rather than `e`) to introduce the exponent.\n *
`g` `G`\n * The float argument is converted in style `f` or `e` (or `F` or `E` for `G` conversions). The precision specifies\n * the number of significant digits. If the precision is missing, `6` digits are given; if the\n * precision is zero, it is treated as `1`. Style `e` is used if the exponent from its conversion is less\n * than `-6` or greater than or equal to the precision. Trailing zeros are removed from the fractional\n * part of the result; a decimal point appears only if it is followed by at least one digit.\n *
`%`A literal `%` is written. No argument is converted. The complete conversion specification is `%%`.
\n *
\n *\n * @function sprintf\n * @static\n * @since 1.0.0\n * @memberOf Format\n * @param {string} [format=''] The format string.\n * @param {...*} replacements The replacements to produce the string.\n * @return {string} Returns the produced string.\n * @example\n * v.sprintf('%s, %s!', 'Hello', 'World');\n * // => 'Hello World!'\n *\n * v.sprintf('%s costs $%d', 'coffee', 2);\n * // => 'coffee costs $2'\n *\n * v.sprintf('%1$s %2$s %1$s %2$s, watcha gonna %3$s', 'bad', 'boys', 'do')\n * // => 'bad boys bad boys, watcha gonna do'\n *\n * v.sprintf('% 6s', 'bird');\n * // => ' bird'\n *\n * v.sprintf('% -6s', 'crab');\n * // => 'crab '\n *\n * v.sprintf(\"%'*5s\", 'cat');\n * // => '**cat'\n *\n * v.sprintf(\"%'*-6s\", 'duck');\n * // => 'duck**'\n *\n * v.sprintf('%d %i %+d', 15, -2, 25);\n * // => '15 -2 +25'\n *\n * v.sprintf(\"%06d\", 15);\n * // => '000015'\n *\n * v.sprintf('0b%b 0o%o 0x%X', 12, 9, 155);\n * // => '0b1100 0o11 0x9B'\n *\n * v.sprintf('%.2f', 10.469);\n * // => '10.47'\n *\n * v.sprintf('%.2e %g', 100.5, 0.455);\n * // => '1.01e+2 0.455'\n * \n */\nexport default function sprintf(format, ...replacements) {\n const formatString = coerceToString(format);\n if (formatString === '') {\n return formatString;\n }\n const boundReplacementMatch = replacementMatch.bind(undefined, new ReplacementIndex(), replacements);\n return formatString.replace(REGEXP_CONVERSION_SPECIFICATION, boundReplacementMatch);\n}","import nilDefault from 'helper/undefined/nil_default';\nimport sprintf from 'format/sprintf';\n\n/**\n * Produces a string according to `format`. Works exactly like sprintf(),\n * with the only difference that accepts the formatting arguments in an array `values`.
\n * See here `format` string specifications.\n *\n * @function vprintf\n * @static\n * @since 1.0.0\n * @memberOf Format\n * @param {string} [format=''] The format string.\n * @param {Array.} replacements The array of replacements to produce the string.\n * @return {string} Returns the produced string.\n * @example\n * v.vprintf('%s', ['Welcome'])\n * // => 'Welcome'\n *\n * v.vprintf('%s has %d apples', ['Alexandra', 3]);\n * // => 'Alexandra has 3 apples'\n */\nexport default function vprintf(format, replacements) {\n return sprintf(format, ...nilDefault(replacements, []));\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_HTML_SPECIAL_CHARACTERS } from 'helper/reg_exp/const';\n\nconst escapeCharactersMap = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n/**\n * Return the escaped version of `character`.\n *\n * @ignore\n * @param {string} character The character to be escape.\n * @return {string} The escaped version of character.\n */\nfunction replaceSpecialCharacter(character) {\n return escapeCharactersMap[character];\n}\n\n/**\n * Escapes HTML special characters < > & ' \" ` in subject.\n *\n * @function escapeHtml\n * @static\n * @since 1.0.0 \n * @memberOf Escape\n * @param {string} [subject=''] The string to escape.\n * @return {string} Returns the escaped string.\n * @example\n * v.escapeHtml('

wonderful world

');\n * // => '<p>wonderful world</p>'\n */\nexport default function escapeHtml(subject) {\n return coerceToString(subject).replace(REGEXP_HTML_SPECIAL_CHARACTERS, replaceSpecialCharacter);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_SPECIAL_CHARACTERS } from 'helper/reg_exp/const';\n\n/**\n * Escapes the regular expression special characters `- [ ] / { } ( ) * + ? . \\ ^ $ |` in `subject`.\n *\n * @function escapeRegExp\n * @static\n * @since 1.0.0\n * @memberOf Escape\n * @param {string} [subject=''] The string to escape.\n * @return {string} Returns the escaped string.\n * @example\n * v.escapeRegExp('(hours)[minutes]{seconds}');\n * // => '\\(hours\\)\\[minutes\\]\\{seconds\\}'\n */\nexport default function escapeRegExp(subject) {\n return coerceToString(subject).replace(REGEXP_SPECIAL_CHARACTERS, '\\\\$&');\n}","import coerceToString from 'helper/string/coerce_to_string';\n\nconst unescapeCharactersMap = {\n '<': /(<)|(�*3c;)|(�*60;)/gi,\n '>': /(>)|(�*3e;)|(�*62;)/gi,\n '&': /(&)|(�*26;)|(�*38;)/gi,\n '\"': /(")|(�*22;)|(�*34;)/gi,\n \"'\": /(�*27;)|(�*39;)/gi,\n '`': /(�*60;)|(�*96;)/gi\n};\nconst characters = Object.keys(unescapeCharactersMap);\n\n/**\n * Replaces the HTML entities with corresponding characters.\n *\n * @ignore\n * @param {string} string The accumulator string.\n * @param {string} key The character.\n * @return {string} The string with replaced HTML entity\n */\nfunction reduceUnescapedString(string, key) {\n return string.replace(unescapeCharactersMap[key], key);\n}\n\n/**\n * Unescapes HTML special characters from &lt; &gt; &amp; &quot; &#x27; &#x60;\n * to corresponding < > & ' \" ` in subject.\n *\n * @function unescapeHtml\n * @static\n * @since 1.0.0\n * @memberOf Escape\n * @param {string} [subject=''] The string to unescape.\n * @return {string} Returns the unescaped string.\n * @example\n * v.unescapeHtml('<p>wonderful world</p>');\n * // => '

wonderful world

'\n */\nexport default function unescapeHtml(subject) {\n const subjectString = coerceToString(subject);\n return characters.reduce(reduceUnescapedString, subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns the first occurrence index of `search` in `subject`.\n *\n * @function indexOf\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [fromIndex=0] The index to start searching.\n * @return {number} Returns the first occurrence index or `-1` if not found.\n * @example\n * v.indexOf('morning', 'n');\n * // => 3\n *\n * v.indexOf('evening', 'o');\n * // => -1\n */\nexport default function indexOf(subject, search, fromIndex) {\n const subjectString = coerceToString(subject);\n return subjectString.indexOf(search, fromIndex);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns the last occurrence index of `search` in `subject`.\n *\n * @function lastIndexOf\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [fromIndex=subject.length - 1] The index to start searching backward in the string.\n * @return {number} Returns the last occurrence index or `-1` if not found.\n * @example\n * v.lastIndexOf('morning', 'n');\n * // => 5\n *\n * v.lastIndexOf('evening', 'o');\n * // => -1\n */\nexport default function lastIndexOf(subject, search, fromIndex) {\n const subjectString = coerceToString(subject);\n return subjectString.lastIndexOf(search, fromIndex);\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Returns the first index of a `pattern` match in `subject`.\n *\n * @function search\n * @static\n * @since 1.0.0\n * @memberOf Index\n * @param {string} [subject=''] The string where to search.\n * @param {string|RegExp} pattern The pattern to match. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern)`.\n * @param {number} [fromIndex=0] The index to start searching.\n * @return {number} Returns the first match index or `-1` if not found.\n * @example\n * v.search('morning', /rn/);\n * // => 2\n *\n * v.search('evening', '/\\d/');\n * // => -1\n */\nexport default function search(subject, pattern, fromIndex) {\n const subjectString = coerceToString(subject);\n const fromIndexNumber = isNil(fromIndex) ? 0 : clipNumber(toInteger(fromIndex), 0, subjectString.length);\n let matchIndex = subjectString.substr(fromIndexNumber).search(pattern);\n if (matchIndex !== -1 && !isNaN(fromIndexNumber)) {\n matchIndex += fromIndexNumber;\n }\n return matchIndex;\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Inserts into `subject` a string `toInsert` at specified `position`.\n *\n * @function insert\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string where to insert.\n * @param {string} [toInsert=''] The string to be inserted.\n * @param {number} [position=0] The position to insert.\n * @return {string} Returns the string after insertion.\n * @example\n * v.insert('ct', 'a', 1);\n * // => 'cat'\n *\n * v.insert('sunny', ' day', 5);\n * // => 'sunny day'\n */\nexport default function insert(subject, toInsert, position) {\n const subjectString = coerceToString(subject);\n const toInsertString = coerceToString(toInsert);\n const positionNumber = coerceToNumber(position);\n if (positionNumber < 0 || positionNumber > subjectString.length || toInsertString === '') {\n return subjectString;\n }\n return subjectString.slice(0, positionNumber) + toInsertString + subjectString.slice(positionNumber);\n}","/**\n * Generated diacritics map. See bellow the base code.\n * @ignore\n * @see http://stackoverflow.com/a/18391901/1894471\n * @type Object\n */\n\nconst diacritics = {\n \"3\": \"\\u039e\\u03be\",\n \"8\": \"\\u0398\\u03b8\",\n \"A\": \"\\x41\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\u0100\\u0102\\u0104\\u01cd\\u01de\\u01e0\\u01fa\\u0200\\u0202\\u0226\\u023a\\u1e00\\u1ea0\\u1ea2\\u1ea4\\u1ea6\\u1ea8\\u1eaa\\u1eac\\u1eae\\u1eb0\\u1eb2\\u1eb4\\u1eb6\\u24b6\\u2c6f\\uff21\\u0386\\u0391\\u0410\",\n \"B\": \"\\x42\\u0181\\u0182\\u0243\\u1e02\\u1e04\\u1e06\\u24b7\\uff22\\u0392\\u0411\",\n \"C\": \"\\x43\\xc7\\u0106\\u0108\\u010a\\u010c\\u0187\\u023b\\u1e08\\u24b8\\ua73e\\uff23\\u0426\",\n \"D\": \"\\x44\\u010e\\u0110\\u0189\\u018a\\u018b\\u1e0a\\u1e0c\\u1e0e\\u1e10\\u1e12\\u24b9\\ua779\\uff24\\xd0\\u0394\\u0414\",\n \"E\": \"\\x45\\xc8\\xc9\\xca\\xcb\\u0112\\u0114\\u0116\\u0118\\u011a\\u018e\\u0190\\u0204\\u0206\\u0228\\u1e14\\u1e16\\u1e18\\u1e1a\\u1e1c\\u1eb8\\u1eba\\u1ebc\\u1ebe\\u1ec0\\u1ec2\\u1ec4\\u1ec6\\u24ba\\uff25\\u0388\\u0395\\u0415\\u042d\",\n \"F\": \"\\x46\\u0191\\u1e1e\\u24bb\\ua77b\\uff26\\u03a6\\u0424\",\n \"G\": \"\\x47\\u011c\\u011e\\u0120\\u0122\\u0193\\u01e4\\u01e6\\u01f4\\u1e20\\u24bc\\ua77d\\ua77e\\ua7a0\\uff27\\u0393\\u0413\\u0490\",\n \"H\": \"\\x48\\u0124\\u0126\\u021e\\u1e22\\u1e24\\u1e26\\u1e28\\u1e2a\\u24bd\\u2c67\\u2c75\\ua78d\\uff28\\u0389\\u0397\\u0425\",\n \"I\": \"\\x49\\xcc\\xcd\\xce\\xcf\\u0128\\u012a\\u012c\\u012e\\u0130\\u0197\\u01cf\\u0208\\u020a\\u1e2c\\u1e2e\\u1ec8\\u1eca\\u24be\\uff29\\u038a\\u0399\\u03aa\\u0406\\u0418\",\n \"J\": \"\\x4a\\u0134\\u0248\\u24bf\\uff2a\\u0419\",\n \"K\": \"\\x4b\\u0136\\u0198\\u01e8\\u1e30\\u1e32\\u1e34\\u24c0\\u2c69\\ua740\\ua742\\ua744\\ua7a2\\uff2b\\u039a\\u041a\",\n \"L\": \"\\x4c\\u0139\\u013b\\u013d\\u013f\\u0141\\u023d\\u1e36\\u1e38\\u1e3a\\u1e3c\\u24c1\\u2c60\\u2c62\\ua746\\ua748\\ua780\\uff2c\\u039b\\u041b\",\n \"M\": \"\\x4d\\u019c\\u1e3e\\u1e40\\u1e42\\u24c2\\u2c6e\\uff2d\\u039c\\u041c\",\n \"N\": \"\\x4e\\xd1\\u0143\\u0145\\u0147\\u019d\\u01f8\\u0220\\u1e44\\u1e46\\u1e48\\u1e4a\\u24c3\\ua790\\ua7a4\\uff2e\\u039d\\u041d\",\n \"O\": \"\\x4f\\xd2\\xd3\\xd4\\xd5\\xd6\\xd8\\u014c\\u014e\\u0150\\u0186\\u019f\\u01a0\\u01d1\\u01ea\\u01ec\\u01fe\\u020c\\u020e\\u022a\\u022c\\u022e\\u0230\\u1e4c\\u1e4e\\u1e50\\u1e52\\u1ecc\\u1ece\\u1ed0\\u1ed2\\u1ed4\\u1ed6\\u1ed8\\u1eda\\u1edc\\u1ede\\u1ee0\\u1ee2\\u24c4\\ua74a\\ua74c\\uff2f\\u038c\\u039f\\u041e\",\n \"P\": \"\\x50\\u01a4\\u1e54\\u1e56\\u24c5\\u2c63\\ua750\\ua752\\ua754\\uff30\\u03a0\\u041f\",\n \"Q\": \"\\x51\\u024a\\u24c6\\ua756\\ua758\\uff31\",\n \"R\": \"\\x52\\u0154\\u0156\\u0158\\u0210\\u0212\\u024c\\u1e58\\u1e5a\\u1e5c\\u1e5e\\u24c7\\u2c64\\ua75a\\ua782\\ua7a6\\uff32\\u03a1\\u0420\",\n \"S\": \"\\x53\\u015a\\u015c\\u015e\\u0160\\u0218\\u1e60\\u1e62\\u1e64\\u1e66\\u1e68\\u1e9e\\u24c8\\u2c7e\\ua784\\ua7a8\\uff33\\u03a3\\u0421\",\n \"T\": \"\\x54\\u0162\\u0164\\u0166\\u01ac\\u01ae\\u021a\\u023e\\u1e6a\\u1e6c\\u1e6e\\u1e70\\u24c9\\ua786\\uff34\\u03a4\\u0422\",\n \"U\": \"\\x55\\xd9\\xda\\xdb\\xdc\\u0168\\u016a\\u016c\\u016e\\u0170\\u0172\\u01af\\u01d3\\u01d5\\u01d7\\u01d9\\u01db\\u0214\\u0216\\u0244\\u1e72\\u1e74\\u1e76\\u1e78\\u1e7a\\u1ee4\\u1ee6\\u1ee8\\u1eea\\u1eec\\u1eee\\u1ef0\\u24ca\\uff35\\u0423\\u042a\",\n \"V\": \"\\x56\\u01b2\\u0245\\u1e7c\\u1e7e\\u24cb\\ua75e\\uff36\\u0412\",\n \"W\": \"\\x57\\u0174\\u1e80\\u1e82\\u1e84\\u1e86\\u1e88\\u24cc\\u2c72\\uff37\\u038f\\u03a9\",\n \"X\": \"\\x58\\u1e8a\\u1e8c\\u24cd\\uff38\\u03a7\",\n \"Y\": \"\\x59\\xdd\\u0176\\u0178\\u01b3\\u0232\\u024e\\u1e8e\\u1ef2\\u1ef4\\u1ef6\\u1ef8\\u1efe\\u24ce\\uff39\\u038e\\u03a5\\u03ab\\u042b\",\n \"Z\": \"\\x5a\\u0179\\u017b\\u017d\\u01b5\\u0224\\u1e90\\u1e92\\u1e94\\u24cf\\u2c6b\\u2c7f\\ua762\\uff3a\\u0396\\u0417\",\n \"a\": \"\\x61\\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\u0101\\u0103\\u0105\\u01ce\\u01df\\u01e1\\u01fb\\u0201\\u0203\\u0227\\u0250\\u1e01\\u1e9a\\u1ea1\\u1ea3\\u1ea5\\u1ea7\\u1ea9\\u1eab\\u1ead\\u1eaf\\u1eb1\\u1eb3\\u1eb5\\u1eb7\\u24d0\\u2c65\\uff41\\u03ac\\u03b1\\u0430\",\n \"b\": \"\\x62\\u0180\\u0183\\u0253\\u1e03\\u1e05\\u1e07\\u24d1\\uff42\\u03b2\\u0431\",\n \"c\": \"\\x63\\xe7\\u0107\\u0109\\u010b\\u010d\\u0188\\u023c\\u1e09\\u2184\\u24d2\\ua73f\\uff43\\u0446\",\n \"d\": \"\\x64\\u010f\\u0111\\u018c\\u0256\\u0257\\u1e0b\\u1e0d\\u1e0f\\u1e11\\u1e13\\u24d3\\ua77a\\uff44\\xf0\\u03b4\\u0434\",\n \"e\": \"\\x65\\xe8\\xe9\\xea\\xeb\\u0113\\u0115\\u0117\\u0119\\u011b\\u01dd\\u0205\\u0207\\u0229\\u0247\\u025b\\u1e15\\u1e17\\u1e19\\u1e1b\\u1e1d\\u1eb9\\u1ebb\\u1ebd\\u1ebf\\u1ec1\\u1ec3\\u1ec5\\u1ec7\\u24d4\\uff45\\u03ad\\u03b5\\u0435\\u044d\",\n \"f\": \"\\x66\\u0192\\u1e1f\\u24d5\\ua77c\\uff46\\u03c6\\u0444\",\n \"g\": \"\\x67\\u011d\\u011f\\u0121\\u0123\\u01e5\\u01e7\\u01f5\\u0260\\u1d79\\u1e21\\u24d6\\ua77f\\ua7a1\\uff47\\u03b3\\u0433\\u0491\",\n \"h\": \"\\x68\\u0125\\u0127\\u021f\\u0265\\u1e23\\u1e25\\u1e27\\u1e29\\u1e2b\\u1e96\\u24d7\\u2c68\\u2c76\\uff48\\u03ae\\u03b7\\u0445\",\n \"i\": \"\\x69\\xec\\xed\\xee\\xef\\u0129\\u012b\\u012d\\u012f\\u0131\\u01d0\\u0209\\u020b\\u0268\\u1e2d\\u1e2f\\u1ec9\\u1ecb\\u24d8\\uff49\\u0390\\u03af\\u03b9\\u03ca\\u0438\\u0456\",\n \"j\": \"\\x6a\\u0135\\u01f0\\u0249\\u24d9\\uff4a\\u0439\",\n \"k\": \"\\x6b\\u0137\\u0199\\u01e9\\u1e31\\u1e33\\u1e35\\u24da\\u2c6a\\ua741\\ua743\\ua745\\ua7a3\\uff4b\\u03ba\\u043a\",\n \"l\": \"\\x6c\\u013a\\u013c\\u013e\\u0140\\u0142\\u017f\\u019a\\u026b\\u1e37\\u1e39\\u1e3b\\u1e3d\\u24db\\u2c61\\ua747\\ua749\\ua781\\uff4c\\u03bb\\u043b\",\n \"m\": \"\\x6d\\u026f\\u0271\\u1e3f\\u1e41\\u1e43\\u24dc\\uff4d\\u03bc\\u043c\",\n \"n\": \"\\x6e\\xf1\\u0144\\u0146\\u0148\\u0149\\u019e\\u01f9\\u0272\\u1e45\\u1e47\\u1e49\\u1e4b\\u24dd\\ua791\\ua7a5\\uff4e\\u03bd\\u043d\",\n \"o\": \"\\x6f\\xf2\\xf3\\xf4\\xf5\\xf6\\xf8\\u014d\\u014f\\u0151\\u01a1\\u01d2\\u01eb\\u01ed\\u01ff\\u020d\\u020f\\u022b\\u022d\\u022f\\u0231\\u0254\\u0275\\u1e4d\\u1e4f\\u1e51\\u1e53\\u1ecd\\u1ecf\\u1ed1\\u1ed3\\u1ed5\\u1ed7\\u1ed9\\u1edb\\u1edd\\u1edf\\u1ee1\\u1ee3\\u24de\\ua74b\\ua74d\\uff4f\\u03bf\\u03cc\\u043e\",\n \"p\": \"\\x70\\u01a5\\u1d7d\\u1e55\\u1e57\\u24df\\ua751\\ua753\\ua755\\uff50\\u03c0\\u043f\",\n \"q\": \"\\x71\\u024b\\u24e0\\ua757\\ua759\\uff51\",\n \"r\": \"\\x72\\u0155\\u0157\\u0159\\u0211\\u0213\\u024d\\u027d\\u1e59\\u1e5b\\u1e5d\\u1e5f\\u24e1\\ua75b\\ua783\\ua7a7\\uff52\\u03c1\\u0440\",\n \"s\": \"\\x73\\xdf\\u015b\\u015d\\u015f\\u0161\\u0219\\u023f\\u1e61\\u1e63\\u1e65\\u1e67\\u1e69\\u1e9b\\u24e2\\ua785\\ua7a9\\uff53\\u03c2\\u03c3\\u0441\",\n \"t\": \"\\x74\\u0163\\u0165\\u0167\\u01ad\\u021b\\u0288\\u1e6b\\u1e6d\\u1e6f\\u1e71\\u1e97\\u24e3\\u2c66\\ua787\\uff54\\u03c4\\u0442\",\n \"u\": \"\\x75\\xf9\\xfa\\xfb\\xfc\\u0169\\u016b\\u016d\\u016f\\u0171\\u0173\\u01b0\\u01d4\\u01d6\\u01d8\\u01da\\u01dc\\u0215\\u0217\\u0289\\u1e73\\u1e75\\u1e77\\u1e79\\u1e7b\\u1ee5\\u1ee7\\u1ee9\\u1eeb\\u1eed\\u1eef\\u1ef1\\u24e4\\uff55\\u0443\\u044a\",\n \"v\": \"\\x76\\u028b\\u028c\\u1e7d\\u1e7f\\u24e5\\ua75f\\uff56\\u0432\",\n \"w\": \"\\x77\\u0175\\u1e81\\u1e83\\u1e85\\u1e87\\u1e89\\u1e98\\u24e6\\u2c73\\uff57\\u03c9\\u03ce\",\n \"x\": \"\\x78\\u1e8b\\u1e8d\\u24e7\\uff58\\u03c7\",\n \"y\": \"\\x79\\xfd\\xff\\u0177\\u01b4\\u0233\\u024f\\u1e8f\\u1e99\\u1ef3\\u1ef5\\u1ef7\\u1ef9\\u1eff\\u24e8\\uff59\\u03b0\\u03c5\\u03cb\\u03cd\\u044b\",\n \"z\": \"\\x7a\\u017a\\u017c\\u017e\\u01b6\\u0225\\u0240\\u1e91\\u1e93\\u1e95\\u24e9\\u2c6c\\ua763\\uff5a\\u03b6\\u0437\",\n \"OE\": \"\\x8c\\u0152\",\n \"oe\": \"\\x9c\\u0153\",\n \"AE\": \"\\xc6\\u01e2\\u01fc\",\n \"ae\": \"\\xe6\\u01e3\\u01fd\",\n \"hv\": \"\\u0195\",\n \"OI\": \"\\u01a2\",\n \"oi\": \"\\u01a3\",\n \"DZ\": \"\\u01c4\\u01f1\",\n \"Dz\": \"\\u01c5\\u01f2\",\n \"dz\": \"\\u01c6\\u01f3\",\n \"LJ\": \"\\u01c7\",\n \"Lj\": \"\\u01c8\",\n \"lj\": \"\\u01c9\",\n \"NJ\": \"\\u01ca\",\n \"Nj\": \"\\u01cb\",\n \"nj\": \"\\u01cc\",\n \"OU\": \"\\u0222\",\n \"ou\": \"\\u0223\",\n \"TZ\": \"\\ua728\",\n \"tz\": \"\\ua729\",\n \"AA\": \"\\ua732\",\n \"aa\": \"\\ua733\",\n \"AO\": \"\\ua734\",\n \"ao\": \"\\ua735\",\n \"AU\": \"\\ua736\",\n \"au\": \"\\ua737\",\n \"AV\": \"\\ua738\\ua73a\",\n \"av\": \"\\ua739\\ua73b\",\n \"AY\": \"\\ua73c\",\n \"ay\": \"\\ua73d\",\n \"OO\": \"\\ua74e\",\n \"oo\": \"\\ua74f\",\n \"VY\": \"\\ua760\",\n \"vy\": \"\\ua761\",\n \"TH\": \"\\xde\",\n \"th\": \"\\xfe\",\n \"PS\": \"\\u03a8\",\n \"ps\": \"\\u03c8\",\n \"Yo\": \"\\u0401\",\n \"Ye\": \"\\u0404\",\n \"Yi\": \"\\u0407\",\n \"Zh\": \"\\u0416\",\n \"Ch\": \"\\u0427\",\n \"Sh\": \"\\u0428\\u0429\",\n \"\": \"\\u042c\\u044c\",\n \"Yu\": \"\\u042e\",\n \"Ya\": \"\\u042f\",\n \"zh\": \"\\u0436\",\n \"ch\": \"\\u0447\",\n \"sh\": \"\\u0448\\u0449\",\n \"yu\": \"\\u044e\",\n \"ya\": \"\\u044f\",\n \"yo\": \"\\u0451\",\n \"ye\": \"\\u0454\",\n \"yi\": \"\\u0457\"\n};\n\nconst diacriticsMap = {};\nlet index;\n\nObject.keys(diacritics).forEach(function(key) {\n const characters = diacritics[key];\n for (index = 0; index < characters.length; index++) {\n const character = characters[index];\n diacriticsMap[character] = key;\n }\n});\n\nexport default diacriticsMap;","import { REGEXP_COMBINING_MARKS, REGEXP_NON_LATIN } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport diacriticMap from 'helper/string/diacritics_map';\n\n/**\n * Removes the diacritics from `character`.\n *\n * @ignore\n * @param {string} character The character with diacritics.\n * @returns {string} Returns the character without diacritics.\n */\nfunction removeDiacritics(character) {\n const characterWithoutDiacritic = diacriticMap[character];\n return characterWithoutDiacritic ? characterWithoutDiacritic : character;\n}\n\n/**\n * Returns the `cleanCharacter` from combining marks regular expression match.\n * @ignore\n * @param {string} character The character with combining marks\n * @param {string} cleanCharacter The character without combining marks.\n * @return {string} The character without combining marks.\n */\nfunction removeCombiningMarks(character, cleanCharacter) {\n return cleanCharacter;\n}\n\n/**\n * Latinises the `subject` by removing diacritic characters.\n *\n * @function latinise\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to latinise.\n * @return {string} Returns the latinised string.\n * @example\n * v.latinise('cafe\\u0301'); // or 'café'\n * // => 'cafe'\n *\n * v.latinise('août décembre');\n * // => 'aout decembre'\n *\n * v.latinise('как прекрасен этот мир');\n * // => 'kak prekrasen etot mir'\n */\nexport default function latinise(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return subjectString;\n }\n return subjectString\n .replace(REGEXP_NON_LATIN, removeDiacritics)\n .replace(REGEXP_COMBINING_MARKS, removeCombiningMarks);\n}","import buildPadding from 'helper/string/build_padding';\nimport clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { MAX_SAFE_INTEGER } from 'helper/number/const';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Pads `subject` to a new `length`.\n *\n * @function pad\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to pad.\n * @param {int} [length=0] The length to pad the string. No changes are made if `length` is less than `subject.length`.\n * @param {string} [pad=' '] The string to be used for padding.\n * @return {string} Returns the padded string.\n * @example\n * v.pad('dog', 5);\n * // => ' dog '\n *\n * v.pad('bird', 6, '-');\n * // => '-bird-'\n *\n * v.pad('cat', 6, '-=');\n * // => '-cat-='\n */\nexport default function pad(subject, length, pad) {\n const subjectString = coerceToString(subject);\n const lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);\n const padString = coerceToString(pad, ' ');\n if (lengthInt <= subjectString.length) {\n return subjectString;\n }\n const paddingLength = lengthInt - subjectString.length;\n const paddingSideLength = toInteger(paddingLength / 2);\n const paddingSideRemainingLength = paddingLength % 2;\n return buildPadding(padString, paddingSideLength) + subjectString +\n buildPadding(padString, paddingSideLength + paddingSideRemainingLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns a new string where the matches of `pattern` are replaced with `replacement`.
\n *\n * @function replace\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to verify.\n * @param {string|RegExp} pattern The pattern which match is replaced. If `pattern` is a string,\n * a simple string match is evaluated and only the first occurrence replaced.\n * @param {string|Function} replacement The string or function which invocation result replaces `pattern` match.\n * @return {string} Returns the replacement result.\n * @example\n * v.replace('swan', 'wa', 'u');\n * // => 'sun'\n *\n * v.replace('domestic duck', /domestic\\s/, '');\n * // => 'duck'\n *\n * v.replace('nice duck', /(nice)(duck)/, function(match, nice, duck) {\n * return 'the ' + duck + ' is ' + nice;\n * });\n * // => 'the duck is nice'\n */\nexport default function replace(subject, pattern, replacement) {\n const subjectString = coerceToString(subject);\n return subjectString.replace(pattern, replacement);\n}","import { REGEXP_FLAGS } from 'helper/reg_exp/const';\n\n/**\n * Get the flags string from a regular expression object.\n *\n * @ignore\n * @param {RegExp} regExp The regular expression object.\n * @return {string} Returns the string with flags chars.\n */\nexport default function getRegExpFlags(regExp) {\n return regExp.toString().match(REGEXP_FLAGS)[0];\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` includes `search` starting from `position`.\n *\n * @function includes\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string where to search.\n * @param {string} search The string to search.\n * @param {number} [position=0] The position to start searching.\n * @return {boolean} Returns `true` if `subject` includes `search` or `false` otherwise.\n * @example\n * v.includes('starship', 'star');\n * // => true\n *\n * v.includes('galaxy', 'g', 1);\n * // => false\n */\nexport default function includes(subject, search, position) {\n const subjectString = coerceToString(subject);\n const searchString = toString(search);\n if (searchString === null) {\n return false;\n }\n if (searchString === '') {\n return true;\n }\n position = isNil(position) ? 0 : clipNumber(toInteger(position), 0, subjectString.length);\n return subjectString.indexOf(searchString, position) !== -1;\n}","import getRegExpFlags from 'helper/reg_exp/get_reg_exp_flags';\nimport includes from 'query/includes';\n\n/**\n * Append flag to a regular expression.\n *\n * @ignore\n * @param {RegExp} pattern The pattern to coerce.\n * @param {string} appendFlag The flag to append to regular expression.\n * @return {RegExp} The regular expression with added flag.\n */\nexport default function appendFlagToRegExp(pattern, appendFlag) {\n const regularExpressionFlags = getRegExpFlags(pattern);\n if (!includes(regularExpressionFlags, appendFlag)) {\n return new RegExp(pattern.source, regularExpressionFlags + appendFlag);\n }\n return pattern;\n}","import appendFlagToRegularExpression from 'helper/reg_exp/append_flag_to_reg_exp';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport escapeRegExp from 'escape/escape_reg_exp';\n\n/**\n * Returns a new string where all matches of `pattern` are replaced with `replacement`.
\n *\n * @function replaceAll\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to verify.\n * @param {string|RegExp} pattern The pattern which match is replaced. If `pattern` is a string, a simple string match is evaluated.\n * All matches are replaced.\n * @param {string|Function} replacement The string or function which invocation result replaces `pattern` match.\n * @return {string} Returns the replacement result.\n * @example\n * v.replaceAll('good morning', 'o', '*');\n * // => 'g**d m*rning'\n * v.replaceAll('evening', \\n\\, 's');\n * // => 'evesisg'\n *\n */\nexport default function replaceAll(subject, pattern, replacement) {\n const subjectString = coerceToString(subject);\n let regExp = pattern;\n if (!(pattern instanceof RegExp)) {\n regExp = new RegExp(escapeRegExp(pattern), 'g');\n } else if (!pattern.global) {\n regExp = appendFlagToRegularExpression(pattern, 'g');\n }\n return subjectString.replace(regExp, replacement);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Reverses the `subject`.\n *\n * @function reverse\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to reverse.\n * @return {string} Returns the reversed string.\n * @example\n * v.reverse('winter');\n * // => 'retniw'\n */\nexport default function reverse(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.split('').reverse().join('');\n}","import { REGEXP_COMBINING_MARKS, REGEXP_SURROGATE_PAIRS } from 'helper/reg_exp/const';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Reverses the `subject` taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function reverseGrapheme\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to reverse.\n * @return {string} Returns the reversed string.\n * @example\n * v.reverseGrapheme('summer');\n * // => 'remmus'\n *\n * v.reverseGrapheme('𝌆 bar mañana mañana');\n * // => 'anañam anañam rab 𝌆'\n */\nexport default function reverseGrapheme(subject) {\n let subjectString = coerceToString(subject);\n /**\n * @see https://github.com/mathiasbynens/esrever\n */\n subjectString = subjectString\n .replace(REGEXP_COMBINING_MARKS, function($0, $1, $2) {\n return reverseGrapheme($2) + $1;\n })\n .replace(REGEXP_SURROGATE_PAIRS, '$2$1');\n let reversedString = '';\n let index = subjectString.length;\n while (index--) {\n reversedString += subjectString.charAt(index);\n }\n return reversedString;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport kebabCase from 'case/kebab_case';\nimport latinise from 'manipulate/latinise';\nimport { REGEXP_NON_LATIN } from 'helper/reg_exp/const';\n\n/**\n * Slugifies the `subject`. Cleans the `subject` by replacing diacritics with corresponding latin characters.\n *\n * @function slugify\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to slugify.\n * @return {string} Returns the slugified string.\n * @example\n * v.slugify('Italian cappuccino drink');\n * // => 'italian-cappuccino-drink'\n *\n * v.slugify('café latté');\n * // => 'caffe-latte'\n *\n * v.slugify('хорошая погода');\n * // => 'horoshaya-pogoda'\n */\nexport default function slugify(subject) {\n const subjectString = coerceToString(subject);\n if (subjectString === '') {\n return '';\n }\n const cleanSubjectString = latinise(subjectString).replace(REGEXP_NON_LATIN, '-');\n return kebabCase(cleanSubjectString);\n}","import coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Changes `subject` by deleting `deleteCount` of characters starting at position `start`. Places a new string\n * `toAdd` instead of deleted characters.\n *\n * @function splice\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string where to insert.\n * @param {string} start The position to start changing the string. For a negative position will start from the end of\n * the string.\n * @param {number} [deleteCount=subject.length-start] The number of characters to delete from string.\n * @param {string} [toAdd=''] The string to be added instead of deleted characters.\n * @return {string} Returns the modified string.\n * @example\n * v.splice('new year', 0, 4);\n * // => 'year'\n *\n * v.splice('new year', 0, 3, 'happy');\n * // => 'happy year'\n *\n * v.splice('new year', -4, 4, 'day');\n * // => 'new day'\n */\nexport default function splice(subject, start, deleteCount, toAdd) {\n const subjectString = coerceToString(subject);\n const toAddString = coerceToString(toAdd);\n let startPosition = coerceToNumber(start);\n if (startPosition < 0) {\n startPosition = subjectString.length + startPosition;\n if (startPosition < 0) {\n startPosition = 0;\n }\n } else if (startPosition > subjectString.length) {\n startPosition = subjectString.length;\n }\n let deleteCountNumber = coerceToNumber(deleteCount, subjectString.length - startPosition);\n if (deleteCountNumber < 0) {\n deleteCountNumber = 0;\n }\n return subjectString.slice(0, startPosition) + toAddString + subjectString.slice(startPosition + deleteCountNumber);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { REGEXP_TRIM_LEFT } from 'helper/reg_exp/const';\nimport toString from 'helper/string/to_string';\n\n/**\n * Removes whitespaces from the left part of the `subject`.\n *\n * @function trimLeft\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trimLeft(' Starship Troopers');\n * // => 'Starship Troopers'\n *\n * v.trimLeft('***Mobile Infantry', '*');\n * // => 'Mobile Infantry'\n */\nexport default function trimLeft(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.replace(REGEXP_TRIM_LEFT, '');\n }\n const whitespaceStringLength = whitespaceString.length;\n let matchWhitespace = true;\n let totalWhitespaceLength = 0;\n while(matchWhitespace) {\n if (subjectString.indexOf(whitespaceString, totalWhitespaceLength) === totalWhitespaceLength) {\n totalWhitespaceLength += whitespaceStringLength;\n } else {\n matchWhitespace = false;\n }\n }\n return subjectString.substring(totalWhitespaceLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport { REGEXP_TRIM_RIGHT } from 'helper/reg_exp/const';\nimport toString from 'helper/string/to_string';\n\n/**\n * Removes whitespaces from the right part of the `subject`.\n *\n * @function trimRight\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trimRight('the fire rises ');\n * // => 'the fire rises'\n *\n * v.trimRight('do you feel in charge?!!!', '!');\n * // => 'do you feel in charge?'\n */\nexport default function trimRight(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.replace(REGEXP_TRIM_RIGHT, '');\n }\n const whitespaceStringLength = whitespaceString.length;\n const valueStringLength = subjectString.length;\n let matchWhitespace = true;\n let totalWhitespaceLength = 0;\n let position;\n while(matchWhitespace) {\n position = valueStringLength - totalWhitespaceLength - whitespaceStringLength;\n if (subjectString.indexOf(whitespaceString, position) === position) {\n totalWhitespaceLength += whitespaceStringLength;\n } else {\n matchWhitespace = false;\n }\n }\n return subjectString.substring(0, valueStringLength - totalWhitespaceLength);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toString from 'helper/string/to_string';\nimport trimLeft from 'manipulate/trim_left';\nimport trimRight from 'manipulate/trim_right';\n\n/**\n * Removes whitespaces from left and right parts of the `subject`.\n *\n * @function trim\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to trim.\n * @param {string} [whitespace=whitespace] The whitespace characters to trim.\n * @return {string} Returns the trimmed string.\n * @example\n * v.trim(' Mother nature ');\n * // => 'Mother nature'\n *\n * v.trim('--Earth--', '-');\n * // => 'Earth'\n */\nexport default function trim(subject, whitespace) {\n const subjectString = coerceToString(subject);\n if (whitespace === '' || subjectString === '') {\n return subjectString;\n }\n const whitespaceString = toString(whitespace);\n if (isNil(whitespaceString)) {\n return subjectString.trim();\n }\n return trimRight(trimLeft(subjectString, whitespaceString), whitespaceString);\n}","import coerceToBoolean from 'helper/boolean/coerce_to_boolean';\nimport coerceToNumber from 'helper/number/coerce_to_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport nilDefault from 'helper/undefined/nil_default';\n\nconst OPTION_WIDTH = 'width';\nconst OPTION_NEW_LINE = 'newLine';\nconst OPTION_INDENT = 'indent';\nconst OPTION_CUT = 'cut';\n\n/**\n * Wraps `subject` to a given number of characters using a string break character.\n *\n * @function wordWrap\n * @static\n * @since 1.0.0\n * @memberOf Manipulate\n * @param {string} [subject=''] The string to wrap.\n * @param {Object} [options={}] The wrap options.\n * @param {number} [options.width=75] The number of characters at which to wrap.\n * @param {string} [options.newLine='\\n'] The string to add at the end of line.\n * @param {string} [options.indent=''] The string to intend the line.\n * @param {boolean} [options.cut=false] When `false` (default) does not split the word even if word length is bigger than `width`.
\n * When `true` breaks the word that has length bigger than `width`.\n *\n * @return {string} Returns wrapped string.\n * @example\n * v.wordWrap('Hello world', {\n * width: 5\n * });\n * // => 'Hello\\nworld'\n *\n * v.wordWrap('Hello world', {\n * width: 5,\n * newLine: '
',\n * indent: '__'\n * });\n * // => '__Hello
__world'\n *\n * v.wordWrap('Wonderful world', {\n * width: 5,\n * cut: true\n * });\n * // => 'Wonde\\nrful\\nworld'\n *\n */\nexport default function wordWrap(subject, options) {\n const subjectString = coerceToString(subject);\n options = nilDefault(options, {});\n const width = coerceToNumber(options[OPTION_WIDTH], 75);\n const newLine = coerceToString(options[OPTION_NEW_LINE], '\\n');\n const indent = coerceToString(options[OPTION_INDENT], '');\n const cut = coerceToBoolean(options[OPTION_CUT], false);\n\n if (subjectString === '' || width <= 0) {\n return indent;\n }\n\n const subjectLength = subjectString.length;\n let offset = 0;\n let wrappedLine = '';\n\n while ((subjectLength - offset) > width) {\n if (subjectString[offset] === ' ') {\n offset++;\n continue;\n }\n let spaceToWrapAt = subjectString.lastIndexOf(' ', width + offset);\n if (spaceToWrapAt >= offset) {\n wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine;\n offset = spaceToWrapAt + 1;\n } else {\n if (cut) {\n wrappedLine += indent + subjectString.substring(offset, width + offset) + newLine;\n offset += width;\n } else {\n spaceToWrapAt = subjectString.indexOf(' ', width + offset);\n if (spaceToWrapAt >= 0) {\n wrappedLine += indent + subjectString.substring(offset, spaceToWrapAt) + newLine;\n offset = spaceToWrapAt + 1;\n } else {\n wrappedLine += indent + subjectString.substring(offset);\n offset = subjectLength;\n }\n }\n }\n }\n if (offset < subjectLength) {\n wrappedLine += indent + subjectString.substring(offset);\n }\n return wrappedLine;\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\n\n/**\n * Checks whether `subject` ends with `end`.\n *\n * @function endsWith\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {string} end The ending string.\n * @param {number} [position=subject.length] Search within `subject` as if the string were only `position` long.\n * @return {boolean} Returns `true` if `subject` ends with `end` or `false` otherwise.\n * @example\n * v.endsWith('red alert', 'alert');\n * // => true\n *\n * v.endsWith('metro south', 'metro');\n * // => false\n *\n * v.endsWith('Murphy', 'ph', 5);\n * // => true\n */\nexport default function endsWith(subject, end, position) {\n if (isNil(end)) {\n return false;\n }\n const subjectString = coerceToString(subject);\n const endString = coerceToString(end);\n if (endString === '') {\n return true;\n }\n position = isNil(position) ? subjectString.length : clipNumber(toInteger(position), 0, subjectString.length);\n position -= endString.length;\n const lastIndex = subjectString.indexOf(endString, position);\n return lastIndex !== -1 && lastIndex === position;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_ALPHA } from 'helper/reg_exp/const_extended';\n\n/**\n * Checks whether `subject` contains only alpha characters.\n *\n * @function isAlpha\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only alpha characters or `false` otherwise.\n * @example\n * v.isAlpha('bart');\n * // => true\n *\n * v.isAlpha('lisa!');\n * // => false\n *\n * v.isAlpha('lisa and bart');\n * // => false\n */\nexport default function isAlpha(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_ALPHA.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_ALPHA_DIGIT } from 'helper/reg_exp/const_extended';\n\n/**\n * Checks whether `subject` contains only alpha and digit characters.\n *\n * @function isAlphaDigit\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only alpha and digit characters or `false` otherwise.\n * @example\n * v.isAlphaDigit('year2020');\n * // => true\n *\n * v.isAlphaDigit('1448');\n * // => true\n *\n * v.isAlphaDigit('40-20');\n * // => false\n */\nexport default function isAlphaDigit(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_ALPHA_DIGIT.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Checks whether `subject` is empty or contains only whitespaces.\n *\n * @function isBlank\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is empty or contains only whitespaces or `false` otherwise.\n * @example\n * v.isBlank('');\n * // => true\n *\n * v.isBlank(' ');\n * // => true\n *\n * v.isBlank('World');\n * // => false\n */\nexport default function isBlank(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.trim().length === 0;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport { REGEXP_DIGIT } from 'helper/reg_exp/const';\n\n/**\n * Checks whether `subject` contains only digit characters.\n *\n * @function isDigit\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` contains only digit characters or `false` otherwise.\n * @example\n * v.isDigit('35');\n * // => true\n *\n * v.isDigit('1.5');\n * // => false\n *\n * v.isDigit('ten');\n * // => false\n */\nexport default function isDigit(subject) {\n const subjectString = coerceToString(subject);\n return REGEXP_DIGIT.test(subjectString);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Checks whether `subject` is empty.\n *\n * @function isEmpty\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is empty or `false` otherwise\n * @example\n * v.isEmpty('');\n * // => true\n *\n * v.isEmpty(' ');\n * // => false\n */\nexport default function isEmpty(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.length === 0;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isAlpha from 'query/is_alpha';\n\n/**\n * Checks whether `subject` has only lower case characters.\n *\n * @function isLowerCase\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is lower case or `false` otherwise.\n * @example\n * v.isLowerCase('motorcycle');\n * // => true\n *\n * v.isLowerCase('John');\n * // => false\n *\n * v.isLowerCase('T1000');\n * // => false\n */\nexport default function isLowerCase(subject) {\n const valueString = coerceToString(subject);\n return isAlpha(valueString) && valueString.toLowerCase() === valueString;\n}","import isNil from 'helper/object/is_nil';\n\n/**\n * Checks whether `subject` is numeric.\n *\n * @function isNumeric\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is numeric or `false` otherwise.\n * @example\n * v.isNumeric('350');\n * // => true\n *\n * v.isNumeric('-20.5');\n * // => true\n *\n * v.isNumeric('NaN');\n * // => false\n */\nexport default function isNumeric(subject) {\n const valueNumeric = typeof subject === 'object' && !isNil(subject) ? Number(subject) : subject;\n return (typeof valueNumeric === 'number' || typeof valueNumeric === 'string')\n && !isNaN(valueNumeric - parseFloat(valueNumeric));\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport isAlpha from 'query/is_alpha';\n\n/**\n * Checks whether `subject` contains only upper case characters.\n *\n * @function isUpperCase\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @return {boolean} Returns `true` if `subject` is upper case or `false` otherwise.\n * @example\n * v.isUpperCase('ACDC');\n * // => true\n *\n * v.isUpperCase('Morning');\n * // => false\n */\nexport default function isUpperCase(subject) {\n const subjectString = coerceToString(subject);\n return isAlpha(subjectString) && subjectString.toUpperCase() === subjectString;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` matches the regular expression `pattern`.\n *\n * @function matches\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {RegExp|string} pattern The pattern to match. If `pattern` is not RegExp, it is transformed to `new RegExp(pattern, flags)`.\n * @param {string} [flags=''] The regular expression flags. Applies when `pattern` is string type.\n * @return {boolean} Returns `true` if `subject` matches `pattern` or `false` otherwise.\n * @example\n * v.matches('pluto', /plu.{2}/);\n * // => true\n *\n * v.matches('sun', 'S', 'i');\n * // => true\n *\n * v.matches('apollo 11', '\\\\d{3}');\n * // => false\n */\nexport default function matches(subject, pattern, flags) {\n const subjectString = coerceToString(subject);\n const flagsString = coerceToString(flags);\n let patternString;\n if (!(pattern instanceof RegExp)) {\n patternString = toString(pattern);\n if (patternString === null) {\n return false;\n }\n pattern = new RegExp(patternString, flagsString);\n }\n return pattern.test(subjectString);\n}","import clipNumber from 'helper/number/clip_number';\nimport coerceToString from 'helper/string/coerce_to_string';\nimport isNil from 'helper/object/is_nil';\nimport toInteger from 'helper/number/to_integer';\nimport toString from 'helper/string/to_string';\n\n/**\n * Checks whether `subject` starts with `start`.\n *\n * @function startsWith\n * @static\n * @since 1.0.0\n * @memberOf Query\n * @param {string} [subject=''] The string to verify.\n * @param {string} start The starting string.\n * @param {number} [position=0] The position to start searching.\n * @return {boolean} Returns `true` if `subject` starts with `start` or `false` otherwise.\n * @example\n * v.startsWith('say hello to my little friend', 'say hello');\n * // => true\n *\n * v.startsWith('tony', 'on', 1);\n * // => true\n *\n * v.startsWith('the world is yours', 'world');\n * // => false\n */\nexport default function startsWith(subject, start, position) {\n const subjectString = coerceToString(subject);\n const startString = toString(start);\n if (startString === null) {\n return false;\n }\n if (startString === '') {\n return true;\n }\n position = isNil(position) ? 0 : clipNumber(toInteger(position), 0, subjectString.length);\n return subjectString.substr(position, startString.length) === startString;\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Splits `subject` into an array of characters.\n *\n * @function chars\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @return {Array} Returns the array of characters.\n * @example\n * v.chars('cloud');\n * // => ['c', 'l', 'o', 'u', 'd']\n */\nexport default function chars(subject) {\n const subjectString = coerceToString(subject);\n return subjectString.split('');\n}","import codePointAt from 'chop/code_point_at';\nimport coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Returns an array of Unicode code point values from characters of `subject`.\n *\n * @function codePoints\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to extract from.\n * @return {Array} Returns an array of non-negative numbers less than or equal to `0x10FFFF`.\n * @example\n * v.codePoints('rain');\n * // => [114, 97, 105, 110], or\n * // [0x72, 0x61, 0x69, 0x6E]\n *\n * v.codePoints('\\uD83D\\uDE00 smile'); // or '😀 smile'\n * // => [128512, 32, 115, 109, 105, 108, 101], or\n * // [0x1F600, 0x20, 0x73, 0x6D, 0x69, 0x6C, 0x65]\n */\nexport default function codePoints(subject) {\n const subjectString = coerceToString(subject);\n const subjectStringLength = subjectString.length;\n const codePointArray = [];\n let index = 0;\n let codePointNumber;\n while (index < subjectStringLength) {\n codePointNumber = codePointAt(subjectString, index);\n codePointArray.push(codePointNumber);\n index += codePointNumber > 0xFFFF ? 2 : 1;\n }\n return codePointArray;\n}","import coerceToString from 'helper/string/coerce_to_string';\nimport nilDefault from 'helper/undefined/nil_default';\nimport { REGEXP_UNICODE_CHARACTER } from 'helper/reg_exp/const';\n\n/**\n * Splits `subject` into an array of graphemes taking care of\n * surrogate pairs and\n * combining marks.\n *\n * @function graphemes\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @return {Array} Returns the array of graphemes.\n * @example\n * v.graphemes('\\uD835\\uDC00\\uD835\\uDC01'); // or '𝐀𝐁'\n * // => ['\\uD835\\uDC00', '\\uD835\\uDC01'], or\n * // ['𝐀', '𝐁']\n *\n * v.graphemes('cafe\\u0301'); // or 'café'\n * // => ['c', 'a', 'f', 'e\\u0301'], or\n * // ['c', 'a', 'f', 'é']\n */\nexport default function graphemes(subject) {\n const subjectString = coerceToString(subject);\n return nilDefault(subjectString.match(REGEXP_UNICODE_CHARACTER), []);\n}","import coerceToString from 'helper/string/coerce_to_string';\n\n/**\n * Splits `subject` into an array of chunks by `separator`.\n *\n * @function split\n * @static\n * @since 1.0.0\n * @memberOf Split\n * @param {string} [subject=''] The string to split into characters.\n * @param {string|RegExp} [separator] The pattern to match the separator.\n * @param {number} [limit] Limit the number of chunks to be found.\n * @return {Array} Returns the array of chunks.\n * @example\n * v.split('rage against the dying of the light', ' ');\n * // => ['rage', 'against', 'the', 'dying', 'of', 'the', 'light']\n *\n * v.split('the dying of the light', /\\s/, 3);\n * // => ['the', 'dying', 'of']\n */\nexport default function split(subject, separator, limit) {\n const subjectString = coerceToString(subject);\n return subjectString.split(separator, limit);\n}","let globalObject = null;\n\nfunction getGlobalObject() {\n if (globalObject !== null) {\n return globalObject;\n }\n /* istanbul ignore next */\n // It's hard to mock the global variables. This code surely works fine. I hope :)\n if (typeof global === 'object' && global.Object === Object) {\n // NodeJS global object\n globalObject = global;\n } else if (typeof self === 'object' && self.Object === Object) {\n // self property from Window object\n globalObject = self;\n } else {\n // Other cases. Function constructor always has the context as global object\n globalObject = new Function('return this')();\n }\n return globalObject;\n}\n\nexport default getGlobalObject;","import getGlobalObject from 'helper/object/get_global';\n\nconst globalObject = getGlobalObject();\nconst previousV = globalObject.v;\n\n/**\n * Restores `v` variable to previous value and returns Voca library instance.\n *\n * @function noConflict\n * @static\n * @since 1.0.0\n * @memberOf Util\n * @return {Object} Returns Voca library instance.\n * @example\n * var voca = v.noConflict();\n * voca.isAlhpa('Hello');\n * // => true\n */\nexport default function noConflict() {\n if (this === globalObject.v) {\n globalObject.v = previousV;\n }\n return this;\n}","/**\n * A property that contains the library semantic version number.\n * @name version\n * @static\n * @since 1.0.0\n * @memberOf Util\n * @type string\n * @example\n * v.version\n * // => '1.0.0'\n */\nconst version = '1.0.0';\n\nexport default version;","/* eslint sort-imports: \"off\" */\n\n/**\n * Functions to change the case\n * @namespace Case\n */\nimport camelCase from './case/camel_case';\nimport capitalize from './case/capitalize';\nimport decapitalize from './case/decapitalize';\nimport kebabCase from './case/kebab_case';\nimport lowerCase from './case/lower_case';\nimport snakeCase from './case/snake_case';\nimport upperCase from './case/upper_case';\nimport truncate from './chop/truncate';\n\n/**\n * Chain functions\n * @namespace Chain\n */\n\n/**\n * Functions to cut a string\n * @namespace Chop\n */\nimport charAt from './chop/char_at';\nimport codePointAt from './chop/code_point_at';\nimport first from './chop/first';\nimport graphemeAt from './chop/grapheme_at';\nimport last from './chop/last';\nimport prune from './chop/prune';\nimport slice from './chop/slice';\nimport substr from './chop/substr';\nimport substring from './chop/substring';\n\n/**\n * Functions to count characters in a string\n * @namespace Count\n */\nimport count from './count/count';\nimport countGraphemes from './count/count_graphemes';\nimport countSubstrings from './count/count_substrings';\nimport countWhere from './count/count_where';\nimport countWords from './count/count_words';\n\n/**\n * Functions to format\n * @namespace Format\n */\nimport sprintf from './format/sprintf';\nimport vprintf from './format/vprintf';\n\n/**\n * Functions to escape RegExp special characters\n * @namespace Escape\n */\nimport escapeHtml from './escape/escape_html';\nimport escapeRegExp from './escape/escape_reg_exp';\nimport unescapeHtml from './escape/unescape_html';\n\n/**\n * Functions to find index\n * @namespace Index\n */\nimport indexOf from './index/index_of';\nimport lastIndexOf from './index/last_index_of';\nimport search from './index/search';\n\n/**\n * Functions to manipulate a string\n * @namespace Manipulate\n */\nimport insert from './manipulate/insert';\nimport latinise from './manipulate/latinise';\nimport pad from './manipulate/pad';\nimport padLeft from './manipulate/pad_left';\nimport padRight from './manipulate/pad_right';\nimport repeat from './manipulate/repeat';\nimport replace from './manipulate/replace';\nimport replaceAll from './manipulate/replace_all';\nimport reverse from './manipulate/reverse';\nimport reverseGrapheme from './manipulate/reverse_grapheme';\nimport slugify from './manipulate/slugify';\nimport splice from './manipulate/splice';\nimport trim from './manipulate/trim';\nimport trimLeft from './manipulate/trim_left';\nimport trimRight from './manipulate/trim_right';\nimport wordWrap from './manipulate/word_wrap';\n\n/**\n * Functions to query a string\n * @namespace Query\n */\nimport endsWith from './query/ends_with';\nimport includes from './query/includes';\nimport isAlpha from './query/is_alpha';\nimport isAlphaDigit from './query/is_alpha_digit';\nimport isBlank from './query/is_blank';\nimport isDigit from './query/is_digit';\nimport isEmpty from './query/is_empty';\nimport isLowerCase from './query/is_lower_case';\nimport isNumeric from './query/is_numeric';\nimport isString from './query/is_string';\nimport isUpperCase from './query/is_upper_case';\nimport matches from './query/matches';\nimport startsWith from './query/starts_with';\n\n/**\n * Functions to split a string\n * @namespace Split\n */\nimport chars from './split/chars';\nimport codePoints from './split/code_points';\nimport graphemes from './split/graphemes';\nimport split from './split/split';\nimport words from './split/words';\n\n/**\n * Util functions and properties\n * @namespace Util\n */\nimport noConflict from './util/no_conflict';\nimport version from './util/version';\n\nexport default {\n camelCase,\n capitalize,\n decapitalize,\n kebabCase,\n lowerCase,\n snakeCase,\n upperCase,\n\n count,\n countGraphemes,\n countSubstrings,\n countWhere,\n countWords,\n\n escapeHtml,\n escapeRegExp,\n unescapeHtml,\n\n sprintf,\n vprintf,\n\n indexOf,\n lastIndexOf,\n search,\n\n charAt,\n codePointAt,\n first,\n graphemeAt,\n last,\n prune,\n slice,\n substr,\n substring,\n truncate,\n\n insert,\n latinise,\n pad,\n padLeft,\n padRight,\n repeat,\n replace,\n replaceAll,\n reverse,\n reverseGrapheme,\n slugify,\n splice,\n trim,\n trimLeft,\n trimRight,\n wordWrap,\n\n endsWith,\n includes,\n isAlpha,\n isAlphaDigit,\n isBlank,\n isDigit,\n isEmpty,\n isLowerCase,\n isNumeric,\n isString,\n isUpperCase,\n matches,\n startsWith,\n\n chars,\n codePoints,\n graphemes,\n split,\n words,\n\n noConflict,\n version\n};","import functions from 'functions';\n\n\n/**\n * The chain wrapper constructor.\n *\n * @ignore\n * @param {string} subject The string to be wrapped.\n * @param {boolean} [explicitChain=false] A boolean that indicates if the chain sequence is explicit or implicit.\n * @return {ChainWrapper} Returns a new instance of `ChainWrapper`\n * @constructor\n */\nfunction ChainWrapper(subject, explicitChain) {\n this._wrappedValue = subject;\n this._explicitChain = explicitChain;\n}\n\n/**\n * Unwraps the chain sequence wrapped value.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__value\n * @return {*} Returns the unwrapped value.\n * @example\n * v\n * .chain('Hello world')\n * .replace('Hello', 'Hi')\n * .lowerCase()\n * .slugify()\n * .value()\n * // => 'hi-world'\n *\n * v(' Space travel ')\n * .trim()\n * .truncate(8)\n * .value()\n * // => 'Space...'\n */\nChainWrapper.prototype.value = function() {\n return this._wrappedValue;\n};\n\n/**\n * Override the default object valueOf().\n *\n * @ignore\n * @return {*} Returns the wrapped value.\n */\nChainWrapper.prototype.valueOf = function() {\n return this.value();\n};\n\n/**\n * Returns the wrapped value to be used in JSON.stringify().\n *\n * @ignore\n * @return {*} Returns the wrapped value.\n */\nChainWrapper.prototype.toJSON = function() {\n return this.value();\n};\n\n/**\n * Returns the string representation of the wrapped value.\n *\n * @ignore\n * @return {string} Returns the string representation.\n */\nChainWrapper.prototype.toString = function() {\n return String(this.value());\n};\n\n/**\n * Creates a new chain object that enables explicit chain sequences.\n * Use `v.prototype.value()` to unwrap the result.
\n * Does not modify the wrapped value.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__chain\n * @return {Object} Returns the wrapper in explicit mode.\n * @example\n * v('Back to School')\n * .chain()\n * .lowerCase()\n * .words()\n * .value()\n * // => ['back', 'to', 'school']\n *\n * v(\" Back to School \")\n * .chain()\n * .trim()\n * .truncate(7)\n * .value()\n * // => 'Back...'\n */\nChainWrapper.prototype.chain = function() {\n return new ChainWrapper(this._wrappedValue, true);\n};\n\n/**\n * Modifies the wrapped value with the invocation result of `changer` function. The current wrapped value is the\n * argument of `changer` invocation.\n *\n * @memberof Chain\n * @since 1.0.0\n * @function __proto__thru\n * @param {Function} changer The function to invoke.\n * @return {Object} Returns the new wrapper that wraps the invocation result of `changer`.\n * @example\n * v\n * .chain('sun is shining')\n * .words()\n * .thru(function(words) {\n * return words[0];\n * })\n * .value()\n * // => 'sun'\n *\n */\nChainWrapper.prototype.thru = function(changer) {\n if (typeof changer === 'function') {\n return new ChainWrapper(changer(this._wrappedValue), this._explicitChain);\n }\n return this;\n};\n\n/**\n * A boolean that indicates if the chain sequence is explicit or implicit.\n * @ignore\n * @type {boolean}\n * @private\n */\nChainWrapper.prototype._explicitChain = true;\n\n/**\n * Make a voca function chainable.\n *\n * @ignore\n * @param {Function} functionInstance The function to make chainable\n * @return {Function} Returns the chainable function\n */\nfunction makeFunctionChainable(functionInstance) {\n return function(...args) {\n const result = functionInstance(this._wrappedValue, ...args);\n if (this._explicitChain || typeof result === 'string') {\n return new ChainWrapper(result, this._explicitChain);\n } else {\n return result;\n }\n };\n}\n\nObject.keys(functions).forEach(function(name) {\n ChainWrapper.prototype[name] = makeFunctionChainable(functions[name]);\n});\n\n\nexport default ChainWrapper;","import ChainWrapper from 'chain/wrapper';\n\n/**\n * Creates a chain object that wraps `subject`, enabling explicit chain sequences.
\n * Use `v.prototype.value()` to unwrap the result.\n *\n * @memberOf Chain\n * @since 1.0.0\n * @function chain\n * @param {string} subject The string to wrap.\n * @return {Object} Returns the new wrapper object.\n * @example\n * v\n * .chain('Back to School')\n * .lowerCase()\n * .words()\n * .value()\n * // => ['back', 'to', 'school']\n */\nexport default function chain(subject) {\n return new ChainWrapper(subject, true);\n}","import chain from './chain/chain'; // include chain here to resolve af circular reference\nimport ChainWrapper from './chain/wrapper';\nimport functions from './functions';\n\n/**\n * Creates a chain object that wraps `subject`, enabling implicit chain sequences.
\n * A function that returns `number`, `boolean` or `array` type terminates the chain sequence and returns the unwrapped value.\n * Otherwise use `v.prototype.value()` to unwrap the result.\n *\n * @memberOf Chain\n * @since 1.0.0\n * @function v\n * @param {string} subject The string to wrap.\n * @return {Object} Returns the new wrapper object.\n * @example\n * v('Back to School')\n * .lowerCase()\n * .words()\n * // => ['back', 'to', 'school']\n *\n * v(\" Back to School \")\n * .trim()\n * .truncate(7)\n * .value()\n * // => 'Back...'\n */\nfunction Voca(subject) {\n return new ChainWrapper(subject, false);\n}\n\nObject.assign(Voca, functions, {\n chain: chain\n});\n\nexport default Voca;","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('camelCase', function() {\n\n it('should return the camel case of a string', function() {\n expect(v.camelCase('bird')).to.be.equal('bird');\n expect(v.camelCase('BIRD')).to.be.equal('bird');\n expect(v.camelCase('BirdFlight')).to.be.equal('birdFlight');\n expect(v.camelCase('bird flight')).to.be.equal('birdFlight');\n expect(v.camelCase('San Diego Zoo Safari Park')).to.be.equal('sanDiegoZooSafariPark');\n expect(v.camelCase('-BIRD-FLIGHT-')).to.be.equal('birdFlight');\n expect(v.camelCase('__BIRD___FLIGHT___')).to.be.equal('birdFlight');\n expect(v.camelCase('Restless flycatcher')).to.be.equal('restlessFlycatcher');\n expect(v.camelCase('XMLHttpRequest')).to.be.equal('xmlHttpRequest');\n expect(v.camelCase('weight of up to 12 kg')).to.be.equal('weightOfUpTo12Kg');\n expect(v.camelCase('/home/dmitri/projects/voca')).to.be.equal('homeDmitriProjectsVoca');\n expect(v.camelCase(PRINTABLE_ASCII)).to.be.equal('0123456789AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz');\n expect(v.camelCase('****')).to.be.equal('');\n expect(v.camelCase('****')).to.be.equal('');\n expect(v.camelCase('-----')).to.be.equal('');\n expect(v.camelCase(' ')).to.be.equal('');\n expect(v.camelCase('\\n\\n\\n\\n ***\\t\\t')).to.be.equal('');\n expect(v.camelCase('')).to.be.equal('');\n });\n\n it('should return the camel case of a non-latin string', function() {\n expect(v.camelCase('zborul păsării')).to.be.equal('zborulPăsării');\n expect(v.camelCase('полет птицы')).to.be.equal('полетПтицы');\n expect(v.camelCase('fuerza de sustentación')).to.be.equal('fuerzaDeSustentación');\n expect(v.camelCase('skrzydło ptaka składa się')).to.be.equal('skrzydłoPtakaSkładaSię');\n });\n\n it('should not modify numbers', function() {\n expect(v.camelCase(0)).to.be.equal('0');\n expect(v.camelCase(1200)).to.be.equal('1200');\n expect(v.camelCase('8965')).to.be.equal('8965');\n });\n\n it('should return the camel case of a string representation of an object', function() {\n expect(v.camelCase(['bird flight'])).to.be.equal('birdFlight');\n expect(v.camelCase({\n toString: function() {\n return 'bird flight';\n }\n })).to.be.equal('birdFlight');\n });\n\n it('should return empty string for null or undefined', function() {\n expect(v.camelCase()).to.be.equal('');\n expect(v.camelCase(undefined)).to.be.equal('');\n expect(v.camelCase(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('capitalize', function() {\n\n it('should capitalize the first character in a string', function() {\n expect(v.capitalize('APPLE')).to.be.equal('APPLE');\n expect(v.capitalize('apple')).to.be.equal('Apple');\n expect(v.capitalize('macBook')).to.be.equal('MacBook');\n expect(v.capitalize('f')).to.be.equal('F');\n expect(v.capitalize('')).to.be.equal('');\n expect(v.capitalize('*apple')).to.be.equal('*apple');\n expect(v.capitalize(PRINTABLE_ASCII)).to.be.equal(PRINTABLE_ASCII);\n });\n\n it('should capitalize the first character in a string and keep the rest unmodified', function() {\n expect(v.capitalize('apple', true)).to.be.equal('Apple');\n expect(v.capitalize('APPLE', true)).to.be.equal('Apple');\n expect(v.capitalize('яблоко', true)).to.be.equal('Яблоко');\n expect(v.capitalize('f', true)).to.be.equal('F');\n expect(v.capitalize('', true)).to.be.equal('');\n expect(v.capitalize('100', true)).to.be.equal('100');\n expect(v.capitalize(' ', true)).to.be.equal(' ');\n });\n\n it('should capitalize the first character in a string representation of an object', function() {\n expect(v.capitalize(['grape'])).to.be.equal('Grape');\n expect(v.capitalize({\n toString: function() {\n return 'oRaNgE';\n }\n }, false)).to.be.equal('ORaNgE');\n });\n\n it('should not modify numbers', function() {\n expect(v.capitalize(100)).to.be.equal('100');\n expect(v.capitalize(812, false)).to.be.equal('812');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.capitalize()).to.be.equal('');\n expect(v.capitalize(undefined)).to.be.equal('');\n expect(v.capitalize(null)).to.be.equal('');\n expect(v.capitalize(undefined, true)).to.be.equal('');\n expect(v.capitalize(undefined, false)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('decapitalize', function() {\n\n it('should decapitalize the first character in a string', function() {\n expect(v.decapitalize('Light')).to.be.equal('light');\n expect(v.decapitalize('light')).to.be.equal('light');\n expect(v.decapitalize('Sun')).to.be.equal('sun');\n expect(v.decapitalize('f')).to.be.equal('f');\n expect(v.decapitalize('')).to.be.equal('');\n expect(v.decapitalize('*light')).to.be.equal('*light');\n expect(v.decapitalize(PRINTABLE_ASCII)).to.be.equal(PRINTABLE_ASCII);\n });\n\n it('should decapitalize the first character in a string representation of an object', function() {\n expect(v.decapitalize(['Fruit'])).to.be.equal('fruit');\n expect(v.decapitalize({\n toString: function() {\n return 'CaRrOt';\n }\n }, false)).to.be.equal('caRrOt');\n });\n\n it('should not modify numbers', function() {\n expect(v.decapitalize(100)).to.be.equal('100');\n expect(v.decapitalize(812, false)).to.be.equal('812');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.decapitalize()).to.be.equal('');\n expect(v.decapitalize(undefined)).to.be.equal('');\n expect(v.decapitalize(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('kebabCase', function() {\n\n it('should return the kebab case of a string', function() {\n expect(v.kebabCase('bird')).to.be.equal('bird');\n expect(v.kebabCase('BIRD')).to.be.equal('bird');\n expect(v.kebabCase('BirdFlight')).to.be.equal('bird-flight');\n expect(v.kebabCase('bird flight')).to.be.equal('bird-flight');\n expect(v.kebabCase('San Diego Zoo Safari Park')).to.be.equal('san-diego-zoo-safari-park');\n expect(v.kebabCase('-BIRD-FLIGHT-')).to.be.equal('bird-flight');\n expect(v.kebabCase('__BIRD___FLIGHT___')).to.be.equal('bird-flight');\n expect(v.kebabCase('Restless flycatcher')).to.be.equal('restless-flycatcher');\n expect(v.kebabCase('XMLHttpRequest')).to.be.equal('xml-http-request');\n expect(v.kebabCase('weight of up to 12 kg')).to.be.equal('weight-of-up-to-12-kg');\n expect(v.kebabCase('/home/dmitri/projects/voca')).to.be.equal('home-dmitri-projects-voca');\n expect(v.kebabCase(PRINTABLE_ASCII)).to.be.equal('0123456789-abcdefghijklmnopqrstuvwxyz-abcdefghijklmnopqrstuvwxyz');\n expect(v.kebabCase('****')).to.be.equal('');\n expect(v.kebabCase('****')).to.be.equal('');\n expect(v.kebabCase('-----')).to.be.equal('');\n expect(v.kebabCase(' ')).to.be.equal('');\n expect(v.kebabCase('\\n\\n\\n\\n ***\\t\\t')).to.be.equal('');\n expect(v.kebabCase('')).to.be.equal('');\n });\n\n it('should return the kebab case of a non-latin string', function() {\n expect(v.kebabCase('zborul păsării')).to.be.equal('zborul-păsării');\n expect(v.kebabCase('полет птицы')).to.be.equal('полет-птицы');\n expect(v.kebabCase('fuerza de sustentación')).to.be.equal('fuerza-de-sustentación');\n expect(v.kebabCase('skrzydło ptaka składa się')).to.be.equal('skrzydło-ptaka-składa-się');\n });\n\n it('should not modify numbers', function() {\n expect(v.kebabCase(0)).to.be.equal('0');\n expect(v.kebabCase(1200)).to.be.equal('1200');\n expect(v.kebabCase('8965')).to.be.equal('8965');\n });\n\n it('should return the kebab case of a string representation of an object', function() {\n expect(v.kebabCase(['bird flight'])).to.be.equal('bird-flight');\n expect(v.kebabCase({\n toString: function() {\n return 'bird flight';\n }\n })).to.be.equal('bird-flight');\n });\n\n it('should return empty string for null or undefined', function() {\n expect(v.kebabCase()).to.be.equal('');\n expect(v.kebabCase(undefined)).to.be.equal('');\n expect(v.kebabCase(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport v from '../voca';\n\ndescribe('lowerCase', function() {\n\n it('should return the lower case of a string', function() {\n expect(v.lowerCase('Saturn')).to.be.equal('saturn');\n expect(v.lowerCase('EARTH')).to.be.equal('earth');\n expect(v.lowerCase('456')).to.be.equal('456');\n expect(v.lowerCase('')).to.be.equal('');\n });\n\n it('should return the lower case of a string representation of an object', function() {\n expect(v.lowerCase(['Venus'])).to.be.equal('venus');\n expect(v.lowerCase({\n toString: function() {\n return 'Venus';\n }\n })).to.be.equal('venus');\n });\n\n it('should return empty string for null or undefined', function() {\n expect(v.lowerCase()).to.be.equal('');\n expect(v.lowerCase(undefined)).to.be.equal('');\n expect(v.lowerCase(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('snakeCase', function() {\n\n it('should return the snake case of a string', function() {\n expect(v.snakeCase('bird')).to.be.equal('bird');\n expect(v.snakeCase('BIRD')).to.be.equal('bird');\n expect(v.snakeCase('BirdFlight')).to.be.equal('bird_flight');\n expect(v.snakeCase('bird flight')).to.be.equal('bird_flight');\n expect(v.snakeCase('San Diego Zoo Safari Park')).to.be.equal('san_diego_zoo_safari_park');\n expect(v.snakeCase('-BIRD-FLIGHT-')).to.be.equal('bird_flight');\n expect(v.snakeCase('__BIRD___FLIGHT___')).to.be.equal('bird_flight');\n expect(v.snakeCase('Restless flycatcher')).to.be.equal('restless_flycatcher');\n expect(v.snakeCase('XMLHttpRequest')).to.be.equal('xml_http_request');\n expect(v.snakeCase('weight of up to 12 kg')).to.be.equal('weight_of_up_to_12_kg');\n expect(v.snakeCase('/home/dmitri/projects/voca')).to.be.equal('home_dmitri_projects_voca');\n expect(v.snakeCase(PRINTABLE_ASCII)).to.be.equal('0123456789_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz');\n expect(v.snakeCase('****')).to.be.equal('');\n expect(v.snakeCase('****')).to.be.equal('');\n expect(v.snakeCase('-----')).to.be.equal('');\n expect(v.snakeCase(' ')).to.be.equal('');\n expect(v.snakeCase('\\n\\n\\n\\n ***\\t\\t')).to.be.equal('');\n expect(v.snakeCase('')).to.be.equal('');\n });\n\n it('should return the snake case of a non-latin string', function() {\n expect(v.snakeCase('zborul păsării')).to.be.equal('zborul_păsării');\n expect(v.snakeCase('полет птицы')).to.be.equal('полет_птицы');\n expect(v.snakeCase('fuerza de sustentación')).to.be.equal('fuerza_de_sustentación');\n expect(v.snakeCase('skrzydło ptaka składa się')).to.be.equal('skrzydło_ptaka_składa_się');\n });\n\n it('should not modify numbers', function() {\n expect(v.snakeCase(0)).to.be.equal('0');\n expect(v.snakeCase(1200)).to.be.equal('1200');\n expect(v.snakeCase('8965')).to.be.equal('8965');\n });\n\n it('should return the snake case of a string representation of an object', function() {\n expect(v.snakeCase(['bird flight'])).to.be.equal('bird_flight');\n expect(v.snakeCase({\n toString: function() {\n return 'bird flight';\n }\n })).to.be.equal('bird_flight');\n });\n\n it('should return empty string for null or undefined', function() {\n expect(v.snakeCase()).to.be.equal('');\n expect(v.snakeCase(undefined)).to.be.equal('');\n expect(v.snakeCase(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport v from '../voca';\n\ndescribe('upperCase', function() {\n\n it('should return the upper case of a string', function() {\n expect(v.upperCase('Saturn')).to.be.equal('SATURN');\n expect(v.upperCase('Earth')).to.be.equal('EARTH');\n expect(v.upperCase('456')).to.be.equal('456');\n expect(v.upperCase('')).to.be.equal('');\n });\n\n it('should return the upper case of a string representation of an object', function() {\n expect(v.upperCase(['Venus'])).to.be.equal('VENUS');\n expect(v.upperCase({\n toString: function() {\n return 'Venus';\n }\n })).to.be.equal('VENUS');\n });\n\n it('should return empty string for null or undefined', function() {\n expect(v.upperCase()).to.be.equal('');\n expect(v.upperCase(undefined)).to.be.equal('');\n expect(v.upperCase(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport v from '../voca';\n\ndescribe('chain', function() {\n\n it('should calculate the result using explicit chaining', function() {\n expect(\n v\n .chain('Hello world')\n .value()\n ).to.equal('Hello world');\n expect(\n v\n .chain(' Hello world ')\n .trim()\n .value()\n ).to.equal('Hello world');\n expect(\n v\n .chain('world')\n .isAlpha()\n .value()\n ).to.equal(true);\n expect(\n v\n .chain('Hello world')\n .lowerCase()\n .replace('hello', 'hi')\n .upperCase()\n .value()\n ).to.equal('HI WORLD');\n });\n\n it('should calculate the result using implicit chaining', function() {\n expect(\n v('Hello world')\n .lowerCase()\n .words()\n ).to.eql(['hello', 'world']);\n expect(\n v(' Hello world ')\n .trimLeft()\n .count()\n ).to.equal(13);\n expect(\n v('7 days')\n .replace(/\\sdays/, '')\n .isDigit()\n ).to.equal(true);\n expect(\n v('7 days')\n .replace(/\\sdays/, '')\n .value()\n ).to.equal('7');\n });\n\n it('should transform implicit into explicit chaining', function() {\n expect(\n v('Hello world')\n .chain()\n .lowerCase()\n .words()\n .value()\n ).to.eql(['hello', 'world']);\n expect(\n v('15')\n .chain()\n .isNumeric()\n .value()\n ).to.equal(true);\n expect(\n v('15')\n .chain()\n .isNumeric()\n .thru(function(isNumeric) {\n return isNumeric ? 1 : 0;\n })\n .value()\n ).to.be.equal(1);\n });\n\n it('should allow to pass thru the wrapped value', function() {\n expect(\n v('Hello world')\n .chain()\n .lowerCase()\n .words()\n .thru(function(words) {\n return words[0];\n })\n .value()\n ).to.equal('hello');\n expect(\n v.chain('15')\n .isNumeric()\n .thru()\n .value()\n ).to.equal(true);\n });\n\n it('wrapper object should coerce to a primitive', function() {\n expect(\n 'nice' + v.chain(' evening ').trimRight()\n ).to.be.equal('nice evening');\n expect(\n v('clouds').upperCase() == 'CLOUDS'\n ).to.be.true;\n });\n\n it('wrapper object should coerce to a string', function() {\n expect(\n 'nice ' + v.chain('hello world').words()\n ).to.be.equal('nice hello,world');\n expect(\n v('green tree').split(' ') == 'green,tree'\n ).to.be.true;\n });\n\n it('wrapper object should provide toJSON method', function() {\n expect(\n JSON.stringify(v.chain('happy coding').upperCase().split(' '))\n ).to.be.equal('[\"HAPPY\",\"CODING\"]');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('charAt', function() {\n\n it('should return the character by index', function() {\n expect(v.charAt('Good day', 0)).to.be.equal('G');\n expect(v.charAt('Good day', 1)).to.be.equal('o');\n expect(v.charAt('Good day', 7)).to.be.equal('y');\n expect(v.charAt(PRINTABLE_ASCII, 0)).to.be.equal(' ');\n expect(v.charAt('', 0)).to.be.equal('');\n expect(v.charAt('Good day')).to.be.equal('G');\n expect(v.charAt('Good day', undefined)).to.be.equal('G');\n expect(v.charAt('Good day', null)).to.be.equal('G');\n expect(v.charAt('Good day', NaN)).to.be.equal('G');\n });\n\n it('should return an empty string for out of bounds index', function() {\n expect(v.charAt('Good day', -1)).to.be.equal('');\n expect(v.charAt('Good day', 100)).to.be.equal('');\n });\n\n it('should return the character by index of a string representation of an object', function() {\n expect(v.charAt(['Good evening'], 5)).to.be.equal('e');\n expect(v.charAt({\n toString: function() {\n return 'Morning';\n }\n }, 1)).to.be.equal('o');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.charAt()).to.be.equal('');\n expect(v.charAt(undefined)).to.be.equal('');\n expect(v.charAt(null)).to.be.equal('');\n expect(v.charAt(null, null)).to.be.equal('');\n expect(v.charAt(undefined, undefined)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('codePointAt', function() {\n\n it('should return the code pount number by position', function() {\n expect(v.codePointAt('Good day', 0)).to.be.equal(0x0047);\n expect(v.codePointAt('Good day', 1)).to.be.equal(0x006F);\n expect(v.codePointAt('Good day', 7)).to.be.equal(0x0079);\n expect(v.codePointAt(PRINTABLE_ASCII, 0)).to.be.equal(0x0020);\n expect(v.codePointAt('man\\u0303ana', 2)).to.equal(0x006E);\n expect(v.codePointAt('\\u00E9\\u20DD', 0)).to.equal(0x00E9);\n expect(v.codePointAt('\\uD835\\uDC00\\uD835\\uDC01', 0)).to.equal(0x1D400);\n expect(v.codePointAt('\\uD835\\uDC00\\uD835\\uDC01', 1)).to.equal(0xDC00);\n expect(v.codePointAt('\\uD835\\uDC00\\uD835\\uDC01', 2)).to.equal(0x1D401);\n expect(v.codePointAt('\\uD835\\uDC00\\uD835\\uDC01', 3)).to.equal(0xDC01);\n expect(v.codePointAt('cafe\\u0301', 3)).to.equal(0x0065);\n expect(v.codePointAt('cafe\\u0301', 4)).to.equal(0x0301);\n expect(v.codePointAt('foo\\u0303\\u035C\\u035D\\u035Ebar', 2)).to.equal(0x006F);\n expect(v.codePointAt('foo\\uD834\\uDF06\\u0303\\u035C\\u035D\\u035Ebar\\uD834\\uDF06\\u0303\\u035C\\u035D', 3))\n .to.equal(0x1D306);\n expect(v.codePointAt('foo\\uD834\\uDF06\\u0303\\u035C\\u035D\\u035Ebar\\uD834\\uDF06\\u0303\\u035C\\u035D', 12))\n .to.equal(0x1D306);\n expect(v.codePointAt('foo\\uD834\\uDF06\\u0303\\u035C\\u035D\\u035Ebar\\uD834\\uDF06\\u0303\\u035C\\u035D', 13))\n .to.equal(0xDF06);\n expect(v.codePointAt('Good day')).to.be.equal(0x0047);\n expect(v.codePointAt('Good day', undefined)).to.be.equal(0x0047);\n expect(v.codePointAt('Good day', null)).to.be.equal(0x0047);\n expect(v.codePointAt('Good day', NaN)).to.be.equal(0x0047);\n expect(v.codePointAt(String.fromCharCode(0xD835) + '0', 0)).to.be.equal(0xD835);\n });\n\n it('should return undefined for out of bounds position', function() {\n expect(v.codePointAt('Good day', -1)).to.be.equal(undefined);\n expect(v.codePointAt('Good day', 100)).to.be.equal(undefined);\n expect(v.codePointAt('cafe\\u0301', 5)).to.be.equal(undefined);\n expect(v.codePointAt('\\uD835\\uDC00\\uD835\\uDC01', 4)).to.equal(undefined);\n expect(v.codePointAt('', 0)).to.be.equal(undefined);\n });\n\n it('should return the code point number by position in a string representation of an object', function() {\n expect(v.codePointAt(['Good evening'], 5)).to.be.equal(0x0065);\n expect(v.codePointAt({\n toString: function() {\n return 'Morning';\n }\n }, 1)).to.be.equal(0x006F);\n });\n\n it('should return undefined for null or undefined', function() {\n expect(v.codePointAt()).to.be.equal(undefined);\n expect(v.codePointAt(undefined)).to.be.equal(undefined);\n expect(v.codePointAt(null)).to.be.equal(undefined);\n expect(v.codePointAt(null, null)).to.be.equal(undefined);\n expect(v.codePointAt(undefined, undefined)).to.be.equal(undefined);\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('graphemeAt', function() {\n\n it('should return the grapheme by index', function() {\n expect(v.graphemeAt('Good day', 0)).to.be.equal('G');\n expect(v.graphemeAt('Good day', 1)).to.be.equal('o');\n expect(v.graphemeAt('Good day', 7)).to.be.equal('y');\n expect(v.graphemeAt(PRINTABLE_ASCII, 0)).to.be.equal(' ');\n expect(v.graphemeAt('man\\u0303ana', 2)).to.equal('n\\u0303');\n expect(v.graphemeAt('\\u00E9\\u20DD', 0)).to.equal('\\u00E9\\u20DD');\n expect(v.graphemeAt('\\uD835\\uDC00\\uD835\\uDC01', 1)).to.equal('\\uD835\\uDC01');\n expect(v.graphemeAt('cafe\\u0301', 3)).to.equal('e\\u0301');\n expect(v.graphemeAt('foo\\u0303\\u035C\\u035D\\u035Ebar', 2)).to.equal('o\\u0303\\u035C\\u035D\\u035E');\n expect(v.graphemeAt('foo\\uD834\\uDF06\\u0303\\u035C\\u035D\\u035Ebar\\uD834\\uDF06\\u0303\\u035C\\u035D', 3))\n .to.equal('\\uD834\\uDF06\\u0303\\u035C\\u035D\\u035E');\n expect(v.graphemeAt('foo\\uD834\\uDF06\\u0303\\u035C\\u035D\\u035Ebar\\uD834\\uDF06\\u0303\\u035C\\u035D', 7))\n .to.equal('\\uD834\\uDF06\\u0303\\u035C\\u035D');\n expect(v.graphemeAt('', 0)).to.be.equal('');\n expect(v.graphemeAt('Good day')).to.be.equal('G');\n expect(v.graphemeAt('Good day', undefined)).to.be.equal('G');\n expect(v.graphemeAt('Good day', null)).to.be.equal('G');\n expect(v.graphemeAt('Good day', NaN)).to.be.equal('G');\n });\n\n it('should return an empty string for out of bounds index', function() {\n expect(v.graphemeAt('Good day', -1)).to.be.equal('');\n expect(v.graphemeAt('Good day', 100)).to.be.equal('');\n expect(v.graphemeAt('cafe\\u0301', 4)).to.be.equal('');\n });\n\n it('should return the grapheme by index of a string representation of an object', function() {\n expect(v.graphemeAt(['Good evening'], 5)).to.be.equal('e');\n expect(v.graphemeAt({\n toString: function() {\n return 'Morning';\n }\n }, 1)).to.be.equal('o');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.graphemeAt()).to.be.equal('');\n expect(v.graphemeAt(undefined)).to.be.equal('');\n expect(v.graphemeAt(null)).to.be.equal('');\n expect(v.graphemeAt(null, null)).to.be.equal('');\n expect(v.graphemeAt(undefined, undefined)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('first', function() {\n\n it('should return the first part of a string', function() {\n expect(v.first('Good day', -1)).to.be.equal('');\n expect(v.first('Good day', 0)).to.be.equal('');\n expect(v.first('Good day', 4)).to.be.equal('Good');\n expect(v.first('Good day', 1)).to.be.equal('G');\n expect(v.first('Good day', 8)).to.be.equal('Good day');\n expect(v.first('Good day', 1000)).to.be.equal('Good day');\n expect(v.first('Good day')).to.be.equal('G');\n expect(v.first('', 5)).to.be.equal('');\n expect(v.first('', 0)).to.be.equal('');\n expect(v.first('')).to.be.equal('');\n expect(v.first(PRINTABLE_ASCII, PRINTABLE_ASCII.length)).to.be.equal(PRINTABLE_ASCII);\n expect(v.first(PRINTABLE_ASCII, 1)).to.be.equal(PRINTABLE_ASCII[0]);\n });\n\n it('should return the first part of a string representation of an object', function() {\n expect(v.first(['Good evening'], 5)).to.be.equal('Good ');\n expect(v.first({\n toString: function() {\n return 'Morning';\n }\n }, 2)).to.be.equal('Mo');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.first()).to.be.equal('');\n expect(v.first(undefined)).to.be.equal('');\n expect(v.first(null)).to.be.equal('');\n expect(v.first(null, null)).to.be.equal('');\n expect(v.first(undefined, undefined)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('last', function() {\n\n it('should return the last part of a string', function() {\n expect(v.last('Good day', -1)).to.be.equal('');\n expect(v.last('Good day', 0)).to.be.equal('');\n expect(v.last('Good day', 4)).to.be.equal(' day');\n expect(v.last('Good day', 1)).to.be.equal('y');\n expect(v.last('Good day', 8)).to.be.equal('Good day');\n expect(v.last('Good day', 1000)).to.be.equal('Good day');\n expect(v.last('Good day')).to.be.equal('y');\n expect(v.last('', 5)).to.be.equal('');\n expect(v.last('', 0)).to.be.equal('');\n expect(v.last('')).to.be.equal('');\n expect(v.last(PRINTABLE_ASCII, PRINTABLE_ASCII.length)).to.be.equal(PRINTABLE_ASCII);\n expect(v.last(PRINTABLE_ASCII, 1)).to.be.equal(PRINTABLE_ASCII[PRINTABLE_ASCII.length - 1]);\n });\n\n it('should return the last part of a string representation of an object', function() {\n expect(v.last(['Good evening'], 5)).to.be.equal('ening');\n expect(v.last({\n toString: function() {\n return 'Morning';\n }\n }, 2)).to.be.equal('ng');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.last()).to.be.equal('');\n expect(v.last(undefined)).to.be.equal('');\n expect(v.last(null)).to.be.equal('');\n expect(v.last(null, null)).to.be.equal('');\n expect(v.last(undefined, undefined)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('prune', function() {\n\n it('should prune a string', function() {\n expect(v.prune('Once upon a time there lived in a certain village a little country girl', 7)).to.be.equal('Once...');\n expect(v.prune('I\\'ll go this way and go you that', 19, ' (read more)')).to.be.equal('I\\'ll go (read more)');\n expect(v.prune('Little Red Riding Hood', 6, '...')).to.be.equal('...');\n expect(v.prune('Little Red Riding Hood', 9, '...')).to.be.equal('Little...');\n expect(v.prune('Little Red Riding Hood', 11, '...')).to.be.equal('Little...');\n expect(v.prune('Little Red Riding Hood', 20, '...')).to.be.equal('Little Red Riding...');\n expect(v.prune('Little Red Riding Hood', 22, '...')).to.be.equal('Little Red Riding Hood');\n expect(v.prune('Little Red Riding Hood', 1, '...')).to.be.equal('...');\n expect(v.prune('Little Red Riding Hood', 5, '...')).to.be.equal('...');\n expect(v.prune('Little Red Riding Hood', 0, '(more)')).to.be.equal('(more)');\n expect(v.prune(PRINTABLE_ASCII, PRINTABLE_ASCII.length)).to.be.equal(PRINTABLE_ASCII);\n expect(v.prune(PRINTABLE_ASCII, 0)).to.be.equal('...');\n });\n\n it('should prune a string with extra ASCII characters', function() {\n expect(v.prune('Привет, как дела', 10, '...')).to.be.equal('Привет...');\n expect(v.prune('La variété la plus fréquente est la blanche', 12, '..')).to.be.equal('La variété..');\n });\n\n it('should not prune a string if length parameter is greater or equal than string length', function() {\n expect(v.prune('Once upon', 20)).to.be.equal('Once upon');\n expect(v.prune('Once', 4, ' (read more)')).to.be.equal('Once');\n expect(v.prune('', 0, '....')).to.be.equal('');\n });\n\n it('should prune a string representation of an object', function() {\n expect(v.prune(['Welcome'], 4)).to.be.equal('...');\n expect(v.prune({\n toString: function() {\n return 'Have a nice day';\n }\n }, 6, '..')).to.be.equal('Have..');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.prune()).to.be.equal('');\n expect(v.prune(undefined)).to.be.equal('');\n expect(v.prune(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('slice', function() {\n\n it('should slice a string', function() {\n expect(v.slice('infinite loop', 9)).to.be.equal('loop');\n expect(v.slice('infinite loop', 0)).to.be.equal('infinite loop');\n expect(v.slice('infinite loop')).to.be.equal('infinite loop');\n expect(v.slice('infinite loop', 1)).to.be.equal('nfinite loop');\n expect(v.slice(PRINTABLE_ASCII, 0)).to.be.equal(PRINTABLE_ASCII);\n });\n\n it('should slice a string with an end position', function() {\n expect(v.slice('infinite loop', 9, 12)).to.be.equal('loo');\n expect(v.slice('infinite loop', 9, -1)).to.be.equal('loo');\n expect(v.slice('infinite loop', 0, 'infinite loop'.length)).to.be.equal('infinite loop');\n expect(v.slice('infinite loop', 1, 2)).to.be.equal('n');\n expect(v.slice('infinite loop', -4, -1)).to.be.equal('loo');\n });\n\n it('should slice a string representation of an object', function() {\n expect(v.slice(['infinite loop'], 10)).to.be.equal('oop');\n expect(v.slice({\n toString: function() {\n return 'loop';\n }\n }, 0, 3)).to.be.equal('loo');\n });\n\n it('should slice a string from a number', function() {\n expect(v.slice(12345, 3)).to.be.equal('45');\n expect(v.slice(987, 1, 2)).to.be.equal('8');\n });\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('substr', function() {\n\n it('should substract a string', function() {\n expect(v.substr('infinite loop', 9)).to.be.equal('loop');\n expect(v.substr('infinite loop', 0)).to.be.equal('infinite loop');\n expect(v.substr('infinite loop')).to.be.equal('infinite loop');\n expect(v.substr('infinite loop', 1)).to.be.equal('nfinite loop');\n expect(v.substr('infinite loop', -4)).to.be.equal('loop');\n expect(v.substr(PRINTABLE_ASCII, 0)).to.be.equal(PRINTABLE_ASCII);\n });\n\n it('should substract a string with a length', function() {\n expect(v.substr('infinite loop', 9, 3)).to.be.equal('loo');\n expect(v.substr('infinite loop', 0, 'infinite loop'.length)).to.be.equal('infinite loop');\n expect(v.substr('infinite loop', 1, 1)).to.be.equal('n');\n expect(v.substr('infinite loop', -4, 1)).to.be.equal('l');\n });\n\n it('should substract a string representation of an object', function() {\n expect(v.substr(['infinite loop'], 10)).to.be.equal('oop');\n expect(v.substr({\n toString: function() {\n return 'loop';\n }\n }, 0, 3)).to.be.equal('loo');\n });\n\n it('should substract a string from a number', function() {\n expect(v.substr(12345, 3)).to.be.equal('45');\n expect(v.substr(987, 1, 1)).to.be.equal('8');\n });\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('substring', function() {\n\n it('should substring a string', function() {\n expect(v.substring('infinite loop', 9)).to.be.equal('loop');\n expect(v.substring('infinite loop', 0)).to.be.equal('infinite loop');\n expect(v.substring('infinite loop')).to.be.equal('infinite loop');\n expect(v.substring('infinite loop', 1)).to.be.equal('nfinite loop');\n expect(v.substring(PRINTABLE_ASCII, 0)).to.be.equal(PRINTABLE_ASCII);\n });\n\n it('should substring a string with an end position', function() {\n expect(v.substring('infinite loop', 9, 12)).to.be.equal('loo');\n expect(v.substring('infinite loop', 0, 'infinite loop'.length)).to.be.equal('infinite loop');\n expect(v.substring('infinite loop', 1, 2)).to.be.equal('n');\n });\n\n it('should substring a string representation of an object', function() {\n expect(v.substring(['infinite loop'], 10)).to.be.equal('oop');\n expect(v.substring({\n toString: function() {\n return 'loop';\n }\n }, 0, 3)).to.be.equal('loo');\n });\n\n it('should substring a string from a number', function() {\n expect(v.substring(12345, 3)).to.be.equal('45');\n expect(v.substring(987, 1, 2)).to.be.equal('8');\n });\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('truncate', function() {\n\n it('should truncate a string', function() {\n expect(v.truncate('Once upon a time there lived in a certain village a little country girl', 4)).to.be.equal('O...');\n expect(v.truncate('I\\'ll go this way and go you that', 19, ' (read more)')).to.be.equal('I\\'ll go (read more)');\n expect(v.truncate('Little Red Riding Hood', 9, '...')).to.be.equal('Little...');\n expect(v.truncate('Little Red Riding Hood', 0, '(more)')).to.be.equal('(more)');\n expect(v.truncate('Little Red Riding Hood', 1, '(more)')).to.be.equal('(more)');\n expect(v.truncate('Little Red Riding Hood', 2, '(more)')).to.be.equal('(more)');\n expect(v.truncate('Little Red Riding Hood', 3, '(more)')).to.be.equal('(more)');\n expect(v.truncate('Little Red Riding Hood', 6, '(more)')).to.be.equal('(more)');\n expect(v.truncate('Little Red Riding Hood', 7, '(more)')).to.be.equal('L(more)');\n expect(v.truncate('Little Red Riding Hood', 7, '')).to.be.equal('Little ');\n expect(v.truncate('Little Red Riding Hood', 0, '')).to.be.equal('');\n expect(v.truncate(PRINTABLE_ASCII, PRINTABLE_ASCII.length)).to.be.equal(PRINTABLE_ASCII);\n expect(v.truncate(PRINTABLE_ASCII, 0)).to.be.equal('...');\n });\n\n it('should not truncate a string if length parameter is greater or equal than string length', function() {\n expect(v.truncate('Once upon', 20)).to.be.equal('Once upon');\n expect(v.truncate('Once', 4, ' (read more)')).to.be.equal('Once');\n expect(v.truncate('', 0, '....')).to.be.equal('');\n });\n\n it('should truncate a string representation of an object', function() {\n expect(v.truncate(['Welcome'], 6)).to.be.equal('Wel...');\n expect(v.truncate({\n toString: function() {\n return 'Have a nice day';\n }\n }, 4, '..')).to.be.equal('Ha..');\n });\n\n it('should return an empty string for null or undefined', function() {\n expect(v.truncate()).to.be.equal('');\n expect(v.truncate(undefined)).to.be.equal('');\n expect(v.truncate(null)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('count', function() {\n\n it('should return the number of characters in a string', function() {\n expect(v.count('rain')).to.be.equal(4);\n expect(v.count('')).to.be.equal(0);\n expect(v.count('rainbow')).to.be.equal(7);\n expect(v.count(PRINTABLE_ASCII)).to.be.equal(PRINTABLE_ASCII.length);\n });\n\n it('should return the number of characters in a number', function() {\n expect(v.count(123)).to.be.equal(3);\n expect(v.count(0)).to.be.equal(1);\n expect(v.count(-1.5)).to.be.equal(4);\n });\n\n it('should return the number of characters in a string representation of an object', function() {\n expect(v.count(['droplet'])).to.be.equal(7);\n expect(v.count({\n toString: function() {\n return 'rainfall';\n }\n })).to.be.equal(8);\n });\n\n it('should return zero for undefined or null', function() {\n expect(v.count()).to.be.equal(0);\n expect(v.count(null)).to.be.equal(0);\n expect(v.count(undefined)).to.be.equal(0);\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('countGraphemes', function() {\n\n it('should return the number of characters in a string', function() {\n expect(v.countGraphemes('rain')).to.be.equal(4);\n expect(v.countGraphemes('')).to.be.equal(0);\n expect(v.countGraphemes('rainbow')).to.be.equal(7);\n expect(v.countGraphemes('\\u00E9\\u20DD')).to.be.equal(1);\n expect(v.countGraphemes('\\uD835\\uDC00\\uD835\\uDC01')).to.be.equal(2);\n expect(v.countGraphemes('man\\u0303ana')).to.be.equal(6);\n expect(v.countGraphemes('cafe\\u0301')).to.be.equal(4);\n expect(v.countGraphemes('foo\\u0303\\u035C\\u035D\\u035Ebar')).to.be.equal(6);\n expect(v.countGraphemes('foo\\uD834\\uDF06\\u0303\\u035C\\u035D\\u035Ebar')).to.be.equal(7);\n expect(v.countGraphemes(PRINTABLE_ASCII)).to.be.equal(PRINTABLE_ASCII.length);\n });\n\n it('should return the number of characters in a number', function() {\n expect(v.countGraphemes(123)).to.be.equal(3);\n expect(v.countGraphemes(0)).to.be.equal(1);\n expect(v.countGraphemes(-1.5)).to.be.equal(4);\n });\n\n it('should return the number of characters in a string representation of an object', function() {\n expect(v.countGraphemes(['droplet'])).to.be.equal(7);\n expect(v.countGraphemes({\n toString: function() {\n return 'rainfall';\n }\n })).to.be.equal(8);\n });\n\n it('should return zero for undefined or null', function() {\n expect(v.countGraphemes()).to.be.equal(0);\n expect(v.countGraphemes(null)).to.be.equal(0);\n expect(v.countGraphemes(undefined)).to.be.equal(0);\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('countSubstrings', function() {\n\n it('should return the number of substring appearances in a string', function() {\n expect(v.countSubstrings('Hey man where-where-where\\'s your cup holder?', 'where')).to.be.equal(3);\n expect(v.countSubstrings('And some Skittles', 'Skittles')).to.be.equal(1);\n expect(v.countSubstrings('And some Skittles', 'chocolate')).to.be.equal(0);\n expect(v.countSubstrings('******', '*')).to.be.equal(6);\n expect(v.countSubstrings('*******', '**')).to.be.equal(3);\n expect(v.countSubstrings('*******', '**-')).to.be.equal(0);\n expect(v.countSubstrings('*******', '***')).to.be.equal(2);\n expect(v.countSubstrings('*******', '****')).to.be.equal(1);\n expect(v.countSubstrings('*******', '********')).to.be.equal(0);\n expect(v.countSubstrings('*-*-*', '**')).to.be.equal(0);\n expect(v.countSubstrings('', '')).to.be.equal(0);\n expect(v.countSubstrings(PRINTABLE_ASCII, '#')).to.be.equal(1);\n });\n\n it('should return the number of appearances of a number in a number', function() {\n expect(v.countSubstrings(111222, 1)).to.be.equal(3);\n expect(v.countSubstrings(0, 0)).to.be.equal(1);\n expect(v.countSubstrings(15, 16)).to.be.equal(0);\n });\n\n it('should return the number of substring appearances in a string representation of an object', function() {\n expect(v.countSubstrings(['where-where-where'], 'where')).to.be.equal(3);\n expect(v.countSubstrings({\n toString: function() {\n return 'where-where-where';\n }\n }, 'where')).to.be.equal(3);\n });\n\n it('should return zero for undefined or null', function() {\n expect(v.countSubstrings()).to.be.equal(0);\n expect(v.countSubstrings(undefined)).to.be.equal(0);\n expect(v.countSubstrings(null)).to.be.equal(0);\n expect(v.countSubstrings(undefined, undefined)).to.be.equal(0);\n expect(v.countSubstrings(null, null)).to.be.equal(0);\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('countWhere', function() {\n\n it('should return the number of characters in a string for a predicate', function() {\n expect(v.countWhere('', v.isAlpha)).to.be.equal(0);\n expect(v.countWhere('africa654', v.isAlpha)).to.be.equal(6);\n expect(v.countWhere('790', v.isAlpha)).to.be.equal(0);\n expect(v.countWhere(PRINTABLE_ASCII, v.isDigit)).to.be.equal(10);\n expect(v.countWhere('****--**--**', function(character) {\n return character === '*';\n })).to.be.equal(8);\n expect(v.countWhere('****--**--**', function() {\n return false;\n })).to.be.equal(0);\n });\n\n it('should invoke the predicate with correct parameters and context', function() {\n let verifyIndex = 0;\n const context = {};\n const verifyString = '0123456789';\n expect(v.countWhere(verifyString, function(character, index, string) {\n expect(index).to.be.equal(verifyIndex);\n expect(this).to.be.equal(context);\n expect(string).to.be.equal(verifyString);\n expect(character).to.be.equal(verifyString[verifyIndex]);\n verifyIndex++;\n return true;\n }, context)).to.be.equal(10);\n });\n\n\n it('should return the number of characters in a number for a predicate', function() {\n expect(v.countWhere(123, v.isDigit)).to.be.equal(3);\n expect(v.countWhere(0, v.isDigit)).to.be.equal(1);\n expect(v.countWhere(-1.5, v.isDigit)).to.be.equal(2);\n });\n\n it('should return the number of characters in a string representation of an object for a predicate', function() {\n expect(v.countWhere(['droplet'], v.isDigit)).to.be.equal(0);\n expect(v.countWhere({\n toString: function() {\n return 'homo sapiens';\n }\n }, v.isAlphaDigit)).to.be.equal(11);\n });\n\n it('should return zero for a non function predicate', function() {\n expect(v.countWhere('africa')).to.be.equal(0);\n expect(v.countWhere('africa', undefined)).to.be.equal(0);\n expect(v.countWhere('africa', null)).to.be.equal(0);\n expect(v.countWhere('africa', 'africa')).to.be.equal(0);\n expect(v.countWhere('africa', 0)).to.be.equal(0);\n expect(v.countWhere()).to.be.equal(0);\n });\n\n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('countcountWords', function() {\n\n it('should the words in a string', function() {\n expect(v.countWords('123')).to.equal(1);\n expect(v.countWords('15+20=35')).to.equal(3);\n expect(v.countWords('hello')).to.equal(1);\n expect(v.countWords(' hello ')).to.equal(1);\n expect(v.countWords('hello world')).to.equal(2);\n expect(v.countWords('12+14-18*400')).to.equal(4);\n expect(v.countWords('gravity can cross dimensions')).to.equal(4);\n expect(v.countWords('-gravity-can-cross-dimensions-')).to.equal(4);\n expect(v.countWords('gravity_can_cross_dimensions')).to.equal(4);\n expect(v.countWords('*gravity***can****cross&&dimensions++')).to.equal(4);\n expect(v.countWords('GravityCanCrossDimensions')).to.equal(4);\n expect(v.countWords('GRAVITYCan')).to.equal(2);\n expect(v.countWords('GravityCan')).to.equal(2);\n expect(v.countWords('GravityCANAttract')).to.equal(3);\n expect(v.countWords('gravityCan')).to.equal(2);\n expect(v.countWords('Gravity-Can11Cross **Dimensions1Foo')).to.equal(7);\n expect(v.countWords('Cooper... Cooper... Come in, Cooper.')).to.equal(5);\n expect(v.countWords('Newton\\'s third law')).to.equal(4);\n expect(v.countWords('Newton\\'s thIrd lAw')).to.equal(6);\n expect(v.countWords(PRINTABLE_ASCII)).to.equal(3);\n expect(v.countWords('')).to.equal(0);\n expect(v.countWords()).to.equal(0);\n expect(v.countWords(' ')).to.equal(0);\n expect(v.countWords(' ')).to.equal(0);\n expect(v.countWords('\\n')).to.equal(0);\n expect(v.countWords('***')).to.equal(0);\n expect(v.countWords('***---')).to.equal(0);\n expect(v.countWords('***---')).to.equal(0);\n expect(v.countWords('man\\u0303ana')).to.equal(1);\n expect(v.countWords('maN\\u0303ana')).to.equal(2);\n expect(v.countWords('foo\\u0303\\u035C\\u035D\\u035E bar')).to.equal(2);\n expect(v.countWords('fo-O-O\\u0303\\u035C\\u035D\\u035E-bar')).to.equal(4);\n });\n\n it('should count the words in a string with diacritics', function() {\n expect(v.countWords('clasificación biológica.')).to.equal(2);\n expect(v.countWords('BunăZiua')).to.equal(2);\n expect(v.countWords('Bună1ZiUa!')).to.equal(4);\n expect(v.countWords('Język /polski wywodzi się z` języka` praindoeuropejskiego za**pośrednictwem+języka-prasłowiańskiego.'))\n .to.equal(11);\n expect(v.countWords('Гравитация притягивает все')).to.equal(3);\n expect(v.countWords('Гравитация-Притягивает-ВСЕ!!')).to.equal(3);\n expect(v.countWords('Στις--αρχές** (του) 21ου, αιώνα!')).to.equal(6);\n });\n\n it('should count the countWords in a string representation of an object', function() {\n expect(v.countWords(['GravityCanCrossDimensions'])).to.equal(4);\n expect(v.countWords({\n toString: function() {\n return 'Gr4v1ty';\n }\n })).to.equal(5);\n });\n\n it('should count the words in a string into countWords using a pattern', function() {\n expect(v.countWords('1234567890', /\\d/g)).to.equal(10);\n expect(v.countWords('gravity', /\\w{1,2}/g)).to.equal(4);\n expect(v.countWords('gravity can cross dimensions', '\\\\w+(?=\\\\s?)', 'g')).to.equal(4);\n expect(v.countWords('1234567890', /\\s/g)).to.equal(0);\n });\n\n it('should count the words in a string with default pattern for null and undefined', function() {\n expect(v.countWords('gravity_can_cross_dimensions', null)).to.equal(4);\n expect(v.countWords('gravity_can_cross_dimensions', undefined)).to.equal(4);\n });\n \n});","import { expect } from 'chai';\nimport { PRINTABLE_ASCII } from '../const';\nimport v from '../voca';\n\ndescribe('escapeHtml', function() {\n\n it('should return the escaped string', function() {\n expect(v.escapeHtml('<>&\"\\'`')).to.be.equal('<>&"'`');\n expect(v.escapeHtml('

wonderful world

')).to.be.equal('<p>wonderful world</p>');\n expect(v.escapeHtml(PRINTABLE_ASCII)).to.be.equal(\n ' !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~');\n });\n\n it('should return the escaped string representation of an object', function() {\n expect(v.escapeHtml([''])).to.be.equal('<span>');\n expect(v.escapeHtml({\n toString: function() {\n return '')).to.be.equal(' echo hello ');\n expect(v.stripTags('hello

world

')).to.be.equal('helloworld');\n });\n\n it('should strip tags which attributes contain < or > ', function() {\n let helloWorld = 'hello world';\n expect(v.stripTags('hello world')).to.be.equal(helloWorld);\n expect(v.stripTags('hello \"> world')).to.be.equal(helloWorld);\n expect(v.stripTags('hello _<\"> world')).to.be.equal(helloWorld);\n expect(v.stripTags(\"hello world\")).to.be.equal(helloWorld);\n expect(v.stripTags(\"hello world\")).to.be.equal(helloWorld);\n });\n\n it('should strip tags on multiple lines', function() {\n const multilineHtml =\n`This's a string with quotes:\n\"strings in double quote\";\n'strings in single quote';\nthis\\line is single quoted /with\\slashes `;\n expect(v.stripTags(multilineHtml, '')).to.be.equal(multilineHtml);\n });\n\n it('should strip comments and doctype', function() {\n expect(v.stripTags('')).to.be.equal('');\n expect(v.stripTags('Hello world!')).to.be.equal('Hello world!');\n expect(v.stripTags('Hello world!')).to.be.equal('Hello world!');\n expect(v.stripTags('Hello world!'))\n .to.be.equal('Hello world!');\n expect(v.stripTags('Hello world!'))\n .to.be.equal('Hello world!');\n });\n\n it('should not strip allowable tags', function() {\n expect(v.stripTags('Hello world!', ['b'])).to.be.equal('Hello world!');\n expect(v.stripTags('Hello world!', ['b'])).to.be.equal('Hello world!');\n expect(v.stripTags('Hello world!', '')).to.be.equal('Hello world!');\n const helloWorldHtml = '

hello

world
Other text';\n expect(v.stripTags(helloWorldHtml, '')).to.be.equal('helloworldOther text');\n expect(v.stripTags(helloWorldHtml, ['p'])).to.be.equal('

hello

worldOther text');\n expect(v.stripTags(helloWorldHtml, '')).to.be.equal('helloworldOther text');\n expect(v.stripTags(helloWorldHtml, ['html', 'p', 'a', 'b'])).to.be.equal(helloWorldHtml);\n });\n\n it('should not modify a string without tags', function() {\n expect(v.stripTags('Hello world!')).to.be.equal('Hello world!');\n expect(v.stripTags(' ')).to.be.equal(' ');\n expect(v.stripTags('')).to.be.equal('');\n });\n\n it('should treat especially broken or invalid tags', function() {\n expect(v.stripTags('< html >')).to.be.equal('< html >');\n expect(v.stripTags('<<>>')).to.be.equal('');\n const allowableTags = '

';\n expect(v.stripTags('<>hello<>', allowableTags)).to.be.equal('hello');\n expect(v.stripTags('HtMl text', allowableTags)).to.be.equal('HtMl text');\n expect(v.stripTags('I am a quoted (\\\") string with special chars like \\$,\\!,\\@,\\%,\\&', allowableTags))\n .to.be.equal('I am a quoted (\\\") string with special chars like \\$,\\!,\\@,\\%,\\&');\n expect(v.stripTags('hello \\t\\tworld... strip_tags_test', allowableTags))\n .to.be.equal('hello \\t\\tworld... strip_tags_test');\n });\n\n it('should strip tags from a string representation of an object', function() {\n });\n\n it('should return empty string for null or undefined', function() {\n expect(v.stripTags(null)).to.be.equal('');\n expect(v.stripTags(null, null)).to.be.equal('');\n expect(v.stripTags(undefined)).to.be.equal('');\n expect(v.stripTags(undefined, '')).to.be.equal('');\n expect(v.stripTags(undefined, undefined)).to.be.equal('');\n });\n\n});","import { expect } from 'chai';\nimport getGlobalObject from '../../src/helper/object/get_global';\nimport vocaLibrary from '../voca';\n\ndescribe('noConflict', function() {\n\n it('should return Voca library instance and restore v global variable', function() {\n const globalObject = getGlobalObject();\n globalObject.v = vocaLibrary;\n const voca = vocaLibrary.noConflict();\n expect(voca).to.be.equal(vocaLibrary);\n expect(globalObject.v).to.be.equal(undefined);\n });\n\n it('should return Voca library instance and not modify v global variable', function() {\n const globalObject = getGlobalObject();\n const voca = vocaLibrary.noConflict();\n expect(voca).to.be.equal(vocaLibrary);\n expect(globalObject.v).to.be.equal(undefined);\n });\n\n});","import { expect } from 'chai';\nimport { REGEXP_SEMVER } from '../const';\nimport v from '../voca';\n\ndescribe('version', function() {\n\n it('should match semantic version number pattern', function() {\n expect(REGEXP_SEMVER.test(v.version)).to.be.true;\n });\n\n});","//case\nimport './case/camel_case';\nimport './case/capitalize';\nimport './case/decapitalize';\nimport './case/kebab_case';\nimport './case/lower_case';\nimport './case/snake_case';\nimport './case/upper_case';\n\n//chain\nimport './chain/chain';\n\n//chop\nimport './chop/char_at';\nimport './chop/code_point_at';\nimport './chop/grapheme_at';\nimport './chop/first';\nimport './chop/last';\nimport './chop/prune';\nimport './chop/slice';\nimport './chop/substr';\nimport './chop/substring';\nimport './chop/truncate';\n\n//count\nimport './count/count';\nimport './count/count_graphemes';\nimport './count/count_substrings';\nimport './count/count_where';\nimport './count/count_words';\n\n//escape\nimport './escape/escape_html';\nimport './escape/escape_reg_exp';\nimport './escape/unescape_html';\n\n//helper\nimport './helper/boolean/coerce_to_boolean';\nimport './helper/number/coerce_to_number';\nimport './helper/reg_exp/append_flag_to_reg_exp';\nimport './helper/strip/parse_tag_name';\n\n//format\nimport './format/sprintf';\nimport './format/vprintf';\n\n//index\nimport './index/index_of';\nimport './index/last_index_of';\nimport './index/search';\n\n//manipulate\nimport './manipulate/insert';\nimport './manipulate/latinise';\nimport './manipulate/repeat';\nimport './manipulate/pad';\nimport './manipulate/pad_left';\nimport './manipulate/pad_right';\nimport './manipulate/replace';\nimport './manipulate/replace_all';\nimport './manipulate/reverse';\nimport './manipulate/reverse_grapheme';\nimport './manipulate/slugify';\nimport './manipulate/splice';\nimport './manipulate/trim';\nimport './manipulate/trim_left';\nimport './manipulate/trim_right';\nimport './manipulate/word_wrap';\n\n//query\nimport './query/ends_with';\nimport './query/includes';\nimport './query/is_alpha';\nimport './query/is_alpha_digit';\nimport './query/is_blank';\nimport './query/is_digit';\nimport './query/is_empty';\nimport './query/is_lower_case';\nimport './query/is_numeric';\nimport './query/is_string';\nimport './query/is_upper_case';\nimport './query/matches';\nimport './query/starts_with';\n\n//split\nimport './split/chars';\nimport './split/code_points';\nimport './split/graphemes';\nimport './split/split';\nimport './split/words';\n\n//strip\nimport './strip/strip_tags';\n\n//util\nimport './util/no_conflict';\nimport './util/version';"],"names":["PRINTABLE_ASCII","REVERSED_PRINTABLE_ASCII","REGEXP_SEMVER","isNil","value","undefined","coerceToBoolean","defaultValue","Boolean","isString","subject","coerceToString","String","capitalize","restToLower","subjectString","restToLowerCaseBoolean","toLowerCase","substr","toUpperCase","lowerCase","digit","whitespace","highSurrogate","lowSurrogate","diacriticalMark","base","REGEXP_COMBINING_MARKS","RegExp","REGEXP_SURROGATE_PAIRS","REGEXP_UNICODE_CHARACTER","REGEXP_WHITESPACE","REGEXP_TRIM_LEFT","REGEXP_TRIM_RIGHT","REGEXP_DIGIT","REGEXP_SPECIAL_CHARACTERS","REGEXP_NON_LATIN","REGEXP_HTML_SPECIAL_CHARACTERS","REGEXP_CONVERSION_SPECIFICATION","REGEXP_TRAILING_ZEROS","REGEXP_FLAGS","REGEXP_TAG_LIST","generalPunctuationBlock","nonCharacter","dingbatBlock","lowerCaseLetter","upperCaseLetter","REGEXP_WORD","REGEXP_LATIN_WORD","REGEXP_ALPHA","REGEXP_ALPHA_DIGIT","REGEXP_EXTENDED_ASCII","nilDefault","toString","words","pattern","flags","patternRegExp","test","flagsString","match","wordToCamel","word","index","camelCase","map","join","decapitalize","kebabCase","snakeCase","upperCase","clipNumber","downLimit","upLimit","MAX_SAFE_INTEGER","toInteger","Infinity","truncate","length","end","lengthInt","endString","charAt","position","HIGH_SURROGATE_START","HIGH_SURROGATE_END","LOW_SURROGATE_START","LOW_SURROGATE_END","isHighSurrogate","codePoint","isLowSurrogate","getAstralNumberFromSurrogatePair","coerceToNumber","Number","nanDefault","codePointAt","subjectStringLength","positionNumber","firstCodePoint","charCodeAt","secondCodePoint","first","graphemeAt","graphemeMatch","graphemeMatchIndex","exec","lastIndex","last","prune","truncatedLength","replace","offset","wordInsertLength","slice","start","substring","count","countGrapheme","countSubstrings","substringString","substringLength","matchIndex","indexOf","reduce","Array","prototype","countWhere","predicate","context","predicateWithContext","bind","call","countTruthy","character","countWords","ReplacementIndex","increment","incrementOnEmptyPosition","getIndexByPosition","Object","freeze","repeat","times","timesInt","repeatString","buildPadding","padCharacters","padStringRepeat","padStringRest","padLeft","pad","padString","padRight","alignAndPad","conversion","width","padType","alignmentSpecifier","Const","LITERAL_MINUS","getPaddingCharacter","addSignToFormattedNumber","replacementNumber","formattedReplacement","signSpecifier","LITERAL_PLUS","float","replacement","parseFloat","isNaN","precision","typeSpecifier","TYPE_FLOAT","toFixed","TYPE_FLOAT_SCIENTIFIC","toExponential","TYPE_FLOAT_SCIENTIFIC_UPPERCASE","TYPE_FLOAT_SHORT","TYPE_FLOAT_SHORT_UPPERCASE","formatFloatAsShort","nonZeroPrecision","toPrecision","integerBase","integer","parseInt","TYPE_INTEGER_ASCII_CHARACTER","fromCharCode","TYPE_INTEGER_BINARY","RADIX_BINARY","TYPE_INTEGER_OCTAL","RADIX_OCTAL","TYPE_INTEGER_HEXADECIMAL","RADIX_HEXADECIMAL","TYPE_INTEGER_HEXADECIMAL_UPPERCASE","integerDecimal","stringFormat","compute","formatFunction","TYPE_STRING","formatString","TYPE_INTEGER_DECIMAL","TYPE_INTEGER","formatIntegerDecimal","TYPE_INTEGER_UNSIGNED_DECIMAL","formatIntegerBase","formatFloat","formattedString","ConversionSpecification","properties","percent","paddingSpecifier","isPercentLiteral","LITERAL_PERCENT_SPECIFIER","paddingCharacter","LITERAL_SINGLE_QUOTE","validate","replacementsLength","Error","replacementIndex","replacements","conversionSpecification","widthSpecifier","precisionSpecifier","actualReplacementIndex","computeReplacement","sprintf","format","boundReplacementMatch","replacementMatch","vprintf","escapeCharactersMap","replaceSpecialCharacter","escapeHtml","escapeRegExp","unescapeCharactersMap","characters","keys","reduceUnescapedString","string","key","unescapeHtml","search","fromIndex","lastIndexOf","fromIndexNumber","insert","toInsert","toInsertString","diacritics","diacriticsMap","getDiacriticsMap","forEach","getLatinCharacter","characterWithoutDiacritic","removeCombiningMarks","cleanCharacter","latinise","paddingLength","paddingSideLength","paddingSideRemainingLength","getRegExpFlags","regExp","includes","searchString","appendFlagToRegExp","appendFlag","regularExpressionFlags","source","replaceAll","global","appendFlagToRegularExpression","reverse","split","reverseGrapheme","$0","$1","$2","reversedString","slugify","cleanSubjectString","splice","deleteCount","toAdd","toAddString","startPosition","deleteCountNumber","trimLeft","whitespaceString","whitespaceLength","matchWhitespace","totalWhitespaceLength","trimRight","subjectLength","trim","OPTION_WIDTH","OPTION_NEW_LINE","OPTION_INDENT","OPTION_CUT","determineOptions","options","wordWrap","newLine","indent","cut","wrappedLine","spaceToWrapAt","endsWith","isAlpha","isAlphaDigit","isBlank","isDigit","isEmpty","isLowerCase","valueString","isNumeric","valueNumeric","isUpperCase","matches","patternString","startsWith","startString","chars","codePoints","codePointArray","codePointNumber","push","graphemes","separator","limit","hasSubstringAtIndex","lookBehind","indexOffset","extractedSubstring","parseTagList","tags","tagsList","STATE_START_TAG","STATE_NON_WHITESPACE","STATE_DONE","parseTagName","tagContent","state","tagName","char","STATE_OUTPUT","STATE_HTML","STATE_EXCLAMATION","STATE_COMMENT","allowableTags","isArray","allowableTagsString","replacementString","hasAllowableTags","hasSubstring","depth","output","quote","advance","globalObject","getGlobalObject","self","Function","previousV","v","noConflict","version","ChainWrapper","explicitChain","_wrappedValue","_explicitChain","valueOf","toJSON","chain","thru","changer","makeFunctionChainable","functionInstance","args","result","functions","name","Voca","describe","to","be","equal","eql","true","JSON","stringify","NaN","countGraphemes","verifyIndex","verifyString","false","regexp1","instanceof","regexp2","throw","hello","world","Date","stripTags","helloWorld","multilineHtml","helloWorldHtml","vocaLibrary","voca"],"mappings":"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"} \ No newline at end of file