regexp-range
Version:
create regex class range string `[一-十]` `[⓪-㊿]` ...
1 lines • 4.63 kB
Source Map (JSON)
{"version":3,"file":"index.esm.mjs","sources":["../src/index.ts"],"sourcesContent":["/**\n * Created by user on 2018/5/7/007.\n */\n\nimport { fill as _fillRange } from '@bluelovers/fill-range';\nimport { TABLE_RANGE } from '@lazy-cjk/regexp-range-table';\nimport { array_unique_overwrite } from 'array-hyper-unique';\n\nexport { TABLE_RANGE }\n\nexport type IOptions = {\n\n\t/**\n\t * 字元範圍表\n\t */\n\tdataTables?: typeof TABLE_RANGE,\n\n\t/**\n\t * 回傳 陣列\n\t */\n\tarrayMode?: boolean,\n\n\t/**\n\t * 回傳 字串\n\t */\n\tcreateRegExpString?: boolean,\n\t/**\n\t * 回傳由 [] 包覆的字串\n\t */\n\tcreateRegExpClass?: boolean,\n\n\t/**\n\t * 找到第一個就停止\n\t */\n\tfindFirstOne?: boolean,\n}\n\nexport function matchRange(from: string | number, to: string | number, options: IOptions & {\n\tcreateRegExpString: true,\n}): string\nexport function matchRange(from: string | number, to: string | number, options?: IOptions): string[]\nexport function matchRange(from: string | number, to: string | number, options: IOptions = {}): string[] | string\n{\n\toptions = getOptions(options);\n\n\tlet s = from as string;\n\tlet e = to as string;\n\n\tlet ret: string[] = [];\n\n\tlet findFirstOne = !!options.findFirstOne;\n\n\tObject\n\t\t.keys(options.dataTables)\n\t\t// @ts-ignore\n\t\t.some(function (key: keyof typeof options.dataTables): boolean\n\t\t{\n\t\t\tlet bool: boolean;\n\n\t\t\toptions.dataTables[key].some(function (arr): boolean\n\t\t\t{\n\t\t\t\tlet i = arr.indexOf(s);\n\t\t\t\tlet j = arr.indexOf(e, i);\n\n\t\t\t\tif (i !== -1 && j !== -1)\n\t\t\t\t{\n\t\t\t\t\tret.push(...arr.slice(i, j + 1));\n\n\t\t\t\t\tbool = true;\n\t\t\t\t\treturn findFirstOne;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (bool)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t})\n\t;\n\n\tif (!ret || !ret.length)\n\t{\n\t\treturn null;\n\t}\n\n\tarray_unique_overwrite(ret);\n\n\tif (options.createRegExpString)\n\t{\n\t\treturn toRegExpString(ret, options.createRegExpClass);\n\t}\n\n\treturn ret;\n}\n\nexport function toRegExpString(arr: string[], warpClass?: boolean)\n{\n\tif (arr.length === 1)\n\t{\n\t\treturn arr[0];\n\t}\n\n\tlet s = arr.join('');\n\n\treturn warpClass ? '[' + s + ']' : s;\n}\n\nexport function fillRange(from: string | number, to: string | number, options: IOptions = {}): string[]\n{\n\toptions = getOptions(options);\n\n\tlet s = from;\n\tlet e = to;\n\n\tlet ret: string[] = null;\n\n\tret = matchRange(from, to, options);\n\n\tif (!ret && (options.arrayMode || String(s).length === 1 && String(e).length === 1))\n\t{\n\t\tlet _ok: boolean;\n\n\t\tif (typeof s === 'string' && typeof e === 'string')\n\t\t{\n\t\t\tlet a = s.charCodeAt(0);\n\t\t\tlet b = e.charCodeAt(0);\n\n\t\t\t_ok = a <= b;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_ok = true;\n\t\t}\n\n\t\tif (_ok)\n\t\t{\n\t\t\tret = _fillRange(s, e);\n\t\t}\n\n\t\tif (!ret?.length)\n\t\t{\n\t\t\tret = null;\n\t\t}\n\t}\n\n\tif (Array.isArray(ret))\n\t{\n\t\tret = ret.map(v => String(v));\n\t}\n\n\treturn ret;\n}\n\nexport function getOptions(options: IOptions): IOptions\n{\n\tlet opts = Object.assign({} as IOptions, options);\n\n\topts.dataTables = opts.dataTables || TABLE_RANGE;\n\n\treturn opts;\n}\n\n// @ts-ignore\nif (process.env.TSDX_FORMAT !== 'esm')\n{\n\tObject.defineProperty(matchRange, \"__esModule\", { value: true });\n\n\tObject.defineProperty(matchRange, 'matchRange', { value: matchRange });\n\tObject.defineProperty(matchRange, 'default', { value: matchRange });\n\n\tObject.defineProperty(matchRange, 'getOptions', {\n\t\tvalue: getOptions,\n\t});\n\tObject.defineProperty(matchRange, 'toRegExpString', {\n\t\tvalue: toRegExpString,\n\t});\n\tObject.defineProperty(matchRange, 'TABLE_RANGE', {\n\t\tvalue: TABLE_RANGE,\n\t});\n\tObject.defineProperty(matchRange, 'fillRange', {\n\t\tvalue: fillRange,\n\t});\n}\n\nexport default matchRange;\n"],"names":["s","from","e","to","ret","keys","options","dataTables","some","key","bool","arr","indexOf","j","push","slice","i","findFirstOne","length","array_unique_overwrite","createRegExpString","toRegExpString","createRegExpClass","warpClass","join","_ok"],"mappings":";;;;;;;;;;EAyCA,IAAAA,IAAAC,GAECC,IAAAC,GAKIC,IAAA;gBAyDJC,KAAAC,EAAAC,YAMIC,MAAS,SAAAC;IAGT,IAAAC;QAIAJ,EAAAC,WAASE,GAAQD,eAAaG;kCAM5BC;WACA,YAAA,MAAAC,GAOJ,OALAT,EAAAU,QAAaH,EAAAI,MAAAC,GAAAH,IAAA,KAGbH,KAAA,GAEAO;oBAWD;YAODb,EAAAc,UASYC,EAAAf,IACZE,EAAAc,qBAGGC,eAAAjB,GAAAE,EAAAgB,qBAOHlB,KAnBA;;;AAsBA,SAAAiB,eAAAV,GAAAY;EAEC,IAAE,MAAFZ,EAAAO,QAEA,OAAAP,EAAA;EAGA,IAAAX,IAAAW,EAAAa,KAAA;EACA,OAAAD,IAAA,MAAAvB,IAAA,MAAAA;;;AAGF,mBAA0BC,GAAAE,GAAAG,IAAA,CAAA;;;;IAA1B,IAAAmB;;;;;;;;;;;;"}