This commit upgrades TypeScript to the latest version 5.3 and introduces `verbatimModuleSyntax` in line with the official Vue guide recommendatinos (vuejs/docs#2592). By enforcing `import type` for type-only imports, this commit improves code clarity and supports tooling optimization, ensuring imports are only bundled when necessary for runtime. Changes: - Bump TypeScript to 5.3.3 across the project. - Adjust import statements to utilize `import type` where applicable, promoting cleaner and more efficient code.
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { FunctionParameter } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameter';
|
|
import { RegexParser, type IPrimitiveExpression } from '../Parser/Regex/RegexParser';
|
|
import { ExpressionRegexBuilder } from '../Parser/Regex/ExpressionRegexBuilder';
|
|
|
|
export class ParameterSubstitutionParser extends RegexParser {
|
|
protected readonly regex = new ExpressionRegexBuilder()
|
|
.expectExpressionStart()
|
|
.expectCharacters('$')
|
|
.captureUntilWhitespaceOrPipe() // First capture: Parameter name
|
|
.expectOptionalWhitespaces()
|
|
.captureOptionalPipeline() // Second capture: Pipeline
|
|
.expectExpressionEnd()
|
|
.buildRegExp();
|
|
|
|
protected buildExpression(match: RegExpMatchArray): IPrimitiveExpression {
|
|
const parameterName = match[1];
|
|
const pipeline = match[2];
|
|
return {
|
|
parameters: [new FunctionParameter(parameterName, false)],
|
|
evaluator: (context) => {
|
|
const { argumentValue } = context.args.getArgument(parameterName);
|
|
if (!pipeline) {
|
|
return argumentValue;
|
|
}
|
|
return context.pipelineCompiler.compile(argumentValue, pipeline);
|
|
},
|
|
};
|
|
}
|
|
}
|