1.0.1 • Published 3 years ago

scriptexecutor v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

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

  1. express: context.QN006AC0001 || context.QN006AC0003 || context.QN006AC0004
function booleanMatch(context) {
  return context.QN006AC0001 || context.QN006AC0003 || context.QN006AC0004 ? true : false
}
  1. 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

  1. update time 2021/04/12
  2. support dynamic script execution
  3. support custom function
  4. fixed readme

feature

There is nothing for the time being

1.0.1

3 years ago

1.0.0

3 years ago