1.0.1 • Published 3 years ago
scriptexecutor v1.0.1
A simple dynamic script executor based on JavaScript new function
for example:
context: {a: 1, b: 2}
express: 'contenx.a && contenx.b' booleanMatch output true
express: 'contenx.a && contenx.b > 5' booleanMatch output false
express: 'matchCounts(context,"a","b") > 1' booleanMatch output true
express: 'context.a' calculation output 1
when the executor is executed, express will be converted to JavaScript code
- express: context.QN006AC0001 || context.QN006AC0003 || context.QN006AC0004
function booleanMatch(context) {
return context.QN006AC0001 || context.QN006AC0003 || context.QN006AC0004 ? true : false
}
- express: matchCounts(context,"QN006AC0138","QN006AC0139","QN006AC0140","QN006AC0141") > 1
function booleanMatch(context, matchCounts) {
return matchCounts(context, "QN006AC0138", "QN006AC0139", "QN006AC0140", "QN006AC0141") > 1 ? true : false
}
quick start
npm i scriptexecutor
import scriptExecutor from 'scriptExecutor'
let context = {
name: "张三",
age: 12
}
console.log(scriptExecutor.match(context, 'context.name === \'张三\'', new Map()))
console.log(scriptExecutor.match(context, 'context.age === 12 && context.name === \'张三\''))
console.log(scriptExecutor.calculation(context, 'context.age + 10'))
console.log(scriptExecutor.calculation(context, '(context.age + 10) > 10'))
console.log(scriptExecutor.match(context, 'context.parent'))
// custom function
let funcMap = new Map()
funcMap.set('subTen', (context, arg) => {
return context[arg] - 10
})
console.log(scriptExecutor.match(context, 'subTen(context,\'age\') === 2', funcMap))
console.log(scriptExecutor.match(context, 'subTen(context,\'age\') === 3', funcMap))
update info
- update time 2021/04/12
- support dynamic script execution
- support custom function
- fixed readme
feature
There is nothing for the time being