Module: @nginstack/web-framework/lib/expression/Expression

Members


<inner, constant> regexCompleteExpression :string

Regex para avaliar a expressão completa.

Type:
  • string

<inner, constant> regexToExtractVariables :string

Expressão para extrair variáveis entre colchetes. Grupo 1 = [ Grupo 2 = Regex de uma variável Grupo 3 = ]

Type:
  • string

Methods


<inner> Expression(expression, expression)

Esta classe permite a avaliação de expressões matemáticas com a utilização de variáveis dinâmicas. Ela funciona a partir de uma fórmula matemática onde variáveis estão entrelaçadas com outras operações. As expressões matemáticas não permitem a utilização de funções JavaScript em sua formulação.

As expressões devem ser declaradas normalmente como uma função matemática em JavaScript e devem seguir as regras abaixo:

  1. Números e os símbolos "(", ")", "+", "-", "*" ou "/" podem ser utilizados livremente.
  2. Caracteres somente podem ser utilizados nas variáveis e devem estar entre colchetes "[]".
  3. Não pode haver parênteses entre colchetes.

Variáveis são declaradas entre colchetes e são permitidas letras maiúsculas, minúsculas e acentuadas, números, espaços e os símbolos "-", "_" e ".". As variáveis sempre devem iniciar com letras. Exemplos de variáveis válidas:

  • [FAT.Preço]
  • [FAT-Preço Único]
  • [abc VaRiÁVEL1234__-]

É possível informar fórmulas complexas com a utilização de precedência entre parênteses, com mais de uma variável e que manipula datas, conforme exemplos a seguir.

Parameters:
Name Type Description
expression string

Expressão matemática a ser avaliada. Parâmetros podem ser utilizados e devem ser expressos entre colchetes ([parameter]). Quaisquer outras funções contidas na expressão não serão aceitas.

expression string

Expressão a ser verificada

Throws:
  • Error Expressão vazia ou null

  • Error Expressão sintaticamente incorreta (não há match com regex)

  • Error Expressão semanticamente inválida (substituição de variáveis pelo valor '1' resultou em erro.

Returns:

Instância de Expression a ser utilizada

Type
Expression
Examples
const Expression = require('@nginstack/web-framework/lib/expression/Expression.js');
const expr = new Expression('10*(300+[REC.Recurso])');
const params = {
 'REC.Recurso': 100
};
const value = expr.evaluate(params);
value; // => 4000.
const Expression = require('@nginstack/web-framework/lib/expression/Expression.js');
const expr = uwl.expression.createExpression('10*([valor]*0.1)+([quantidade]/100)*((100*20)+[preço])');
const value = expr.evaluate({
  'valor': 10,
  'preço': 10.49,
  'quantidade': 10
});
value; // => 211.049
const Expression = require('@nginstack/web-framework/lib/expression/Expression.js');
const expr = uwl.expression.createExpression('[data]+30*[meses]');
const value = expr.evaluate({
  'data': new Date(2013, 0, 1),
  'meses': 2
});
value; // => Date(2013, 2, 2)
O avaliador de expressões também suporta fórmulas com datas