npm install formulon-propelFormulon is a Parser for Salesforce Formulas completely written in ECMA Script 2015.
- Change version in package.js
- npm run build
- npm login
- npm publish
This method will return a object holding value and its metadata
``javascript`
import { parse } from 'formulon'
#### Examples
`javascript`
parse('IF(TRUE, "True String", "False String")')
// {
// type: 'literal',
// value: 'True String',
// dataType: 'text',
// options: { length: 11 }
// }
type: Metadata from the parser (always literal)value: The actual value of the resultdataType: The type of the return (currently number, text, or checkbox)options: different options per data type
#### Data Types
Currently the following data types are supported (naming is taken from the Salesforce Field Types):
- Number (Integer or Float depending on the options)
- Text
- Checkbox (TRUE or FALSE)
#### Options
Options depend on the data type:
##### Number
- Length: Number of digits to the left of the decimal point
- Scale: Number of digits to the right of the decimal point
##### Text
- Length: Number of characters
##### Checkbox
no options
#### Errors
Whenever an error occurs, an according object is returned:
`javascript`
parse('IF(TRUE)')
// {
// type: 'error',
// errorType: 'SyntaxError',
// message: 'Incorrect number of parameters for function \'IF()\'. Expected 3, received 1'
// }
#### Identifiers (Variables)
It's possible to specify formulas that contain variables. In that case pass the value of the variable in as a second argument:
`javascript`
parse('IF(Variable__c, "True String", "False String")', {Variable__c: {type: 'literal', dataType: 'checkbox', value: true}})
// {
// type: 'literal',
// value: 'True String',
// dataType: 'text',
// options: { length: 11 }
// }
You'll have to provide the variable in the form:
`javascript`
{
type: 'literal',
value:
dataType:
options:
}
Works in the same way as parse but will throw an exception when an error occurs:
`javascript`
parseAndThrowError('IF(TRUE)')
// SyntaxError: Incorrect number of parameters for function 'IF()'. Expected 3, received 1
Utility function that returns a list of used variables
`javascript``
extract('IF(Variable__c, Variable__c, AnotherVariable__c)')
// [ 'Variable__c', 'AnotherVariable__c' ]