From 10bf787e3a271ccfb2f1ae7923f4553bf03bab1d Mon Sep 17 00:00:00 2001 From: Mosher Date: Wed, 12 Oct 2022 11:40:14 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=96=B0=E5=A2=9Ehandlebars?= =?UTF-8?q?=E5=8A=A9=E6=89=8B=E7=B1=BBconcat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 拼接字符串 --- .../handlebars/src/helpers/concat/concat.ts | 26 +++++++++++++++++++ packages/handlebars/src/helpers/index.ts | 2 ++ .../handlebars/src/utils/helper/helper.ts | 1 + .../handlebars/test/helpers/helper.test.ts | 8 ++++++ 4 files changed, 37 insertions(+) create mode 100644 packages/handlebars/src/helpers/concat/concat.ts diff --git a/packages/handlebars/src/helpers/concat/concat.ts b/packages/handlebars/src/helpers/concat/concat.ts new file mode 100644 index 0000000..6678fec --- /dev/null +++ b/packages/handlebars/src/helpers/concat/concat.ts @@ -0,0 +1,26 @@ +import { HelperBase } from '../helper-base'; + +/** + * 字符串拼接 + * + * @description 用法:{{concat string1 string2 string3}} 返回值为 string 类型 + * @author mosher + * @date 2022-10-12 10:59:10 + * @export + * @class HelperConcat + * @extends {HelperBase} + */ +export class HelperConcat extends HelperBase { + constructor() { + super('concat'); + } + + onExecute(...args: string[]): string { + args.pop(); + let result: string = ''; + args.forEach((s: string) => { + result += s; + }); + return result; + } +} diff --git a/packages/handlebars/src/helpers/index.ts b/packages/handlebars/src/helpers/index.ts index 31a1ba0..3c59d25 100644 --- a/packages/handlebars/src/helpers/index.ts +++ b/packages/handlebars/src/helpers/index.ts @@ -1,5 +1,6 @@ import { HelperAnd } from './and/and'; import { HelperCamelCase } from './camel-case/camel-case'; +import { HelperConcat } from './concat/concat'; import { HelperEq } from './eq/eq'; import { HelperGt } from './gt/gt'; import { HelperGte } from './gte/gte'; @@ -26,6 +27,7 @@ import { HelperUpperCase } from './upper-case/upper-case'; export function installHelpers(): void { new HelperAnd(); new HelperCamelCase(); + new HelperConcat(); new HelperEq(); new HelperGt(); new HelperGte(); diff --git a/packages/handlebars/src/utils/helper/helper.ts b/packages/handlebars/src/utils/helper/helper.ts index e1a159c..2c26fc6 100644 --- a/packages/handlebars/src/utils/helper/helper.ts +++ b/packages/handlebars/src/utils/helper/helper.ts @@ -20,6 +20,7 @@ export class HelperUtil { 'log', 'and', 'camelCase', + 'concat', 'eq', 'gt', 'get', diff --git a/packages/handlebars/test/helpers/helper.test.ts b/packages/handlebars/test/helpers/helper.test.ts index 097cc26..7660d15 100644 --- a/packages/handlebars/test/helpers/helper.test.ts +++ b/packages/handlebars/test/helpers/helper.test.ts @@ -36,6 +36,14 @@ describe('模板助手测试', () => { expect(str).toBe('globalModel'); }); + it('字符串拼接: concat', () => { + { + const template = `{{concat "string1" "string2"}}`; + const str = engine.render(template, {}); + expect(str).toBe('string1string2'); + } + }); + it('等于: eq', () => { { const template = `{{#eq name '张三'}}真的{{else}}假的{{/eq}}`; -- Gitee