Expressões Matemáticas
Introdução
A biblioteca de expressões matemáticas permite a avaliação de expressões com a utilização de variáveis dinâmicas. A biblioteca 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.
Sintaxe da Expressão
As expressões devem ser declaradas normalmente como uma função matemática em JavaScript. A inclusão de variáveis deverá ser feita entre colchetes. Uma variável permite os seguintes caracteres:
Espaços;
Letras maiúsculas, minúsculas e acentuação;
Os caracteres -, _ e . (ponto);
Números;
Exemplos de variáveis válidas:
[FAT.Preço]
[FAT-Preço Único]
[abc VaRiÁVEL1234__-]
Variáveis só podem começar com letras.
Utlização
O pacote uwl.expression deverá ser importado para ter acesso a esta biblioteca. Em seguida, a chamada ao método estático uwl.expression.createExpression() vai retornar uma instância da classe Expression, onde o desenvolvedor poderá avaliar uma expressão e obter seu resultado utilizando o método e expression.evalute().
Parâmetro de Entrada
O parâmetro de entrada do método evaluate deverá ser um objeto contento em suas chaves o nome das variáveis a serem processadas. O valor da chave deverá ser o valor a ser utilizado na expressão. Por exemplo, para uma expressão 10*[valor]+[outro valor], o parâmetro de entrada deverá ser:
{
'valor': 10,
'outro valor': 100
}
Exceções
Parâmetros null ou strings vazias serão consideradas como 0;
Divisões por zero retornarão o valor 0, não realizarão cálculo e não jogarão exceções.
Exemplo
O exemplo abaixo ilustra a utilização da biblioteca:
__includeOnce('ufs:/uwl/expression/expression.js');
var expr = uwl.expression.createExpression('10*[valor]');
var valor = expr.evaluate({ 'valor': 10 });
valor; // valor deve ser 100
Uso Avançado
É possível ainda informar fórmulas mais complexas, com a utilização de precedência entre parênteses e mais de uma varíavel.
O exemplo abaixo mostra como utilizar mais de uma variável com expressões mais complexas:
__includeOnce('ufs:/uwl/expression/expression.js');
var expr = uwl.expression.createExpression('10*([valor]*0.1)+([quantidade]/100)*((100*20)+[preço])');
var valor = expr.evaluate({
'valor': 10,
'preço': 10.49,
'quantidade': 10
});
valor; // valor deve ser 211.049
Utilização de Datas
O avaliador de expressões também suporta fórmulas com datas:
__includeOnce('ufs:/uwl/expression/expression.js');
var expr = uwl.expression.createExpression('[data]+30*[meses]');
var valor = expr.evaluate({
'data': new Date(2013, 0, 1),
'meses': 2
});
valor; // valor deve 02/03/2013
Exceções
Expressões com data não devem conter parênteses.