@imnull/xer
v1.0.2
Published
基于`acornjs`的`javascript`脚本解释器。
Downloads
1
Readme
@imnull/xer
基于acornjs
的javascript
脚本解释器。
仅解释expression
节点,对各种function
和statement
等等不做处理。
使用场景
处理view
层节点的混合数据
使用方法
import { create } from '@imnull/xer'
const env = { n: 1 }
const code = `{n,arr:[1,n,2]}`
const parse = create(code)
console.log(parse(env))
// { n: 1, arr: [ 1, 1, 2 ] }
测试用例
const { create } = require('@imnull/xer')
console.log(create('n')({ n: 1 }))
console.log(create('n===1?111:222')({ n: 1 }))
console.log(create('n===1?333:555')({ n: 2 }))
console.log(create('0 || 1')({ n: 2 }))
console.log(create('"0" || 1')({ n: 2 }))
console.log(create('`abc\n xyz\n ${123}4${n}` || 1')({ n: 'nnnnnn' }))
console.log(create('{n,nn:1,[`${n}`]:123,1:567,["02"]:"22222",...o,x:11,z:33,[a==1?`a`:`aaa`]:`logic${n}`}')({ a:2, n: 'nnnnnn', o: { x: 1, y: 2, z: 3 } }))
console.log(create('[n,nn,[`${n}`],a==1?`a`:`aaa`,`logic${n}`]')({ a:2, n: 'nnnnnn', o: { x: 1, y: 2, z: 3 } }))
// 1
// 111
// 555
// 1
// 0
// abc
// xyz
// 1234nnnnnn
// {
// '1': 567,
// n: 'nnnnnn',
// nn: 1,
// nnnnnn: 123,
// '02': '22222',
// x: 11,
// y: 2,
// z: 33,
// aaa: 'logicnnnnnn'
// }
// [ 'nnnnnn', undefined, [ 'nnnnnn' ], 'aaa', 'logicnnnnnn' ]