uni-string
Version:
Unicode String object
1 lines • 19.4 kB
Source Map (JSON)
{"version":3,"file":"index.cjs.development.cjs","sources":["../src/index.ts","../src/index.cts"],"sourcesContent":["import { runes } from 'runes2';\nimport { classPrototype } from \"es6-class-prototype\";\n\nexport interface IObjectWithSymbolSplit\n{\n\t[Symbol.split](separator?: RegExp | string, limit?: number): string[]\n}\n\nexport type IStringSplitInput = RegExp | string | IObjectWithSymbolSplit;\n\nexport const STRING_PROTOTYPE = Object.getOwnPropertyNames(String.prototype);\n\nexport class UString extends String\n{\n\tprotected _arr: string[] = null;\n\n\tconstructor(str: unknown, ...argv: unknown[])\n\t{\n\t\tsuper(str);\n\n\t\tlet d = Object.getOwnPropertyDescriptor(this, '_arr');\n\t\tObject.defineProperty(this, '_arr', Object.assign(d, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t}));\n\t}\n\n\toverride [Symbol.iterator]()\n\t{\n\t\treturn UString.toArray(this)[Symbol.iterator]();\n\t}\n\n\tstatic isString(str: unknown): str is string | String\n\t{\n\t\treturn (typeof str === 'string' || str instanceof String);\n\t}\n\n\tstatic toArray(str: unknown)\n\t{\n\t\tif (str instanceof UString)\n\t\t{\n\t\t\treturn str.toArray();\n\t\t}\n\n\t\treturn runes(String(str));\n\t}\n\n\ttoArray(): string[]\n\t{\n\t\tif (!this._arr)\n\t\t{\n\t\t\tthis._arr = runes(String(this));\n\t\t}\n\n\t\treturn this._arr;\n\t}\n\n\toverride split(separator?: IStringSplitInput, limit?: number): string[]\n\t{\n\t\tlet ret: string[];\n\t\tlet str = String(this);\n\n\t\tif (separator === '')\n\t\t{\n\t\t\tret = UString.toArray(this);\n\n\t\t\tif (typeof limit !== 'undefined')\n\t\t\t{\n\t\t\t\tret = ret.slice(0, limit);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tret = String.prototype.split.call(str, separator as any, limit)\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\toverride substr(start: number, length?: number): string\n\t{\n\t\treturn UString.toArray(this).slice(start).slice(0, length).join('');\n\t}\n\n\toverride substring(start: number, indexEnd?: number)\n\t{\n\t\tif (Number.isNaN(start) || start < 0)\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\n\t\tif (typeof indexEnd === 'number')\n\t\t{\n\t\t\tif (Number.isNaN(indexEnd) || indexEnd < 0)\n\t\t\t{\n\t\t\t\tindexEnd = 0;\n\t\t\t}\n\n\t\t\tif (start > indexEnd)\n\t\t\t{\n\t\t\t\t[start, indexEnd] = [indexEnd, start];\n\t\t\t}\n\t\t}\n\n\t\treturn this.slice(start, indexEnd);\n\t}\n\n\toverride indexOf(search: string, start: number = 0): number\n\t{\n\t\tlet a = UString.toArray(this);\n\n\t\tstart = Math.max(0, Math.min(a.length, start));\n\t\tsearch = String(search);\n\n\t\tif (search === '')\n\t\t{\n\t\t\treturn start;\n\t\t}\n\n\t\ta = a.slice(start);\n\n\t\tlet s = UString.toArray(search);\n\n\t\tlet i = 0;\n\t\tlet j = 0;\n\n\t\tlet se = s[s.length - 1];\n\n\t\tdo\n\t\t{\n\t\t\ti = a.indexOf(s[0], j);\n\n\t\t\tif (i !== -1)\n\t\t\t{\n\t\t\t\tif (a.slice(i, i + s.length).join('') === search)\n\t\t\t\t{\n\t\t\t\t\treturn start + i;\n\t\t\t\t}\n\n\t\t\t\tj = i;\n\n\t\t\t\tif (s.length > 1)\n\t\t\t\t{\n\t\t\t\t\ti = a.indexOf(se, i + 1);\n\t\t\t\t\tj = i - s.length;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tj++;\n\t\t}\n\t\twhile (i !== -1 && j < a.length);\n\n\t\treturn -1;\n\t}\n\n\toverride includes(search: string, start: number = 0)\n\t{\n\t\treturn UString.toArray(this).slice(start).join('').indexOf(search) !== -1\n\t}\n\n\toverride slice(start: number, indexEnd?: number)\n\t{\n\t\treturn UString.toArray(this).slice(start, indexEnd).join('');\n\t}\n\n\toverride charAt(index: number): string\n\t{\n\t\treturn this.substr(index, 1);\n\t}\n\n\toverride startsWith(search: string, pos?: number): boolean\n\t{\n\t\treturn this.substr(!pos || pos < 0 ? 0 : +pos, search.length)\n\t\t\t.indexOf(search) === 0\n\t\t\t;\n\t}\n\n\toverride endsWith(search: string, length?: number): boolean\n\t{\n\t\tlet a = UString.toArray(this);\n\t\tlet s = UString.toArray(search);\n\n\t\tif (typeof length === 'undefined' || length > a.length)\n\t\t{\n\t\t\tlength = a.length;\n\t\t}\n\n\t\treturn this.substring(length - s.length, length) === search;\n\t}\n\n\toverride padEnd(targetLength: number, padString: string)\n\t{\n\t\ttargetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n\t\tpadString = String((typeof padString !== 'undefined' ? padString : ' '));\n\n\t\tlet str = this.split('');\n\t\tlet pad = this.split.call(padString, '');\n\n\t\tif (str.length > targetLength)\n\t\t{\n\t\t\treturn String(this);\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttargetLength = targetLength - str.length;\n\t\t\tif (targetLength > pad.length)\n\t\t\t{\n\t\t\t\tpadString += padString.repeat(targetLength / pad.length); //append to original to ensure we are longer than needed\n\n\t\t\t\t// @ts-ignore\n\t\t\t\tpad = new UString(padString);\n\t\t\t}\n\t\t\treturn String(this) + pad.slice(0, targetLength);\n\t\t}\n\t}\n\n\toverride padStart(targetLength: number, padString: string)\n\t{\n\t\ttargetLength = targetLength >> 0; //truncate if number or convert non-number to 0;\n\t\tpadString = String((typeof padString !== 'undefined' ? padString : ' '));\n\n\t\tlet str = this.split('');\n\t\tlet pad = this.split.call(padString, '');\n\n\t\tif (str.length > targetLength)\n\t\t{\n\t\t\treturn String(this);\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttargetLength = targetLength - str.length;\n\t\t\tif (targetLength > pad.length)\n\t\t\t{\n\t\t\t\tpadString += padString.repeat(targetLength / pad.length); //append to original to ensure we are longer than needed\n\n\t\t\t\t// @ts-ignore\n\t\t\t\tpad = new UString(padString);\n\t\t\t}\n\n\t\t\treturn pad.slice(0, targetLength) + String(this);\n\t\t}\n\t}\n\n\n\n\t/**\n\t * 𠮷 134071 20bb7\n\t */\n\toverride codePointAt(pos: number): number\n\t{\n\t\treturn this.toArray()[pos].codePointAt(0)\n\t}\n\n\tstatic UString = UString;\n\t/**\n\t * @private\n\t */\n\tstatic default = UString;\n\n\tstatic create(str: unknown, ...argv: unknown[])\n\t{\n\t\treturn new this(str, ...argv);\n\t}\n\n\t/**\n\t * 顯示 目前支援 unicode 的 method\n\t */\n\tstatic get support(): {\n\n\t\tsplit?: boolean,\n\t\tsubstr?: boolean,\n\t\tsubstring?: boolean,\n\t\tindexOf?: boolean,\n\t\tincludes?: boolean,\n\t\tslice?: boolean,\n\t\tcharAt?: boolean,\n\t\tstartsWith?: boolean,\n\t\tendsWith?: boolean,\n\t\tpadEnd?: boolean,\n\t\tpadStart?: boolean,\n\n\t\tcodePointAt?: boolean,\n\n\t\t[key: string]: boolean,\n\t}\n\t{\n\t\tlet prototype = classPrototype(this);\n\n\t\treturn Object.keys(prototype).reduce(function (a, b)\n\t\t{\n\t\t\tif (STRING_PROTOTYPE.includes(b))\n\t\t\t{\n\t\t\t\t// @ts-ignore\n\t\t\t\ta[b] = true;\n\t\t\t}\n\n\t\t\treturn a;\n\t\t}, {} as Record<keyof String, true | undefined>)\n\t}\n\n\tstatic indexOf(str: unknown, search: string, start: number = 0)\n\t{\n\t\treturn this.create(str).indexOf(search, start);\n\t}\n\n\tstatic includes(str: unknown, search: string, start: number = 0)\n\t{\n\t\treturn this.create(str).includes(search, start);\n\t}\n\n\t/**\n\t * splits a String object into an array of strings by separating the string into substrings, using a specified separator string to determine where to make each split.\n\t */\n\tstatic split(str: unknown, separator?: any, limit?: number)\n\t{\n\t\treturn this.create(str).split(separator, limit);\n\t}\n\n\tstatic substr(str: unknown, start: number, length?: number)\n\t{\n\t\treturn this.create(str).substr(start, length);\n\t}\n\n\tstatic substring(str: unknown, start: number, indexEnd?: number)\n\t{\n\t\treturn this.create(str).substring(start, indexEnd);\n\t}\n\n\tstatic slice(str: unknown, start: number, indexEnd?: number)\n\t{\n\t\treturn this.create(str).slice(start, indexEnd);\n\t}\n\n\tstatic charAt(str: unknown, index: number)\n\t{\n\t\treturn this.create(str).charAt(index);\n\t}\n\n\tstatic padEnd(str: unknown, targetLength: number, padString: string)\n\t{\n\t\treturn this.create(str).padEnd(targetLength, padString);\n\t}\n\n\tstatic padStart(str: unknown, targetLength: number, padString: string)\n\t{\n\t\treturn this.create(str).padStart(targetLength, padString);\n\t}\n\n\tstatic startsWith(str: unknown, search: string, pos?: number)\n\t{\n\t\treturn this.create(str).startsWith(search, pos);\n\t}\n\n\tstatic endsWith(str: unknown, search: string, length?: number)\n\t{\n\t\treturn this.create(str).endsWith(search, length);\n\t}\n\n\tget charLength()\n\t{\n\t\treturn UString.toArray(this).length;\n\t}\n\n\tsize()\n\t{\n\t\treturn UString.toArray(this).length;\n\t}\n\n\tstatic size(str: unknown)\n\t{\n\t\treturn this.create(str).size();\n\t}\n\n\t/**\n\t * 𠮷 134071 20bb7\n\t */\n\tstatic codePointAt(str: unknown, pos: number): number\n\t{\n\t\treturn this.create(str).codePointAt(pos)\n\t}\n\n}\n\nexport default UString;\n\n// @ts-ignore\nif (process.env.TSDX_FORMAT !== 'esm')\n{\n\tObject.defineProperty(UString, 'UString', { value: UString });\n\tObject.defineProperty(UString, 'default', { value: UString });\n\tObject.defineProperty(UString, \"__esModule\", { value: true });\n}\n","// @ts-ignore\nimport { UString } from './index.ts';\n// @ts-ignore\nexport = UString;\n"],"names":["STRING_PROTOTYPE","Object","getOwnPropertyNames","String","prototype","UString","_arr","constructor","str","argv","d","getOwnPropertyDescriptor","defineProperty","assign","configurable","enumerable","Symbol","iterator","toArray","isString","runes","split","separator","limit","ret","slice","call","substr","start","length","join","substring","indexEnd","Number","isNaN","indexOf","search","a","Math","max","min","s","i","j","se","includes","charAt","index","startsWith","pos","endsWith","padEnd","targetLength","padString","pad","repeat","padStart","codePointAt","default","create","support","classPrototype","keys","reduce","b","charLength","size","value","module","exports"],"mappings":"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"}