diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-21 20:56:19 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-21 20:56:19 +0000 |
commit | 0b6210cd37b68b94252cb798598b12974a20e1c1 (patch) | |
tree | e371686554a877842d95aa94f100bee552ff2a8e /llparse-frontend/src/utils | |
parent | Initial commit. (diff) | |
download | node-undici-0b6210cd37b68b94252cb798598b12974a20e1c1.tar.xz node-undici-0b6210cd37b68b94252cb798598b12974a20e1c1.zip |
Adding upstream version 5.28.2+dfsg1+~cs23.11.12.3.upstream/5.28.2+dfsg1+_cs23.11.12.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'llparse-frontend/src/utils')
-rw-r--r-- | llparse-frontend/src/utils/identifier.ts | 32 | ||||
-rw-r--r-- | llparse-frontend/src/utils/index.ts | 19 |
2 files changed, 51 insertions, 0 deletions
diff --git a/llparse-frontend/src/utils/identifier.ts b/llparse-frontend/src/utils/identifier.ts new file mode 100644 index 0000000..c9ba6ad --- /dev/null +++ b/llparse-frontend/src/utils/identifier.ts @@ -0,0 +1,32 @@ +export interface IUniqueName { + readonly name: string; + readonly originalName: string; +} + +export class Identifier { + private readonly ns: Set<string> = new Set(); + + constructor(private readonly prefix: string = '', + private readonly postfix: string = '') { + } + + public id(name: string): IUniqueName { + let target = this.prefix + name + this.postfix; + if (this.ns.has(target)) { + let i = 1; + for (; i < this.ns.size; i++) { + if (!this.ns.has(target + '_' + i)) { + break; + } + } + + target += '_' + i; + } + + this.ns.add(target); + return { + name: target, + originalName: name, + }; + } +} diff --git a/llparse-frontend/src/utils/index.ts b/llparse-frontend/src/utils/index.ts new file mode 100644 index 0000000..06e86f1 --- /dev/null +++ b/llparse-frontend/src/utils/index.ts @@ -0,0 +1,19 @@ +export { Identifier, IUniqueName } from './identifier'; + +export function toCacheKey(value: number | boolean): string { + if (typeof value === 'number') { + if (value < 0) { + return 'm' + (-value); + } else { + return value.toString(); + } + } else if (typeof value === 'boolean') { + if (value === true) { + return 'true'; + } else { + return 'false'; + } + } else { + throw new Error(`Unsupported value: "${value}"`); + } +} |