fatsify核心功能示例测试!!!

This commit is contained in:
2025-09-21 14:50:41 +08:00
commit 9145aea047
1958 changed files with 230098 additions and 0 deletions

21
node_modules/ret/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (C) 2011 by fent
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

539
node_modules/ret/README.md generated vendored Normal file
View File

@@ -0,0 +1,539 @@
# Regular Expression Tokenizer
Tokenizes strings that represent a regular expressions.
![Depfu](https://img.shields.io/depfu/fent/ret.js)
[![codecov](https://codecov.io/gh/fent/ret.js/branch/master/graph/badge.svg)](https://codecov.io/gh/fent/ret.js)
# Usage
```js
const ret = require('ret');
let tokens = ret(/foo|bar/.source);
```
`tokens` will contain the following object
```js
{
"type": ret.types.ROOT
"options": [
[ { "type": ret.types.CHAR, "value", 102 },
{ "type": ret.types.CHAR, "value", 111 },
{ "type": ret.types.CHAR, "value", 111 } ],
[ { "type": ret.types.CHAR, "value", 98 },
{ "type": ret.types.CHAR, "value", 97 },
{ "type": ret.types.CHAR, "value", 114 } ]
]
}
```
# Reconstructing Regular Expressions from Tokens
The `reconstruct` function accepts an *any* token and returns, as a string, the *component* of the regular expression that is associated with that token.
```ts
import { reconstruct, types } from 'ret'
const tokens = ret(/foo|bar/.source)
const setToken = {
"type": types.SET,
"set": [
{ "type": types.CHAR, "value": 97 },
{ "type": types.CHAR, "value": 98 },
{ "type": types.CHAR, "value": 99 }
],
"not": true
}
reconstruct(tokens) // 'foo|bar'
reconstruct({ "type": types.CHAR, "value": 102 }) // 'f'
reconstruct(setToken) // '^abc'
```
# Token Types
`ret.types` is a collection of the various token types exported by ret.
### ROOT
Only used in the root of the regexp. This is needed due to the posibility of the root containing a pipe `|` character. In that case, the token will have an `options` key that will be an array of arrays of tokens. If not, it will contain a `stack` key that is an array of tokens.
```js
{
"type": ret.types.ROOT,
"stack": [token1, token2...],
}
```
```js
{
"type": ret.types.ROOT,
"options" [
[token1, token2...],
[othertoken1, othertoken2...]
...
],
}
```
### GROUP
Groups contain tokens that are inside of a parenthesis. If the group begins with `?` followed by another character, it's a special type of group. A ':' tells the group not to be remembered when `exec` is used. '=' means the previous token matches only if followed by this group, and '!' means the previous token matches only if NOT followed.
Like root, it can contain an `options` key instead of `stack` if there is a pipe.
```js
{
"type": ret.types.GROUP,
"remember" true,
"followedBy": false,
"notFollowedBy": false,
"stack": [token1, token2...],
}
```
```js
{
"type": ret.types.GROUP,
"remember" true,
"followedBy": false,
"notFollowedBy": false,
"options" [
[token1, token2...],
[othertoken1, othertoken2...]
...
],
}
```
### POSITION
`\b`, `\B`, `^`, and `$` specify positions in the regexp.
```js
{
"type": ret.types.POSITION,
"value": "^",
}
```
### SET
Contains a key `set` specifying what tokens are allowed and a key `not` specifying if the set should be negated. A set can contain other sets, ranges, and characters.
```js
{
"type": ret.types.SET,
"set": [token1, token2...],
"not": false,
}
```
### RANGE
Used in set tokens to specify a character range. `from` and `to` are character codes.
```js
{
"type": ret.types.RANGE,
"from": 97,
"to": 122,
}
```
### REPETITION
```js
{
"type": ret.types.REPETITION,
"min": 0,
"max": Infinity,
"value": token,
}
```
### REFERENCE
References a group token. `value` is 1-9.
```js
{
"type": ret.types.REFERENCE,
"value": 1,
}
```
### CHAR
Represents a single character token. `value` is the character code. This might seem a bit cluttering instead of concatenating characters together. But since repetition tokens only repeat the last token and not the last clause like the pipe, it's simpler to do it this way.
```js
{
"type": ret.types.CHAR,
"value": 123,
}
```
## Errors
ret.js will throw errors if given a string with an invalid regular expression. All possible errors are
* Invalid group. When a group with an immediate `?` character is followed by an invalid character. It can only be followed by `!`, `=`, or `:`. Example: `/(?_abc)/`
* Nothing to repeat. Thrown when a repetitional token is used as the first token in the current clause, as in right in the beginning of the regexp or group, or right after a pipe. Example: `/foo|?bar/`, `/{1,3}foo|bar/`, `/foo(+bar)/`
* Unmatched ). A group was not opened, but was closed. Example: `/hello)2u/`
* Unterminated group. A group was not closed. Example: `/(1(23)4/`
* Unterminated character class. A custom character set was not closed. Example: `/[abc/`
# Regular Expression Syntax
Regular expressions follow the [JavaScript syntax](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp).
The following latest JavaScript additions are not supported yet:
* `\p` and `\P`: [Unicode property escapes](https://github.com/tc39/proposal-regexp-unicode-property-escapes)
* `(?<group>)` and `\k<group>`: [Named groups](https://github.com/tc39/proposal-regexp-named-groups)
* `(?<=)` and `(?<!)`: [Negative lookbehind assertions](https://github.com/tc39/proposal-regexp-lookbehind)
# Examples
`/abc/`
```js
{
"type": ret.types.ROOT,
"stack": [
{ "type": ret.types.CHAR, "value": 97 },
{ "type": ret.types.CHAR, "value": 98 },
{ "type": ret.types.CHAR, "value": 99 }
]
}
```
`/[abc]/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.SET,
"set": [
{ "type": ret.types.CHAR, "value": 97 },
{ "type": ret.types.CHAR, "value": 98 },
{ "type": ret.types.CHAR, "value": 99 }
],
"not": false
}]
}
```
`/[^abc]/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.SET,
"set": [
{ "type": ret.types.CHAR, "value": 97 },
{ "type": ret.types.CHAR, "value": 98 },
{ "type": ret.types.CHAR, "value": 99 }
],
"not": true
}]
}
```
`/[a-z]/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.SET,
"set": [
{ "type": ret.types.RANGE, "from": 97, "to": 122 }
],
"not": false
}]
}
```
`/\w/`
```js
// Similar logic for `\W`, `\d`, `\D`, `\s` and `\S`
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.SET,
"set": [{
{ "type": ret.types.CHAR, "value": 95 },
{ "type": ret.types.RANGE, "from": 97, "to": 122 },
{ "type": ret.types.RANGE, "from": 65, "to": 90 },
{ "type": ret.types.RANGE, "from": 48, "to": 57 }
}],
"not": false
}]
}
```
`/./`
```js
// any character but CR, LF, U+2028 or U+2029
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.SET,
"set": [
{ "type": ret.types.CHAR, "value": 10 },
{ "type": ret.types.CHAR, "value": 13 },
{ "type": ret.types.CHAR, "value": 8232 },
{ "type": ret.types.CHAR, "value": 8233 }
],
"not": true
}]
}
```
`/a*/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.REPETITION,
"min": 0,
"max": Infinity,
"value": { "type": ret.types.CHAR, "value": 97 }
}]
}
```
`/a+/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.REPETITION,
"min": 1,
"max": Infinity,
"value": { "type": ret.types.CHAR, "value": 97 },
}]
}
```
`/a?/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.REPETITION,
"min": 0,
"max": 1,
"value": { "type": ret.types.CHAR, "value": 97 }
}]
}
```
`/a{3}/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.REPETITION,
"min": 3,
"max": 3,
"value": { "type": ret.types.CHAR, "value": 97 }
}]
}
```
`/a{3,5}/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.REPETITION,
"min": 3,
"max": 5,
"value": { "type": ret.types.CHAR, "value": 97 }
}]
}
```
`/a{3,}/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.REPETITION,
"min": 3,
"max": Infinity,
"value": { "type": ret.types.CHAR, "value": 97 }
}]
}
```
`/(a)/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.GROUP,
"stack": { "type": ret.types.CHAR, "value": 97 },
"remember": true
}]
}
```
`/(?:a)/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.GROUP,
"stack": { "type": ret.types.CHAR, "value": 97 },
"remember": false
}]
}
```
`/(?=a)/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.GROUP,
"stack": { "type": ret.types.CHAR, "value": 97 },
"remember": false,
"followedBy": true
}]
}
```
`/(?!a)/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.GROUP,
"stack": { "type": ret.types.CHAR, "value": 97 },
"remember": false,
"notFollowedBy": true
}]
}
```
`/a|b/`
```js
{
"type": ret.types.ROOT,
"options": [
[{ "type": ret.types.CHAR, "value": 97 }],
[{ "type": ret.types.CHAR, "value": 98 }]
]
}
```
`/(a|b)/`
```js
{
"type": ret.types.ROOT,
"stack": [
"type": ret.types.GROUP,
"remember": true,
"options": [
[{ "type": ret.types.CHAR, "value": 97 }],
[{ "type": ret.types.CHAR, "value": 98 }]
]
]
}
```
`/^/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.POSITION,
"value": "^"
}]
}
```
`/$/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.POSITION,
"value": "$"
}]
}
```
`/\b/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.POSITION,
"value": "b"
}]
}
```
`/\B/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.POSITION,
"value": "B"
}]
}
```
`/\1/`
```js
{
"type": ret.types.ROOT,
"stack": [{
"type": ret.types.REFERENCE,
"value": 1
}]
}
```
# Install
npm install ret
# Tests
Tests are written with [vows](http://vowsjs.org/)
```bash
npm test
```
# Security
To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.

7
node_modules/ret/dist/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,7 @@
import { types } from './types';
export * from './tokenizer';
export * from './reconstruct';
import { tokenizer } from './tokenizer';
export * from './types';
export default tokenizer;
export { types };

26
node_modules/ret/dist/index.js generated vendored Normal file
View File

@@ -0,0 +1,26 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.types = void 0;
/* istanbul ignore file */
const types_1 = require("./types");
Object.defineProperty(exports, "types", { enumerable: true, get: function () { return types_1.types; } });
__exportStar(require("./tokenizer"), exports);
__exportStar(require("./reconstruct"), exports);
const tokenizer_1 = require("./tokenizer");
const reconstruct_1 = require("./reconstruct");
__exportStar(require("./types"), exports);
exports.default = tokenizer_1.tokenizer;
module.exports = tokenizer_1.tokenizer;
module.exports.types = types_1.types;
module.exports.reconstruct = reconstruct_1.reconstruct;
//# sourceMappingURL=index.js.map

1
node_modules/ret/dist/index.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,0BAA0B;AAC1B,mCAAgC;AAQvB,sFARA,aAAK,OAQA;AAPd,8CAA4B;AAC5B,gDAA8B;AAC9B,2CAAwC;AACxC,+CAA4C;AAC5C,0CAAwB;AAExB,kBAAe,qBAAS,CAAC;AAGzB,MAAM,CAAC,OAAO,GAAG,qBAAS,CAAC;AAC3B,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,aAAK,CAAC;AAC7B,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,yBAAW,CAAC"}

2
node_modules/ret/dist/reconstruct.d.ts generated vendored Normal file
View File

@@ -0,0 +1,2 @@
import { Tokens } from './types';
export declare const reconstruct: (token: Tokens) => string;

77
node_modules/ret/dist/reconstruct.js generated vendored Normal file
View File

@@ -0,0 +1,77 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.reconstruct = void 0;
const types_1 = require("./types");
const write_set_tokens_1 = require("./write-set-tokens");
const reduceStack = (stack) => stack.map(exports.reconstruct).join('');
const createAlternate = (token) => {
if ('options' in token) {
return token.options.map(reduceStack).join('|');
}
else if ('stack' in token) {
return reduceStack(token.stack);
}
else {
throw new Error(`options or stack must be Root or Group token`);
}
};
exports.reconstruct = (token) => {
switch (token.type) {
case types_1.types.ROOT:
return createAlternate(token);
case types_1.types.CHAR: {
const c = String.fromCharCode(token.value);
// Note that the escaping for characters inside classes is handled
// in the write-set-tokens module so '-' and ']' are not escaped here
return (/[[\\{}$^.|?*+()]/.test(c) ? '\\' : '') + c;
}
case types_1.types.POSITION:
if (token.value === '^' || token.value === '$') {
return token.value;
}
else {
return `\\${token.value}`;
}
case types_1.types.REFERENCE:
return `\\${token.value}`;
case types_1.types.SET:
return write_set_tokens_1.writeSetTokens(token);
case types_1.types.GROUP: {
// Check token.remember
const prefix = token.name ? `?<${token.name}>` :
token.remember ? '' :
token.followedBy ? '?=' :
token.notFollowedBy ? '?!' :
'?:';
return `(${prefix}${createAlternate(token)})`;
}
case types_1.types.REPETITION: {
const { min, max } = token;
let endWith;
if (min === 0 && max === 1) {
endWith = '?';
}
else if (min === 1 && max === Infinity) {
endWith = '+';
}
else if (min === 0 && max === Infinity) {
endWith = '*';
}
else if (max === Infinity) {
endWith = `{${min},}`;
}
else if (min === max) {
endWith = `{${min}}`;
}
else {
endWith = `{${min},${max}}`;
}
return `${exports.reconstruct(token.value)}${endWith}`;
}
case types_1.types.RANGE:
return `${write_set_tokens_1.setChar(token.from)}-${write_set_tokens_1.setChar(token.to)}`;
default:
throw new Error(`Invalid token type ${token}`);
}
};
//# sourceMappingURL=reconstruct.js.map

1
node_modules/ret/dist/reconstruct.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"reconstruct.js","sourceRoot":"","sources":["../lib/reconstruct.ts"],"names":[],"mappings":"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"}

5
node_modules/ret/dist/sets-lookup.d.ts generated vendored Normal file
View File

@@ -0,0 +1,5 @@
import { SetLookup } from './types';
export declare const INTS: SetLookup;
export declare const WORDS: SetLookup;
export declare const WHITESPACE: SetLookup;
export declare const NOTANYCHAR: SetLookup;

51
node_modules/ret/dist/sets-lookup.js generated vendored Normal file
View File

@@ -0,0 +1,51 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NOTANYCHAR = exports.WHITESPACE = exports.WORDS = exports.INTS = void 0;
const Sets = __importStar(require("./sets"));
const types_1 = require("./types");
function setToLookup(tokens) {
let lookup = {};
let len = 0;
for (const token of tokens) {
if (token.type === types_1.types.CHAR) {
lookup[token.value] = true;
}
// Note this is in an if statement because
// the SetTokens type is (Char | Range | Set)[]
// so a type error is thrown if it is not.
// If the SetTokens type is modified the if statement
// can be removed
if (token.type === types_1.types.RANGE) {
lookup[`${token.from}-${token.to}`] = true;
}
len += 1;
}
return {
lookup: () => (Object.assign({}, lookup)),
len,
};
}
exports.INTS = setToLookup(Sets.ints().set);
exports.WORDS = setToLookup(Sets.words().set);
exports.WHITESPACE = setToLookup(Sets.whitespace().set);
exports.NOTANYCHAR = setToLookup(Sets.anyChar().set);
//# sourceMappingURL=sets-lookup.js.map

1
node_modules/ret/dist/sets-lookup.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"sets-lookup.js","sourceRoot":"","sources":["../lib/sets-lookup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,mCAAsD;AAEtD,SAAS,WAAW,CAAC,MAAiB;IACpC,IAAI,MAAM,GAAqC,EAAE,CAAC;IAClD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAK,CAAC,IAAI,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;SAC5B;QACD,0CAA0C;QAC1C,+CAA+C;QAC/C,0CAA0C;QAC1C,qDAAqD;QACrD,iBAAiB;QACjB,IAAI,KAAK,CAAC,IAAI,KAAK,aAAK,CAAC,KAAK,EAAE;YAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;SAC5C;QACD,GAAG,IAAI,CAAC,CAAC;KACV;IACD,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAM,MAAM,EAAG;QAC7B,GAAG;KACJ,CAAC;AACJ,CAAC;AAEY,QAAA,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AACtC,QAAA,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC"}

9
node_modules/ret/dist/sets.d.ts generated vendored Normal file
View File

@@ -0,0 +1,9 @@
import { Set } from './types';
export declare type SetFunc = () => Set;
export declare const words: SetFunc;
export declare const notWords: SetFunc;
export declare const ints: SetFunc;
export declare const notInts: SetFunc;
export declare const whitespace: SetFunc;
export declare const notWhitespace: SetFunc;
export declare const anyChar: SetFunc;

43
node_modules/ret/dist/sets.js generated vendored Normal file
View File

@@ -0,0 +1,43 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.anyChar = exports.notWhitespace = exports.whitespace = exports.notInts = exports.ints = exports.notWords = exports.words = void 0;
const types_1 = require("./types");
const INTS = () => [{ type: types_1.types.RANGE, from: 48, to: 57 }];
const WORDS = () => [
{ type: types_1.types.CHAR, value: 95 },
{ type: types_1.types.RANGE, from: 97, to: 122 },
{ type: types_1.types.RANGE, from: 65, to: 90 },
{ type: types_1.types.RANGE, from: 48, to: 57 },
];
const WHITESPACE = () => [
{ type: types_1.types.CHAR, value: 9 },
{ type: types_1.types.CHAR, value: 10 },
{ type: types_1.types.CHAR, value: 11 },
{ type: types_1.types.CHAR, value: 12 },
{ type: types_1.types.CHAR, value: 13 },
{ type: types_1.types.CHAR, value: 32 },
{ type: types_1.types.CHAR, value: 160 },
{ type: types_1.types.CHAR, value: 5760 },
{ type: types_1.types.RANGE, from: 8192, to: 8202 },
{ type: types_1.types.CHAR, value: 8232 },
{ type: types_1.types.CHAR, value: 8233 },
{ type: types_1.types.CHAR, value: 8239 },
{ type: types_1.types.CHAR, value: 8287 },
{ type: types_1.types.CHAR, value: 12288 },
{ type: types_1.types.CHAR, value: 65279 },
];
const NOTANYCHAR = () => [
{ type: types_1.types.CHAR, value: 10 },
{ type: types_1.types.CHAR, value: 13 },
{ type: types_1.types.CHAR, value: 8232 },
{ type: types_1.types.CHAR, value: 8233 },
];
// Predefined class objects.
exports.words = () => ({ type: types_1.types.SET, set: WORDS(), not: false });
exports.notWords = () => ({ type: types_1.types.SET, set: WORDS(), not: true });
exports.ints = () => ({ type: types_1.types.SET, set: INTS(), not: false });
exports.notInts = () => ({ type: types_1.types.SET, set: INTS(), not: true });
exports.whitespace = () => ({ type: types_1.types.SET, set: WHITESPACE(), not: false });
exports.notWhitespace = () => ({ type: types_1.types.SET, set: WHITESPACE(), not: true });
exports.anyChar = () => ({ type: types_1.types.SET, set: NOTANYCHAR(), not: true });
//# sourceMappingURL=sets.js.map

1
node_modules/ret/dist/sets.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"sets.js","sourceRoot":"","sources":["../lib/sets.ts"],"names":[],"mappings":"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"}

8
node_modules/ret/dist/tokenizer.d.ts generated vendored Normal file
View File

@@ -0,0 +1,8 @@
import { Root } from './types';
/**
* Tokenizes a regular expression (that is currently a string)
* @param {string} regexpStr String of regular expression to be tokenized
*
* @returns {Root}
*/
export declare const tokenizer: (regexpStr: string) => Root;

361
node_modules/ret/dist/tokenizer.js generated vendored Normal file
View File

@@ -0,0 +1,361 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.tokenizer = void 0;
const util = __importStar(require("./util"));
const types_1 = require("./types");
const sets = __importStar(require("./sets"));
/**
* Valid opening characters for capture group names.
*/
const captureGroupFirstChar = /^[a-zA-Z_$]$/i;
/**
* Valid characters for capture group names.
*/
const captureGroupChars = /^[a-zA-Z0-9_$]$/i;
const digit = /\d/;
/**
* Tokenizes a regular expression (that is currently a string)
* @param {string} regexpStr String of regular expression to be tokenized
*
* @returns {Root}
*/
exports.tokenizer = (regexpStr) => {
let i = 0, c;
let start = { type: types_1.types.ROOT, stack: [] };
// Keep track of last clause/group and stack.
let lastGroup = start;
let last = start.stack;
let groupStack = [];
let referenceQueue = [];
let groupCount = 0;
const repeatErr = (col) => {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Nothing to repeat at column ${col - 1}`);
};
// Decode a few escaped characters.
let str = util.strToChars(regexpStr);
// Iterate through each character in string.
while (i < str.length) {
switch (c = str[i++]) {
// Handle escaped characters, inclues a few sets.
case '\\':
if (i === str.length) {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: \\ at end of pattern`);
}
switch (c = str[i++]) {
case 'b':
last.push({ type: types_1.types.POSITION, value: 'b' });
break;
case 'B':
last.push({ type: types_1.types.POSITION, value: 'B' });
break;
case 'w':
last.push(sets.words());
break;
case 'W':
last.push(sets.notWords());
break;
case 'd':
last.push(sets.ints());
break;
case 'D':
last.push(sets.notInts());
break;
case 's':
last.push(sets.whitespace());
break;
case 'S':
last.push(sets.notWhitespace());
break;
default:
// Check if c is integer.
// In which case it's a reference.
if (digit.test(c)) {
let digits = c;
while (i < str.length && digit.test(str[i])) {
digits += str[i++];
}
let value = parseInt(digits, 10);
const reference = { type: types_1.types.REFERENCE, value };
last.push(reference);
referenceQueue.push({ reference, stack: last, index: last.length - 1 });
// Escaped character.
}
else {
last.push({ type: types_1.types.CHAR, value: c.charCodeAt(0) });
}
}
break;
// Positionals.
case '^':
last.push({ type: types_1.types.POSITION, value: '^' });
break;
case '$':
last.push({ type: types_1.types.POSITION, value: '$' });
break;
// Handle custom sets.
case '[': {
// Check if this class is 'anti' i.e. [^abc].
let not;
if (str[i] === '^') {
not = true;
i++;
}
else {
not = false;
}
// Get all the characters in class.
let classTokens = util.tokenizeClass(str.slice(i), regexpStr);
// Increase index by length of class.
i += classTokens[1];
last.push({
type: types_1.types.SET,
set: classTokens[0],
not,
});
break;
}
// Class of any character except \n.
case '.':
last.push(sets.anyChar());
break;
// Push group onto stack.
case '(': {
// Create group.
let group = {
type: types_1.types.GROUP,
stack: [],
remember: true,
};
// If this is a special kind of group.
if (str[i] === '?') {
c = str[i + 1];
i += 2;
// Match if followed by.
if (c === '=') {
group.followedBy = true;
group.remember = false;
// Match if not followed by.
}
else if (c === '!') {
group.notFollowedBy = true;
group.remember = false;
}
else if (c === '<') {
let name = '';
if (captureGroupFirstChar.test(str[i])) {
name += str[i];
i++;
}
else {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Invalid capture group name, character '${str[i]}'` +
` after '<' at column ${i + 1}`);
}
while (i < str.length && captureGroupChars.test(str[i])) {
name += str[i];
i++;
}
if (!name) {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Invalid capture group name, character '${str[i]}'` +
` after '<' at column ${i + 1}`);
}
if (str[i] !== '>') {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Unclosed capture group name, expected '>', found` +
` '${str[i]}' at column ${i + 1}`);
}
group.name = name;
i++;
}
else if (c === ':') {
group.remember = false;
}
else {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Invalid group, character '${c}'` +
` after '?' at column ${i - 1}`);
}
}
else {
groupCount += 1;
}
// Insert subgroup into current group stack.
last.push(group);
// Remember the current group for when the group closes.
groupStack.push(lastGroup);
// Make this new group the current group.
lastGroup = group;
last = group.stack;
break;
}
// Pop group out of stack.
case ')':
if (groupStack.length === 0) {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Unmatched ) at column ${i - 1}`);
}
lastGroup = groupStack.pop();
// Check if this group has a PIPE.
// To get back the correct last stack.
last = lastGroup.options ?
lastGroup.options[lastGroup.options.length - 1] :
lastGroup.stack;
break;
// Use pipe character to give more choices.
case '|': {
// Create array where options are if this is the first PIPE
// in this clause.
if (!lastGroup.options) {
lastGroup.options = [lastGroup.stack];
delete lastGroup.stack;
}
// Create a new stack and add to options for rest of clause.
let stack = [];
lastGroup.options.push(stack);
last = stack;
break;
}
// Repetition.
// For every repetition, remove last element from last stack
// then insert back a RANGE object.
// This design is chosen because there could be more than
// one repetition symbols in a regex i.e. `a?+{2,3}`.
case '{': {
let rs = /^(\d+)(,(\d+)?)?\}/.exec(str.slice(i)), min, max;
if (rs !== null) {
if (last.length === 0) {
repeatErr(i);
}
min = parseInt(rs[1], 10);
max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min;
i += rs[0].length;
last.push({
type: types_1.types.REPETITION,
min,
max,
value: last.pop(),
});
}
else {
last.push({
type: types_1.types.CHAR,
value: 123,
});
}
break;
}
case '?':
if (last.length === 0) {
repeatErr(i);
}
last.push({
type: types_1.types.REPETITION,
min: 0,
max: 1,
value: last.pop(),
});
break;
case '+':
if (last.length === 0) {
repeatErr(i);
}
last.push({
type: types_1.types.REPETITION,
min: 1,
max: Infinity,
value: last.pop(),
});
break;
case '*':
if (last.length === 0) {
repeatErr(i);
}
last.push({
type: types_1.types.REPETITION,
min: 0,
max: Infinity,
value: last.pop(),
});
break;
// Default is a character that is not `\[](){}?+*^$`.
default:
last.push({
type: types_1.types.CHAR,
value: c.charCodeAt(0),
});
}
}
// Check if any groups have not been closed.
if (groupStack.length !== 0) {
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Unterminated group`);
}
updateReferences(referenceQueue, groupCount);
return start;
};
/**
* This is a side effecting function that changes references to chars
* if there are not enough capturing groups to reference
* See: https://github.com/fent/ret.js/pull/39#issuecomment-1006475703
* See: https://github.com/fent/ret.js/issues/38
* @param {(Reference | Char)[]} referenceQueue
* @param {number} groupCount
* @returns {void}
*/
function updateReferences(referenceQueue, groupCount) {
// Note: We go through the queue in reverse order so
// that index we use is correct even if we have to add
// multiple tokens to one stack
for (const elem of referenceQueue.reverse()) {
if (groupCount < elem.reference.value) {
// If there is nothing to reference then turn this into a char token
elem.reference.type = types_1.types.CHAR;
const valueString = elem.reference.value.toString();
elem.reference.value = parseInt(valueString, 8);
// If the number is not octal then we need to create multiple tokens
// https://github.com/fent/ret.js/pull/39#issuecomment-1008229226
if (!/^[0-7]+$/.test(valueString)) {
let i = 0;
while (valueString[i] !== '8' && valueString[i] !== '9') {
i += 1;
}
if (i === 0) {
// Handling case when escaped number starts with 8 or 9
elem.reference.value = valueString.charCodeAt(0);
i += 1;
}
else {
// If the escaped number does not start with 8 or 9, then all
// 0-7 digits before the first 8/9 form the first character code
// see: https://github.com/fent/ret.js/pull/39#discussion_r780747085
elem.reference.value = parseInt(valueString.slice(0, i), 8);
}
if (valueString.length > i) {
const tail = elem.stack.splice(elem.index + 1);
for (const char of valueString.slice(i)) {
elem.stack.push({
type: types_1.types.CHAR,
value: char.charCodeAt(0),
});
}
elem.stack.push(...tail);
}
}
}
}
}
//# sourceMappingURL=tokenizer.js.map

1
node_modules/ret/dist/tokenizer.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

3
node_modules/ret/dist/types/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,3 @@
export * from './tokens';
export * from './types';
export * from './set-lookup';

16
node_modules/ret/dist/types/index.js generated vendored Normal file
View File

@@ -0,0 +1,16 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./tokens"), exports);
__exportStar(require("./types"), exports);
__exportStar(require("./set-lookup"), exports);
//# sourceMappingURL=index.js.map

1
node_modules/ret/dist/types/index.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,0CAAwB;AACxB,+CAA6B"}

8
node_modules/ret/dist/types/set-lookup.d.ts generated vendored Normal file
View File

@@ -0,0 +1,8 @@
/**
* The number of elements in a set lookup, and a
* function that returns the lookup.
*/
export interface SetLookup {
len: number;
lookup: () => Record<string | number, boolean>;
}

3
node_modules/ret/dist/types/set-lookup.js generated vendored Normal file
View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=set-lookup.js.map

1
node_modules/ret/dist/types/set-lookup.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"set-lookup.js","sourceRoot":"","sources":["../../lib/types/set-lookup.ts"],"names":[],"mappings":""}

41
node_modules/ret/dist/types/tokens.d.ts generated vendored Normal file
View File

@@ -0,0 +1,41 @@
import { types } from './types';
declare type Base<T, K> = {
type: T;
} & K;
declare type ValueType<T, K> = Base<T, {
value: K;
}>;
export declare type Root = Base<types.ROOT, {
stack?: Token[];
options?: Token[][];
flags?: string[];
}>;
export declare type Group = Base<types.GROUP, {
stack?: Token[];
options?: Token[][];
remember: boolean;
followedBy?: boolean;
notFollowedBy?: boolean;
lookBehind?: boolean;
name?: string;
}>;
export declare type Set = Base<types.SET, {
set: SetTokens;
not: boolean;
}>;
export declare type Range = Base<types.RANGE, {
from: number;
to: number;
}>;
export declare type Repetition = Base<types.REPETITION, {
min: number;
max: number;
value: Token;
}>;
export declare type Position = ValueType<types.POSITION, '$' | '^' | 'b' | 'B'>;
export declare type Reference = ValueType<types.REFERENCE, number>;
export declare type Char = ValueType<types.CHAR, number>;
export declare type Token = Group | Position | Set | Range | Repetition | Reference | Char;
export declare type Tokens = Root | Token;
export declare type SetTokens = (Range | Char | Set)[];
export {};

3
node_modules/ret/dist/types/tokens.js generated vendored Normal file
View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=tokens.js.map

1
node_modules/ret/dist/types/tokens.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../lib/types/tokens.ts"],"names":[],"mappings":""}

10
node_modules/ret/dist/types/types.d.ts generated vendored Normal file
View File

@@ -0,0 +1,10 @@
export declare enum types {
ROOT = 0,
GROUP = 1,
POSITION = 2,
SET = 3,
RANGE = 4,
REPETITION = 5,
REFERENCE = 6,
CHAR = 7
}

15
node_modules/ret/dist/types/types.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.types = void 0;
var types;
(function (types) {
types[types["ROOT"] = 0] = "ROOT";
types[types["GROUP"] = 1] = "GROUP";
types[types["POSITION"] = 2] = "POSITION";
types[types["SET"] = 3] = "SET";
types[types["RANGE"] = 4] = "RANGE";
types[types["REPETITION"] = 5] = "REPETITION";
types[types["REFERENCE"] = 6] = "REFERENCE";
types[types["CHAR"] = 7] = "CHAR";
})(types = exports.types || (exports.types = {}));
//# sourceMappingURL=types.js.map

1
node_modules/ret/dist/types/types.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,KASX;AATD,WAAY,KAAK;IACf,iCAAI,CAAA;IACJ,mCAAK,CAAA;IACL,yCAAQ,CAAA;IACR,+BAAG,CAAA;IACH,mCAAK,CAAA;IACL,6CAAU,CAAA;IACV,2CAAS,CAAA;IACT,iCAAI,CAAA;AACN,CAAC,EATW,KAAK,GAAL,aAAK,KAAL,aAAK,QAShB"}

18
node_modules/ret/dist/util.d.ts generated vendored Normal file
View File

@@ -0,0 +1,18 @@
import { SetTokens } from './types';
/**
* Finds character representations in str and convert all to
* their respective characters.
*
* @param {string} str
* @returns {string}
*/
export declare const strToChars: (str: string) => string;
/**
* Turns class into tokens
* reads str until it encounters a ] not preceeded by a \
*
* @param {string} str
* @param {string} regexpStr
* @returns {Array.<Array.<Object>, number>}
*/
export declare const tokenizeClass: (str: string, regexpStr: string) => [SetTokens, number];

82
node_modules/ret/dist/util.js generated vendored Normal file
View File

@@ -0,0 +1,82 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.tokenizeClass = exports.strToChars = void 0;
const types_1 = require("./types");
const sets = __importStar(require("./sets"));
const CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?';
/**
* Finds character representations in str and convert all to
* their respective characters.
*
* @param {string} str
* @returns {string}
*/
exports.strToChars = (str) => {
const charsRegex = /(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|c([@A-Z[\\\]^?])|([0tnvfr]))/g;
return str.replace(charsRegex, (s, b, lbs, a16, b16, dctrl, eslsh) => {
if (lbs) {
return s;
}
let code = b ? 8 :
a16 ? parseInt(a16, 16) :
b16 ? parseInt(b16, 16) :
dctrl ? CTRL.indexOf(dctrl) : {
0: 0,
t: 9,
n: 10,
v: 11,
f: 12,
r: 13,
}[eslsh];
let c = String.fromCharCode(code);
// Escape special regex characters.
return /[[\]{}^$.|?*+()]/.test(c) ? `\\${c}` : c;
});
};
/**
* Turns class into tokens
* reads str until it encounters a ] not preceeded by a \
*
* @param {string} str
* @param {string} regexpStr
* @returns {Array.<Array.<Object>, number>}
*/
exports.tokenizeClass = (str, regexpStr) => {
var _a, _b, _c, _d, _e, _f, _g;
let tokens = [], rs, c;
const regexp = /\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(((?:\\)])|(((?:\\)?([^\]])))))|(\])|(?:\\)?([^])/g;
while ((rs = regexp.exec(str)) !== null) {
const p = (_g = (_f = (_e = (_d = (_c = (_b = (_a = (rs[1] && sets.words())) !== null && _a !== void 0 ? _a : (rs[2] && sets.ints())) !== null && _b !== void 0 ? _b : (rs[3] && sets.whitespace())) !== null && _c !== void 0 ? _c : (rs[4] && sets.notWords())) !== null && _d !== void 0 ? _d : (rs[5] && sets.notInts())) !== null && _e !== void 0 ? _e : (rs[6] && sets.notWhitespace())) !== null && _f !== void 0 ? _f : (rs[7] && {
type: types_1.types.RANGE,
from: (rs[8] || rs[9]).charCodeAt(0),
to: (c = rs[10]).charCodeAt(c.length - 1),
})) !== null && _g !== void 0 ? _g : ((c = rs[16]) && { type: types_1.types.CHAR, value: c.charCodeAt(0) });
if (p) {
tokens.push(p);
}
else {
return [tokens, regexp.lastIndex];
}
}
throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Unterminated character class`);
};
//# sourceMappingURL=util.js.map

1
node_modules/ret/dist/util.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"util.js","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}

14
node_modules/ret/dist/write-set-tokens.d.ts generated vendored Normal file
View File

@@ -0,0 +1,14 @@
import { Set } from './types';
/**
* Takes character code and returns character to be displayed in a set
* @param {number} charCode Character code of set element
* @returns {string} The string for the sets character
*/
export declare function setChar(charCode: number): string;
/**
* Writes the tokens for a set
* @param {Set} set The set to display
* @param {boolean} isNested Whether the token is nested inside another set token
* @returns {string} The tokens for the set
*/
export declare function writeSetTokens(set: Set, isNested?: boolean): string;

108
node_modules/ret/dist/write-set-tokens.js generated vendored Normal file
View File

@@ -0,0 +1,108 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.writeSetTokens = exports.setChar = void 0;
const types_1 = require("./types");
const sets = __importStar(require("./sets-lookup"));
/**
* Takes character code and returns character to be displayed in a set
* @param {number} charCode Character code of set element
* @returns {string} The string for the sets character
*/
function setChar(charCode) {
return charCode === 94 ? '\\^' :
charCode === 92 ? '\\\\' :
charCode === 93 ? '\\]' :
charCode === 45 ? '\\-' :
String.fromCharCode(charCode);
}
exports.setChar = setChar;
/**
* Test if a character set matches a 'set-lookup'
* @param {SetTokens} set The set to be tested
* @param {SetLookup} param The predefined 'set-lookup' & the number of elements in the lookup
* @returns {boolean} True if the character set corresponds to the 'set-lookup'
*/
function isSameSet(set, { lookup, len }) {
// If the set and the lookup are not of the same length
// then we immediately know that the lookup will be false
if (len !== set.length) {
return false;
}
const map = lookup();
for (const elem of set) {
if (elem.type === types_1.types.SET) {
return false;
}
const key = elem.type === types_1.types.CHAR ? elem.value : `${elem.from}-${elem.to}`;
if (map[key]) {
map[key] = false;
}
else {
return false;
}
}
return true;
}
/**
* Writes the tokens for a set
* @param {Set} set The set to display
* @param {boolean} isNested Whether the token is nested inside another set token
* @returns {string} The tokens for the set
*/
function writeSetTokens(set, isNested = false) {
if (isSameSet(set.set, sets.INTS)) {
return set.not ? '\\D' : '\\d';
}
if (isSameSet(set.set, sets.WORDS)) {
return set.not ? '\\W' : '\\w';
}
// Notanychar is only relevant when not nested inside another set token
if (set.not && isSameSet(set.set, sets.NOTANYCHAR)) {
return '.';
}
if (isSameSet(set.set, sets.WHITESPACE)) {
return set.not ? '\\S' : '\\s';
}
let tokenString = '';
for (let i = 0; i < set.set.length; i++) {
const subset = set.set[i];
tokenString += writeSetToken(subset);
}
const contents = `${set.not ? '^' : ''}${tokenString}`;
return isNested ? contents : `[${contents}]`;
}
exports.writeSetTokens = writeSetTokens;
/**
* Writes a token within a set
* @param {Range | Char | Set} set The set token to display
* @returns {string} The token as a string
*/
function writeSetToken(set) {
if (set.type === types_1.types.CHAR) {
return setChar(set.value);
}
else if (set.type === types_1.types.RANGE) {
return `${setChar(set.from)}-${setChar(set.to)}`;
}
return writeSetTokens(set, true);
}
//# sourceMappingURL=write-set-tokens.js.map

1
node_modules/ret/dist/write-set-tokens.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"write-set-tokens.js","sourceRoot":"","sources":["../lib/write-set-tokens.ts"],"names":[],"mappings":"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"}

42
node_modules/ret/package.json generated vendored Normal file
View File

@@ -0,0 +1,42 @@
{
"name": "ret",
"description": "Tokenizes a string that represents a regular expression.",
"keywords": [
"regex",
"regexp",
"regular expression",
"parser",
"tokenizer"
],
"version": "0.5.0",
"repository": {
"type": "git",
"url": "git://github.com/fent/ret.js.git"
},
"author": "fent <fentbox@gmail.com> (https://github.com/fent)",
"main": "./dist/index.js",
"files": [
"dist"
],
"scripts": {
"test": "nyc --extension .ts --reporter=lcov --reporter=text-summary vows -- --spec test/*-test.js",
"build": "tsc",
"prepare": "tsc",
"lint": "eslint ./lib ./test",
"lint:fix": "eslint --fix ./lib ./test"
},
"devDependencies": {
"@types/node": "^14.11.8",
"@typescript-eslint/eslint-plugin": "^4.11.1",
"@typescript-eslint/parser": "^4.11.1",
"eslint": "^7.16.0",
"nyc": "^14.1.1",
"typescript": "^4.0.3",
"vows": "^0.8.3"
},
"engines": {
"node": ">=10"
},
"license": "MIT",
"dependencies": {}
}