import { immutable } from '../../decorators'; import { ExpressionNode, LOGIC_TYPE } from '../LogicItem'; import { BuiltInFuncParam } from './BuiltInFuncParam'; /** * 内置函数 * @TODO: 当前类目前主要用于生成文档 */ export class BuiltInFunction extends ExpressionNode { /** * 逻辑节点类型 */ @immutable() public readonly type: LOGIC_TYPE = LOGIC_TYPE.BuiltInFunction; /** * 调用名称 */ @immutable() public readonly calleeCode: string = undefined; /** * 跳转页面参数 */ @immutable() public readonly params: Array = []; /** * 生成 JS 脚本 */ toScript() { const params = this.params.map((param) => param.toScript()); let paramsCode = params.join(','); if (paramsCode === ',') paramsCode = ''; else paramsCode = params.join(','); return `${this.calleeCode}(${paramsCode})`.replace(/"/g, "'"); } }