UNPKG

1.27 kBJavaScriptView Raw
1/**
2 * Function transforms
3 *
4 * When using functions via the expression parser, it is possible to preprocess
5 * function arguments and post process a functions return value by writing a
6 * *transform* for the function. A transform is a function wrapping around a
7 * function to be transformed or completely replaces a function.
8 */
9const { create, all } = require('../..')
10const math = create(all)
11
12// create a function
13function addIt (a, b) {
14 return a + b
15}
16
17// attach a transform function to the function addIt
18addIt.transform = function (a, b) {
19 console.log('input: a=' + a + ', b=' + b)
20 // we can manipulate the input arguments here before executing addIt
21
22 const res = addIt(a, b)
23
24 console.log('result: ' + res)
25 // we can manipulate the result here before returning
26
27 return res
28}
29
30// import the function into math.js
31math.import({
32 addIt: addIt
33})
34
35// use the function via the expression parser
36console.log('Using expression parser:')
37console.log('2+4=' + math.evaluate('addIt(2, 4)'))
38// This will output:
39//
40// input: a=2, b=4
41// result: 6
42// 2+4=6
43
44// when used via plain JavaScript, the transform is not invoked
45console.log('')
46console.log('Using plain JavaScript:')
47console.log('2+4=' + math.addIt(2, 4))
48// This will output:
49//
50// 6