From 967724929cf33ce40d16f11440b45fb7dbb62d7b Mon Sep 17 00:00:00 2001 From: Sheldon Guo Date: Thu, 13 Mar 2025 07:16:31 +0800 Subject: [PATCH] feat: update extractTemplateElements to return helpers and refactor usage in VariablesProvider --- packages/core/client/src/variables/VariablesProvider.tsx | 6 +++--- packages/core/json-template-parser/src/utils/index.ts | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/core/client/src/variables/VariablesProvider.tsx b/packages/core/client/src/variables/VariablesProvider.tsx index dff152ddef..5f0c0b36db 100644 --- a/packages/core/client/src/variables/VariablesProvider.tsx +++ b/packages/core/client/src/variables/VariablesProvider.tsx @@ -277,7 +277,7 @@ const VariablesProvider = ({ children, filterVariables }: any) => { fieldOperator?: string | void; }, ) => { - const { fullVariable, filters } = extractTemplateElements(str); + const { fullVariable, helpers } = extractTemplateElements(str); if (!fullVariable) { return str; } @@ -288,8 +288,8 @@ const VariablesProvider = ({ children, filterVariables }: any) => { const path = getPath(str); const result = await getResult(path, localVariables as VariableOption[], options); - if (Array.isArray(filters) && filters.length > 0) { - result.value = filters.reduce((acc, filter) => filter.handler(...[acc, ...filter.args]), result.value); + if (Array.isArray(helpers) && helpers.length > 0) { + result.value = helpers.reduce((acc, helper) => helper.handler(...[acc, ...helper.args]), result.value); } return { diff --git a/packages/core/json-template-parser/src/utils/index.ts b/packages/core/json-template-parser/src/utils/index.ts index 0d8f06cf49..7f16a21f86 100644 --- a/packages/core/json-template-parser/src/utils/index.ts +++ b/packages/core/json-template-parser/src/utils/index.ts @@ -28,7 +28,11 @@ export function extractTemplateVariable(template: string): string | null { } } -export function extractTemplateElements(template: string) { +export function extractTemplateElements(template: string): { + fullVariable: string | null; + variableSegments: string[]; + helpers: Filter[]; +} { const escapedTemplate = escape(template ?? ''); try { const fullVariable = engine.fullVariablesSync(escapedTemplate)[0] ?? '';