simple-squiggle/node_modules/mathjs/examples/advanced/function_transform.js

51 lines
1.2 KiB
JavaScript
Raw Normal View History

/**
* 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