2 Star 5 Fork 3

K. / string-utils.js

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
index.js.map 32.17 KB
一键复制 编辑 原始数据 按行查看 历史
{"version":3,"file":"index.js","sources":["node_modules/lodash/_freeGlobal.js","node_modules/lodash/_root.js","node_modules/lodash/_Symbol.js","node_modules/lodash/_getRawTag.js","node_modules/lodash/_objectToString.js","node_modules/lodash/_baseGetTag.js","node_modules/lodash/isArray.js","node_modules/lodash/isObjectLike.js","node_modules/lodash/isString.js","node_modules/lodash/isSymbol.js","src/buffer.js","node_modules/lodash/_arrayPush.js","node_modules/lodash/_baseIsArguments.js","node_modules/lodash/isArguments.js","node_modules/lodash/_isFlattenable.js","node_modules/lodash/_baseFlatten.js","node_modules/lodash/flattenDeep.js","src/toSafeString.js","src/trim.js","src/isEmptyString.js","src/isEmptyStringOrWhitespace.js"],"sourcesContent":["/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","'use strict';\n\nconst bufferExists = typeof Buffer !== 'undefined';\nconst arrayBufferExists = typeof ArrayBuffer !== 'undefined';\n\nexport const isSupportBuffer = () => bufferExists || arrayBufferExists;\n\nexport function isBufferObject(obj) {\n if (obj instanceof ArrayBuffer) {\n return true;\n }\n if (obj.BYTES_PER_ELEMENT) {\n return true;\n }\n if (bufferExists) {\n return Buffer.isBuffer(obj);\n }\n return false;\n}\n\nfunction toHex(n) {\n if (n < 16) {\n return '0' + n.toString(16);\n }\n return n.toString(16);\n}\n\nexport function bufferToString(buf, encoding) {\n if (!isBufferObject(buf)) {\n return '';\n }\n encoding = encoding ?? 'utf-8';\n\n if (bufferExists) {\n return Buffer.from(buf).toString(encoding);\n }\n\n let view;\n if (buf instanceof ArrayBuffer) {\n view = new Uint16Array(buf);\n } else if (buf.BYTES_PER_ELEMENT) {\n view = buf;\n }\n\n if (encoding === 'hex') {\n let out = '';\n for (let i = 0, l = view.byteLength; i < l; ++i) {\n if (view[i]) {\n out += toHex(view[i]);\n }\n }\n return out;\n }\n\n if (encoding === 'base64') {\n return btoa(String.fromCharCode.apply(null, view));\n }\n\n if (typeof TextDecoder === 'undefined') {\n return String.fromCharCode.apply(null, view);\n }\n\n const decoder = new TextDecoder(encoding);\n return decoder.decode(view);\n}\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","'use strict';\n\nimport isString from './isString';\nimport isSymbol from './isSymbol';\nimport flattenDeep from './flattenDeep';\nimport { bufferToString, isBufferObject } from './buffer';\n\nconst isArray = Array.isArray;\n\n/** Used as references for various `Number` constants. */\nconst INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nconst symbolProto = typeof Symbol !== 'undefined' && Symbol.prototype ? Symbol.prototype : undefined;\nconst symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n *\n * 将字符串转为 Unicode 正规形式\n *\n * @param value\n * @return {string}\n */\nconst normalize = (value) => {\n if (typeof value.normalize === 'function') {\n return value.normalize();\n }\n return value;\n};\n\n/**\n *\n * @param {string} value\n * @param {string} arg\n * @return {string}\n */\nfunction toSafeString(value, arg) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n // Exit early for strings to avoid a performance hit in some environments.\n if (isString(value)) {\n return normalize(value); // 增加 normalize : http://www.ruanyifeng.com/blog/2014/12/unicode.html\n }\n if (isArray(value)) {\n if (value.length <= 0) {\n return '';\n }\n return normalize(flattenDeep(value).join(arg ?? ''));\n }\n if (symbolProto && isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n if (isBufferObject(value)) {\n return normalize(bufferToString(value, arg));\n }\n const type = typeof value;\n if (type === 'function') {\n return ''; // @todo function 要如何转为 安全的字符串 来表达?\n }\n if (type === 'object' && typeof value.toString === 'function') {\n return normalize(value.toString());\n }\n const result = `${value}`; // 改用回 lodash 原来的写法\n return (result === '0' && (1 / value) === -INFINITY) ? '-0' : result;\n}\n\nexport default toSafeString;","'use strict';\n\nimport isString from 'lodash/isString';\nimport toSafeString from './toSafeString';\n\nconst isArray = Array.isArray;\n\nconst TrimBoth = 0;\nconst TrimLeft = 1;\nconst TrimRight = -1;\n\nconst PlusCharList = true;\nconst ReplaceCharList = false;\n\n/**\n * default white space char list\n *\n * @see http://php.net/manual/en/function.trim.php\n *\n * \" \" (ASCII 32 (0x20)), an ordinary space.\n * \"\\t\" (ASCII 9 (0x09)), a tab.\n * \"\\n\" (ASCII 10 (0x0A)), a new line (line feed).\n * \"\\r\" (ASCII 13 (0x0D)), a carriage return.\n * \"\\0\" (ASCII 0 (0x00)), the NUL-byte.\n * \"\\x0B\" (ASCII 11 (0x0B)), a vertical tab.\n */\nconst DefaultWhitespace = [\n ' ',\n '\\t',\n '\\n',\n '\\r',\n '\\0',\n '\\v',\n '\\f',\n '\\x0b',\n '\\xa0',\n '\\u2000',\n '\\u2001',\n '\\u2002',\n '\\u2003',\n '\\u2004',\n '\\u2005',\n '\\u2006',\n '\\u2007',\n '\\u2008',\n '\\u2009',\n '\\u200a',\n '\\u200b',\n '\\u2028',\n '\\u2029',\n '\\u3000'\n].join('');\n\n/**\n * 转换字符列表,只将数组和字符串输出,其他返回空白字符串\n *\n * @param {string|string[]} charList\n * @return {string}\n */\nfunction convertCharList(charList) {\n if (isArray(charList)) {\n charList = charList.join('');\n }\n if (isString(charList) && charList !== '') {\n return toSafeString(charList);\n }\n return '';\n}\n\n\n/**\n * PHP的字符串截取函数\n *\n * @see http://locutus.io/php/strings/trim/\n * @see http://php.net/manual/en/function.trim.php\n *\n * @param {string} str 要截取的字符串\n * @param {string|null|undefined|array} charList 要截取的字符列表\n * @param {boolean} isPlus 字符列表是否为追加模式,默认为True,即以追加模式进行截取。默认PHP的模式,为指定了charlist后,就会替换掉默认的charlist\n * @param {number} mode 截取模式,是两边截取,还是只截取左边 或 右边。\n * @returns {string}\n */\nexport function trim(\n str,\n charList = null,\n isPlus = PlusCharList,\n mode = TrimBoth\n) {\n var whitespace = DefaultWhitespace;\n var l = 0;\n var i = 0;\n // @todo how about 0xD800 ~ 0xDBFF ?\n str = toSafeString(str);\n charList = convertCharList(charList);\n\n if (charList !== '') {\n charList = charList.replace(/([[\\]().?/*{}+$^:])/g, '$1');\n // 这里进行了修改,isPlus = true时为追加模式\n if (isPlus) {\n whitespace += charList;\n } else {\n whitespace = charList;\n }\n }\n // 0 or > 0\n l = str.length;\n if (mode >= TrimBoth && l > 0) {\n for (i = 0; i < l; i++) {\n if (whitespace.indexOf(str.charAt(i)) === -1) {\n str = str.substring(i);\n break;\n }\n }\n }\n l = str.length;\n if (mode <= TrimBoth && l > 0) {\n for (i = l - 1; i >= 0; i--) {\n if (whitespace.indexOf(str.charAt(i)) === -1) {\n str = str.substring(0, i + 1);\n break;\n }\n }\n }\n\n if (mode >= TrimBoth) {\n return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';\n }\n return whitespace.indexOf(str.charAt(str.length - 1)) === -1 ? str : '';\n}\n\ntrim.Replace = ReplaceCharList;\ntrim.Plus = PlusCharList;\n\n/**\n * 左截取\n *\n * @see http://php.net/manual/en/function.rtrim.php\n * @param {string} str 要截取的字符串\n * @param {string|null|undefined|array} charList 要截取的字符列表\n * @param {boolean} isPlus 字符列表是否为追加模式,默认为True,即以追加模式进行截取。默认PHP的模式,为指定了 charList 后,就会替换掉默认的charlist\n * @return {string}\n */\nexport function ltrim(\n str,\n charList = null,\n isPlus = PlusCharList\n) {\n return trim(str, charList, isPlus, TrimLeft);\n}\n\n/**\n * 右截取\n *\n * @see http://php.net/manual/en/function.ltrim.php\n * @param {string} str 要截取的字符串\n * @param {string|null|undefined|array} charList 要截取的字符列表\n * @param {boolean} isPlus 字符列表是否为追加模式,默认为True,即以追加模式进行截取。默认PHP的模式,为指定了 charList 后,就会替换掉默认的charlist\n * @return {string}\n */\nexport function rtrim(\n str,\n charList = null,\n isPlus = PlusCharList\n) {\n return trim(str, charList, isPlus, TrimRight);\n}","'use strict';\n\n/**\n * 是否为空字符串\n *\n * @param value\n * @return {boolean}\n */\nimport toSafeString from './toSafeString';\n\nexport default function isEmptyString(value) {\n if (value === null || typeof value === 'undefined') {\n return true;\n }\n return toSafeString(value).length <= 0;\n}","import isEmptyString from './isEmptyString';\nimport { trim } from './trim';\n\n/**\n * 是否空白文字,或者纯粹的空格字符串\n *\n * @param value\n * @param {string|string[]} charList\n * @return {boolean}\n */\nexport default function isEmptyStringOrWhitespace(value, charList) {\n if (isEmptyString(value)) {\n return true;\n }\n return trim(value, charList).length <= 0;\n}"],"names":["global","freeGlobal","Symbol","root","objectProto","nativeObjectToString","symToStringTag","getRawTag","objectToString","isArray","isObjectLike","baseGetTag","bufferExists","Buffer","isBufferObject","obj","ArrayBuffer","BYTES_PER_ELEMENT","isBuffer","toHex","n","toString","bufferToString","buf","encoding","from","view","Uint16Array","out","i","l","byteLength","btoa","String","fromCharCode","apply","TextDecoder","decoder","decode","hasOwnProperty","baseIsArguments","isArguments","isFlattenable","arrayPush","baseFlatten","Array","INFINITY","symbolProto","prototype","undefined","symbolToString","normalize","value","toSafeString","arg","isString","length","flattenDeep","join","isSymbol","call","type","result","TrimBoth","TrimLeft","TrimRight","PlusCharList","ReplaceCharList","DefaultWhitespace","convertCharList","charList","trim","str","isPlus","mode","whitespace","replace","indexOf","charAt","substring","Replace","Plus","ltrim","rtrim","isEmptyString","isEmptyStringOrWhitespace"],"mappings":"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"}
JavaScript
1
https://gitee.com/janpoem/string-utils.js.git
git@gitee.com:janpoem/string-utils.js.git
janpoem
string-utils.js
string-utils.js
master

搜索帮助