steedos-platform/packages/formula
2024-10-23 01:59:45 +00:00
..
.circleci
.github/workflows
.scripts
grammars
src
test
.codeclimate.yml
.gitignore
.hound.yml
.npmignore
.npmrc
.nvmrc
babel.config.json
commitlint.config.js
CONTRIBUTING.md
LICENSE.txt
package.json action: release 2.7.10-beta.13 2024-10-23 01:59:45 +00:00
README.md
rollup.config.js

Formulon

DISCLAIMER: Under heavy development, far from feature complete. See Contributing for details

semantic-release

Dependency Status devDependency Status

Circle CI

Formulon is a Parser for Salesforce Formulas completely written in ECMA Script 2015.

Usage

parse

This method will return a object holding value and its metadata

import { parse } from 'formulon'

Examples

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 result dataType: 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:

parse('IF(TRUE)')
// {
//   type: 'error',
//   errorType: 'ArgumentError',
//   message: "Incorrect number of parameters for function 'IF()'. Expected 3, received 1",
//   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:

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:

{
  type: 'literal',
  value: <the actual value as a JS type>,
  dataType: <the salesforce field type specified above>,
  options: <salesforce field options>
}

extract

Utility function that returns a list of used variables

extract('IF(Variable__c, Variable__c, AnotherVariable__c)')
// [ 'Variable__c', 'AnotherVariable__c' ]

Contributors

Formulon exists thanks to the following people who have contributed.

功能说明

  • 此包用于系统的公式计算功能