当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript spel2js.SpelExpressionEvaluator类代码示例

本文整理汇总了TypeScript中spel2js.SpelExpressionEvaluator的典型用法代码示例。如果您正苦于以下问题:TypeScript SpelExpressionEvaluator类的具体用法?TypeScript SpelExpressionEvaluator怎么用?TypeScript SpelExpressionEvaluator使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了SpelExpressionEvaluator类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: parseExpressions

  /**
   * Helper that parses given expression string using the configured parser. The
   * expression string can contain any number of expressions all contained in "${...}"
   * markers. For instance: "foo${expr0}bar${expr1}". The static pieces of text will
   * also be returned as Expressions that just return that static piece of text. As a
   * result, evaluating all returned expressions and concatenating the results produces
   * the complete evaluated string. Unwrapping is only done of the outermost delimiters
   * found, so the string 'hello ${foo${abc}}' would break into the pieces 'hello ' and
   * 'foo${abc}'. This means that expression languages that used ${..} as part of their
   * functionality are supported without any problem. The parsing is aware of the
   * structure of an embedded expression. It assumes that parentheses '(', square
   * brackets '[' and curly brackets '}' must be in pairs within the expression unless
   * they are within a string literal and a string literal starts and terminates with a
   * single quote '.
   * @param expressionString the expression string
   * @return the parsed expressions
   * @throws ParseException when the expressions cannot be parsed
   */
  public parseExpressions(expressionString: string): spel2js.SpelExpression[] {
    const expressions: spel2js.SpelExpression[] = [];
    const prefix = '${';
    const suffix = '}';

    let startIdx = 0;
    while (startIdx < expressionString.length) {
      const prefixIndex = expressionString.indexOf(prefix, startIdx);
      if (prefixIndex >= startIdx) {
        // an inner expression was found - this is a composite
        if (prefixIndex > startIdx) {
          expressions.push(literalExpression(expressionString.substring(startIdx, prefixIndex)));
        }

        const afterPrefixIndex = prefixIndex + prefix.length;
        const suffixIndex = this.skipToCorrectEndSuffix(suffix, expressionString, afterPrefixIndex);
        if (suffixIndex === -1) {
          throw new Error(
            "No ending suffix '" +
              suffix +
              "' for expression starting at character " +
              prefixIndex +
              ': ' +
              expressionString.substring(prefixIndex),
          );
        }

        if (suffixIndex === afterPrefixIndex) {
          throw new Error(
            "No expression defined within delimiter '" + prefix + suffix + "' at character " + prefixIndex,
          );
        }

        const expr = expressionString.substring(prefixIndex + prefix.length, suffixIndex).trim();

        if (!expr) {
          throw new Error(
            "No expression defined within delimiter '" + prefix + suffix + "' at character " + prefixIndex,
          );
        }

        expressions.push(spel2js.SpelExpressionEvaluator.compile(expr));
        startIdx = suffixIndex + suffix.length;
      } else {
        // no more ${expressions} found in string, add rest as static text
        expressions.push(literalExpression(expressionString.substring(startIdx)));
        startIdx = expressionString.length;
      }
    }

    return expressions;
  }
开发者ID:emjburns,项目名称:deck,代码行数:70,代码来源:spel2js.templateParser.ts

示例2:

const literalExpression = (literalString: string) =>
  spel2js.SpelExpressionEvaluator.compile(`'${literalString.replace(/'/g, "''")}'`);
开发者ID:robfletcher,项目名称:deck,代码行数:2,代码来源:spel2js.templateParser.ts


注:本文中的spel2js.SpelExpressionEvaluator类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。