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:
- Números e os símbolos "(", ")", "+", "-", "*" ou "/" podem ser utilizados livremente.
- Caracteres somente podem ser utilizados nas variáveis e devem estar entre colchetes "[]".
- 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