ts-expression-evaluator
TypeScript icon, indicating that this package has built-in type declarations

1.3.14 • Public • Published

ts-expression-evaluator

NPM version build status Coverage Status

Context-based expression evaluator.

install

  • npm npm install ts-expression-evaluator
  • yarn yarn add ts-expression-evaluator

Quick start

import evaluate, { registerFunction } from 'ts-expression-evaluator'
const context = {
  id: 10,
  name: 'FED',
  count: 10,
  staffs: [{
    id: 1,
    name: 'Tina'
  }, {
    id: 2,
    name: 'James'
  }],
}
 
// math
evaluate('1+2') // 3
 
// eval from context
evaluate('name', context) // 'FED'
evaluate('staffs[0].name', context) // 'Tina'
evaluate('count + 10', context) // 20
 
// ===
evaluate('count === 11', context) // false
 
// register custom function
registerFunction('IF', (condition, ifTrue, ifFalse) => {
  return condition ? ifTrue : ifFalse;
})
 
evaluate('IF(name === 'FED''It\'s FED.', 'It\'s not FED.')') // It'FED.
 
// array filter
evaluate('staffs[this.id === 1]', context) // [{id: 1, name: 'Tina'}]

Details

Unary Operators

Operation Symbol
Negate !

Binary Operators

Operation Symbol
Add, Concat +
Subtract -
Multiply *
Divide /

Logical Operators

Operation Symbol
Logical AND &&
Logical OR ||

Comparisons

Comparison Symbol
Equal ==
Not equal !=
Greater than >
Greater than or equal >=
Less than <
Less than or equal <=

Native Types

Type Examples
Booleans true, false
Strings "Hello "user"", 'Hey there!'
Numerics 6, -7.2, 5, -3.14159
Arrays ['hello', 'world!']

API

evaluate(exp: string, context: object): any

registerFunction(name: string, func: Function): void

registerFunctions(funcs: {[key: string]: Function}): void

License

MIT

Package Sidebar

Install

npm i ts-expression-evaluator

Weekly Downloads

2,076

Version

1.3.14

License

MIT

Unpacked Size

32.2 kB

Total Files

24

Last publish

Collaborators

  • yzyz545