51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
/**
|
|
* Function transforms
|
|
*
|
|
* When using functions via the expression parser, it is possible to preprocess
|
|
* function arguments and post process a functions return value by writing a
|
|
* *transform* for the function. A transform is a function wrapping around a
|
|
* function to be transformed or completely replaces a function.
|
|
*/
|
|
const { create, all } = require('../..')
|
|
const math = create(all)
|
|
|
|
// create a function
|
|
function addIt (a, b) {
|
|
return a + b
|
|
}
|
|
|
|
// attach a transform function to the function addIt
|
|
addIt.transform = function (a, b) {
|
|
console.log('input: a=' + a + ', b=' + b)
|
|
// we can manipulate the input arguments here before executing addIt
|
|
|
|
const res = addIt(a, b)
|
|
|
|
console.log('result: ' + res)
|
|
// we can manipulate the result here before returning
|
|
|
|
return res
|
|
}
|
|
|
|
// import the function into math.js
|
|
math.import({
|
|
addIt: addIt
|
|
})
|
|
|
|
// use the function via the expression parser
|
|
console.log('Using expression parser:')
|
|
console.log('2+4=' + math.evaluate('addIt(2, 4)'))
|
|
// This will output:
|
|
//
|
|
// input: a=2, b=4
|
|
// result: 6
|
|
// 2+4=6
|
|
|
|
// when used via plain JavaScript, the transform is not invoked
|
|
console.log('')
|
|
console.log('Using plain JavaScript:')
|
|
console.log('2+4=' + math.addIt(2, 4))
|
|
// This will output:
|
|
//
|
|
// 6
|