CNode

使用eval实现类似ruby的string内插

分享
Mmagicdawn发布于12 年前最后回复12 年前3 回复4443 浏览0 收藏

RT...

https://github.com/magicdawn/eval-string-interpolation https://www.npmjs.org/package/eval-string-interpolation

var inter = require('eval-string-interpolation');

var name = "zhangsan"
var age = 18

console.log(eval(inter("name = #{name} , age = #{age}")));
// name = zhangsan , age = 18

可以把 inter移到后面,少一层括号,通过 String.prototype.__defineProperty 实现

做这个玩意,主要是模版引擎太重量级了,util.format不好用. 然后想实现 那种 somefunc(xxx)的,发现除了eval,其他的不能访问当前作用域. 挣扎中修改了Module._contextLoad = true,和 Module._compile 中的 runInNewContext -> runInContext , 这种只能是模块的 局部变量有效,碰到函数之类不行,只能用eval了...

目前不支持 @ -> this,这一阵后再说

查看回复

回复 (3)

M
magicdawn#1·12 年前

撒发坐着呀...

J
jysperm#2·12 年前

快上 Coffee 贼船

M
magicdawn#3·12 年前
引用 jysperm快上 Coffee 贼船

@jysperm 就是看coffee支持,才做这个的...

参与回复
登录后即可参与回复。登录