prh 6.0.4 → 6.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/utils/regexp.d.ts +0 -1
- package/lib/utils/regexp.js +2 -14
- package/lib/utils/regexp.js.map +1 -1
- package/package.json +1 -1
package/lib/utils/regexp.d.ts
CHANGED
package/lib/utils/regexp.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.jpChar = exports.jpKanji = exports.jpKana = exports.jpHira =
|
|
3
|
+
exports.jpChar = exports.jpKanji = exports.jpKana = exports.jpHira = void 0;
|
|
4
4
|
exports.concat = concat;
|
|
5
5
|
exports.combine = combine;
|
|
6
6
|
exports.addBoundary = addBoundary;
|
|
@@ -13,15 +13,6 @@ exports.equals = equals;
|
|
|
13
13
|
const regexpRegexp = /^\/(.*)\/([gimy]*)$/;
|
|
14
14
|
const hankakuAlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
15
15
|
const zenkakuAlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
16
|
-
exports.supportRegExpUnicodeFlag = (() => {
|
|
17
|
-
try {
|
|
18
|
-
new RegExp("", "u");
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
catch (e) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
})();
|
|
25
16
|
// http://www.tamasoft.co.jp/ja/general-info/unicode.html
|
|
26
17
|
exports.jpHira = /[ぁ-ゖ]/;
|
|
27
18
|
exports.jpKana = /[ァ-ヺ]/;
|
|
@@ -127,10 +118,7 @@ function spreadAlphaNum(str) {
|
|
|
127
118
|
return new RegExp(result);
|
|
128
119
|
}
|
|
129
120
|
function addDefaultFlags(regexp) {
|
|
130
|
-
let flags = "
|
|
131
|
-
if (exports.supportRegExpUnicodeFlag) {
|
|
132
|
-
flags += "u";
|
|
133
|
-
}
|
|
121
|
+
let flags = "gmu";
|
|
134
122
|
if (regexp.ignoreCase) {
|
|
135
123
|
flags += "i";
|
|
136
124
|
}
|
package/lib/utils/regexp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regexp.js","sourceRoot":"","sources":["regexp.ts"],"names":[],"mappings":"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","sourcesContent":["const regexpRegexp = /^\\/(.*)\\/([gimy]*)$/;\n\nconst hankakuAlphaNum = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst zenkakuAlphaNum =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n\nexport const supportRegExpUnicodeFlag = (() => {\n try {\n new RegExp(\"\", \"u\");\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// http://www.tamasoft.co.jp/ja/general-info/unicode.html\nexport const jpHira = /[ぁ-ゖ]/;\nexport const jpKana = /[ァ-ヺ]/;\n// http://tama-san.com/?p=196\nexport const jpKanji = /(?:[々〇〻\\u3400-\\u9FFF\\uF900-\\uFAFF]|[\\uD840-\\uD87F][\\uDC00-\\uDFFF])/;\nexport const jpChar = combine([jpHira, jpKana, jpKanji]);\n\nconst regexpSpecialChars = \"¥*+.?{}()[]^$-|/\".split(\"\");\n\nexport function concat(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args.reduce<string>((p, c) => {\n if (typeof c === \"string\") {\n return p + c;\n } else if (c instanceof RegExp) {\n c.flags.split(\"\").sort();\n const currentFlags = c.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${c} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return p + c.source;\n } else {\n throw new Error(`unknown type: ${c}`);\n }\n }, \"\");\n return new RegExp(result, prevFlags);\n}\n\nexport function combine(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args\n .map((arg) => {\n if (typeof arg === \"string\") {\n return arg;\n } else if (arg instanceof RegExp) {\n arg.flags.split(\"\").sort();\n const currentFlags = arg.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${arg} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return arg.source;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n })\n .join(\"|\");\n return concat([\"(?:\", result, \")\"], foundRegExp ? prevFlags : void 0);\n}\n\nexport function addBoundary(arg: string | RegExp): RegExp {\n let result: string;\n let flags = \"\";\n if (typeof arg === \"string\") {\n result = arg;\n } else if (arg instanceof RegExp) {\n result = arg.source;\n flags = arg.flags;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n return concat([\"\\\\b\", result, \"\\\\b\"], flags);\n}\n\nexport function parseRegExpString(str: string): RegExp | null {\n const result = str.match(regexpRegexp);\n if (!result) {\n return null;\n }\n return new RegExp(result[1], result[2]);\n}\n\nexport function spreadAlphaNum(str: string): RegExp {\n const result = str\n .split(\"\")\n .map((v) => {\n const tmpIdx1 = hankakuAlphaNum.indexOf(v.toUpperCase());\n const tmpIdx2 = hankakuAlphaNum.indexOf(v.toLowerCase());\n if (tmpIdx1 === -1 && tmpIdx2 === -1) {\n // not alpha num\n return v;\n } else if (tmpIdx1 === tmpIdx2) {\n // num\n return `[${v}${zenkakuAlphaNum.charAt(tmpIdx1)}]`;\n } else {\n return `[${v.toUpperCase()}${v.toLowerCase()}${zenkakuAlphaNum.charAt(tmpIdx1)}${zenkakuAlphaNum.charAt(tmpIdx2)}]`;\n }\n })\n .join(\"\");\n return new RegExp(result);\n}\n\nexport function addDefaultFlags(regexp: RegExp) {\n let flags = \"gm\";\n if (supportRegExpUnicodeFlag) {\n flags += \"u\";\n }\n if (regexp.ignoreCase) {\n flags += \"i\";\n }\n return new RegExp(regexp.source, flags);\n}\n\nexport function escapeSpecialChars(str: string): string {\n regexpSpecialChars.forEach((char) => {\n str = str.replace(new RegExp(`\\\\${char}`, \"g\"), `\\\\${char}`);\n });\n return str;\n}\n\nexport function collectAll(regexp: RegExp, src: string) {\n if (!regexp.global) {\n throw new Error(\"g flag is required\");\n }\n if (!regexp.source) {\n throw new Error(\"source is required\");\n }\n const resultList: RegExpExecArray[] = [];\n let result: RegExpExecArray | null;\n do {\n result = regexp.exec(src);\n if (result) {\n resultList.push(result);\n }\n } while (result);\n\n return resultList;\n}\n\nexport function equals(a: RegExp, b: RegExp) {\n if (a.source !== b.source) {\n return false;\n }\n if (a.global !== b.global) {\n return false;\n }\n if (a.ignoreCase !== b.ignoreCase) {\n return false;\n }\n if (a.multiline !== b.multiline) {\n return false;\n }\n\n return true;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"regexp.js","sourceRoot":"","sources":["regexp.ts"],"names":[],"mappings":"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","sourcesContent":["const regexpRegexp = /^\\/(.*)\\/([gimy]*)$/;\n\nconst hankakuAlphaNum = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst zenkakuAlphaNum =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n\n// http://www.tamasoft.co.jp/ja/general-info/unicode.html\nexport const jpHira = /[ぁ-ゖ]/;\nexport const jpKana = /[ァ-ヺ]/;\n// http://tama-san.com/?p=196\nexport const jpKanji = /(?:[々〇〻\\u3400-\\u9FFF\\uF900-\\uFAFF]|[\\uD840-\\uD87F][\\uDC00-\\uDFFF])/;\nexport const jpChar = combine([jpHira, jpKana, jpKanji]);\n\nconst regexpSpecialChars = \"¥*+.?{}()[]^$-|/\".split(\"\");\n\nexport function concat(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args.reduce<string>((p, c) => {\n if (typeof c === \"string\") {\n return p + c;\n } else if (c instanceof RegExp) {\n c.flags.split(\"\").sort();\n const currentFlags = c.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${c} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return p + c.source;\n } else {\n throw new Error(`unknown type: ${c}`);\n }\n }, \"\");\n return new RegExp(result, prevFlags);\n}\n\nexport function combine(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args\n .map((arg) => {\n if (typeof arg === \"string\") {\n return arg;\n } else if (arg instanceof RegExp) {\n arg.flags.split(\"\").sort();\n const currentFlags = arg.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${arg} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return arg.source;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n })\n .join(\"|\");\n return concat([\"(?:\", result, \")\"], foundRegExp ? prevFlags : void 0);\n}\n\nexport function addBoundary(arg: string | RegExp): RegExp {\n let result: string;\n let flags = \"\";\n if (typeof arg === \"string\") {\n result = arg;\n } else if (arg instanceof RegExp) {\n result = arg.source;\n flags = arg.flags;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n return concat([\"\\\\b\", result, \"\\\\b\"], flags);\n}\n\nexport function parseRegExpString(str: string): RegExp | null {\n const result = str.match(regexpRegexp);\n if (!result) {\n return null;\n }\n return new RegExp(result[1], result[2]);\n}\n\nexport function spreadAlphaNum(str: string): RegExp {\n const result = str\n .split(\"\")\n .map((v) => {\n const tmpIdx1 = hankakuAlphaNum.indexOf(v.toUpperCase());\n const tmpIdx2 = hankakuAlphaNum.indexOf(v.toLowerCase());\n if (tmpIdx1 === -1 && tmpIdx2 === -1) {\n // not alpha num\n return v;\n } else if (tmpIdx1 === tmpIdx2) {\n // num\n return `[${v}${zenkakuAlphaNum.charAt(tmpIdx1)}]`;\n } else {\n return `[${v.toUpperCase()}${v.toLowerCase()}${zenkakuAlphaNum.charAt(tmpIdx1)}${zenkakuAlphaNum.charAt(tmpIdx2)}]`;\n }\n })\n .join(\"\");\n return new RegExp(result);\n}\n\nexport function addDefaultFlags(regexp: RegExp) {\n let flags = \"gmu\";\n if (regexp.ignoreCase) {\n flags += \"i\";\n }\n return new RegExp(regexp.source, flags);\n}\n\nexport function escapeSpecialChars(str: string): string {\n regexpSpecialChars.forEach((char) => {\n str = str.replace(new RegExp(`\\\\${char}`, \"g\"), `\\\\${char}`);\n });\n return str;\n}\n\nexport function collectAll(regexp: RegExp, src: string) {\n if (!regexp.global) {\n throw new Error(\"g flag is required\");\n }\n if (!regexp.source) {\n throw new Error(\"source is required\");\n }\n const resultList: RegExpExecArray[] = [];\n let result: RegExpExecArray | null;\n do {\n result = regexp.exec(src);\n if (result) {\n resultList.push(result);\n }\n } while (result);\n\n return resultList;\n}\n\nexport function equals(a: RegExp, b: RegExp) {\n if (a.source !== b.source) {\n return false;\n }\n if (a.global !== b.global) {\n return false;\n }\n if (a.ignoreCase !== b.ignoreCase) {\n return false;\n }\n if (a.multiline !== b.multiline) {\n return false;\n }\n\n return true;\n}\n"]}
|