@ptolemy2002/rgx 4.3.0 → 4.5.0
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/README.md +45 -2
- package/dist/flag-transformer/accentInsensitive.d.ts +2 -0
- package/dist/flag-transformer/accentInsensitive.js +20 -0
- package/dist/flag-transformer/index.d.ts +2 -0
- package/dist/flag-transformer/index.js +18 -0
- package/dist/flag-transformer/register.d.ts +2 -0
- package/dist/flag-transformer/register.js +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -0
- package/dist/types.d.ts +5 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,11 +32,12 @@ type ValidIdentifier = Branded<string, [ValidIdentifierBrandSymbol]>;
|
|
|
32
32
|
|
|
33
33
|
type RGXTokenType = 'no-op' | 'literal' | 'native' | 'convertible' | 'class' | RGXTokenType[];
|
|
34
34
|
type RGXTokenTypeFlat = Exclude<RGXTokenType, RGXTokenType[]> | "array";
|
|
35
|
-
type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | RGXTokenTypeGuardInput[];
|
|
35
|
+
type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | typeof RGXTokenCollection | RGXTokenTypeGuardInput[];
|
|
36
36
|
type RGXTokenFromType<T extends RGXTokenTypeGuardInput> =
|
|
37
37
|
// Maps token type strings to their corresponding types, e.g.:
|
|
38
38
|
// 'no-op' -> RGXNoOpToken, 'literal' -> RGXLiteralToken, etc.
|
|
39
|
-
// Also maps
|
|
39
|
+
// Also maps any constructor to InstanceType<T>,
|
|
40
|
+
// and preserves tuple types for constant arrays.
|
|
40
41
|
// ... see source for full definition
|
|
41
42
|
;
|
|
42
43
|
|
|
@@ -904,6 +905,48 @@ Unregisters a previously registered custom flag transformer by its key. If the k
|
|
|
904
905
|
#### Returns
|
|
905
906
|
- `void`: This function does not return a value.
|
|
906
907
|
|
|
908
|
+
### accentInsensitiveFlagTransformer
|
|
909
|
+
```typescript
|
|
910
|
+
const accentInsensitiveFlagTransformer: RegExpFlagTransformer
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
A pre-built `RegExpFlagTransformer` that makes a regex pattern accent-insensitive. It replaces any accentable characters (a, e, i, o, u and their uppercase equivalents) in the regex source with alternation groups that match both the base character and its accented variants. For example, `é` becomes `(e|é|è|ë|ê)`. The following accent mappings are supported:
|
|
914
|
+
|
|
915
|
+
- `a` / `A`: á, à, ä, â, ã / Á, À, Ä, Â, Ã
|
|
916
|
+
- `e` / `E`: é, è, ë, ê / É, È, Ë, Ê
|
|
917
|
+
- `i` / `I`: í, ì, ï, î / Í, Ì, Ï, Î
|
|
918
|
+
- `o` / `O`: ó, ò, ö, ô, õ / Ó, Ò, Ö, Ô, Õ
|
|
919
|
+
- `u` / `U`: ú, ù, ü, û / Ú, Ù, Ü, Û
|
|
920
|
+
|
|
921
|
+
#### Parameters
|
|
922
|
+
- `exp` (`RegExp`): The regular expression to transform.
|
|
923
|
+
|
|
924
|
+
#### Returns
|
|
925
|
+
- `RegExp`: A new `RegExp` with the same flags but with accentable characters in the source replaced by accent-insensitive alternation groups.
|
|
926
|
+
|
|
927
|
+
### registerCustomFlagTransformers
|
|
928
|
+
```typescript
|
|
929
|
+
function registerCustomFlagTransformers(): void
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
Registers the library's built-in custom flag transformers. Currently registers the following:
|
|
933
|
+
- `"a"` flag: `accentInsensitiveFlagTransformer` — makes patterns accent-insensitive.
|
|
934
|
+
|
|
935
|
+
This function is called automatically when importing from the main module entry point, so you typically do not need to call it yourself. It only needs to be called manually if you import directly from sub-modules.
|
|
936
|
+
|
|
937
|
+
#### Returns
|
|
938
|
+
- `void`: This function does not return a value.
|
|
939
|
+
|
|
940
|
+
### unregisterCustomFlagTransformers
|
|
941
|
+
```typescript
|
|
942
|
+
function unregisterCustomFlagTransformers(): void
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
Unregisters all built-in custom flag transformers that were registered by `registerCustomFlagTransformers`. Currently unregisters the `"a"` flag.
|
|
946
|
+
|
|
947
|
+
#### Returns
|
|
948
|
+
- `void`: This function does not return a value.
|
|
949
|
+
|
|
907
950
|
### applyFlagTransformers
|
|
908
951
|
```typescript
|
|
909
952
|
function applyFlagTransformers(regex: RegExp, flags: string, alreadyAppliedFlags?: string): RegExp
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.accentInsensitiveFlagTransformer = void 0;
|
|
4
|
+
const accentPatterns = [
|
|
5
|
+
"(a|á|à|ä|â|ã)", "(A|Á|À|Ä|Â|Ã)",
|
|
6
|
+
"(e|é|è|ë|ê)", "(E|É|È|Ë|Ê)",
|
|
7
|
+
"(i|í|ì|ï|î)", "(I|Í|Ì|Ï|Î)",
|
|
8
|
+
"(o|ó|ò|ö|ô|õ)", "(O|Ó|Ò|Ö|Ô|Õ)",
|
|
9
|
+
"(u|ú|ù|ü|û)", "(U|Ú|Ù|Ü|Û)"
|
|
10
|
+
];
|
|
11
|
+
const accentInsensitiveFlagTransformer = function (exp) {
|
|
12
|
+
let source = exp.source;
|
|
13
|
+
const flags = exp.flags;
|
|
14
|
+
accentPatterns.forEach((pattern) => {
|
|
15
|
+
// Replace any of the characters in the pattern with the pattern itself
|
|
16
|
+
source = source.replaceAll(new RegExp(pattern, "g"), pattern);
|
|
17
|
+
});
|
|
18
|
+
return new RegExp(source, flags);
|
|
19
|
+
};
|
|
20
|
+
exports.accentInsensitiveFlagTransformer = accentInsensitiveFlagTransformer;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./accentInsensitive"), exports);
|
|
18
|
+
__exportStar(require("./register"), exports);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerCustomFlagTransformers = registerCustomFlagTransformers;
|
|
4
|
+
exports.unregisterCustomFlagTransformers = unregisterCustomFlagTransformers;
|
|
5
|
+
const ExtRegExp_1 = require("../ExtRegExp");
|
|
6
|
+
const accentInsensitive_1 = require("./accentInsensitive");
|
|
7
|
+
function registerCustomFlagTransformers() {
|
|
8
|
+
(0, ExtRegExp_1.registerFlagTransformer)("a", accentInsensitive_1.accentInsensitiveFlagTransformer);
|
|
9
|
+
}
|
|
10
|
+
function unregisterCustomFlagTransformers() {
|
|
11
|
+
(0, ExtRegExp_1.unregisterFlagTransformer)("a");
|
|
12
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,5 +9,6 @@ export * from "./resolve";
|
|
|
9
9
|
export * from "./concat";
|
|
10
10
|
export * from "./utils";
|
|
11
11
|
export * from "./ExtRegExp";
|
|
12
|
+
export * from "./flag-transformer";
|
|
12
13
|
export declare function rgxa(tokens: t.RGXToken[], flags?: string): ExtRegExp;
|
|
13
14
|
export default function rgx(flags?: string): (strings: TemplateStringsArray, ...tokens: t.RGXToken[]) => ExtRegExp;
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.rgxa = rgxa;
|
|
18
18
|
exports.default = rgx;
|
|
19
19
|
const class_1 = require("./class");
|
|
20
|
+
const flag_transformer_1 = require("./flag-transformer");
|
|
20
21
|
const concat_1 = require("./concat");
|
|
21
22
|
const internal_1 = require("./internal");
|
|
22
23
|
const ExtRegExp_1 = require("./ExtRegExp");
|
|
@@ -29,8 +30,11 @@ __exportStar(require("./resolve"), exports);
|
|
|
29
30
|
__exportStar(require("./concat"), exports);
|
|
30
31
|
__exportStar(require("./utils"), exports);
|
|
31
32
|
__exportStar(require("./ExtRegExp"), exports);
|
|
33
|
+
__exportStar(require("./flag-transformer"), exports);
|
|
32
34
|
// Call this for certain class methods to work correctly
|
|
33
35
|
(0, class_1.rgxClassInit)();
|
|
36
|
+
// Call this for our custom flags to work correctly
|
|
37
|
+
(0, flag_transformer_1.registerCustomFlagTransformers)();
|
|
34
38
|
function rgxa(tokens, flags = '') {
|
|
35
39
|
(0, ExtRegExp_1.assertValidRegexFlags)(flags);
|
|
36
40
|
const pattern = (0, concat_1.rgxConcat)(tokens);
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Branded } from "@ptolemy2002/ts-brand-utils";
|
|
2
2
|
import type { RGXClassToken } from "./class";
|
|
3
|
-
import { ExtRegExp } from "./ExtRegExp";
|
|
3
|
+
import type { ExtRegExp } from "./ExtRegExp";
|
|
4
|
+
import type { RGXTokenCollection } from "./collection";
|
|
4
5
|
export type RGXNoOpToken = null | undefined;
|
|
5
6
|
export type RGXLiteralToken = RegExp;
|
|
6
7
|
export type RGXNativeToken = string | number | boolean | RGXNoOpToken;
|
|
@@ -12,10 +13,10 @@ export type RGXToken = RGXNativeToken | RGXLiteralToken | RGXConvertibleToken |
|
|
|
12
13
|
export type RGXClassTokenConstructor = new (...args: unknown[]) => RGXClassToken;
|
|
13
14
|
export type RGXTokenType = 'no-op' | 'literal' | 'native' | 'convertible' | 'class' | RGXTokenType[];
|
|
14
15
|
export type RGXTokenTypeFlat = Exclude<RGXTokenType, RGXTokenType[]> | "array";
|
|
15
|
-
export type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | RGXTokenTypeGuardInput[];
|
|
16
|
-
export type RGXTokenFromType<T extends RGXTokenTypeGuardInput> = T extends null ? RGXToken : T extends 'no-op' ? RGXNoOpToken : T extends 'literal' ? RGXLiteralToken : T extends 'native' ? RGXNativeToken : T extends 'convertible' ? RGXConvertibleToken : T extends 'class' ? RGXClassToken : T extends 'array' ? RGXToken[] : T extends RGXTokenTypeGuardInput[] ? {
|
|
16
|
+
export type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | typeof RGXTokenCollection | RGXTokenTypeGuardInput[];
|
|
17
|
+
export type RGXTokenFromType<T extends RGXTokenTypeGuardInput> = T extends null ? RGXToken : T extends 'no-op' ? RGXNoOpToken : T extends 'literal' ? RGXLiteralToken : T extends 'native' ? RGXNativeToken : T extends 'convertible' ? RGXConvertibleToken : T extends 'class' ? RGXClassToken : T extends 'array' ? RGXToken[] : T extends new (...args: unknown[]) => infer R ? R : T extends RGXTokenTypeGuardInput[] ? {
|
|
17
18
|
[K in keyof T]: T[K] extends RGXTokenTypeGuardInput ? RGXTokenFromType<T[K]> : never;
|
|
18
|
-
} :
|
|
19
|
+
} : never;
|
|
19
20
|
export type RangeObject = {
|
|
20
21
|
min?: number | null;
|
|
21
22
|
max?: number | null;
|