帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:wal  recursive  ast  
node-falafel with a UMD wrapper

  • 源代码名称:node-falafel
  • 源代码网址:http://www.github.com/substack/node-falafel
  • node-falafel源代码文档
  • node-falafel源代码下载
  • Git URL:
    git://www.github.com/substack/node-falafel.git
  • Git Clone代码到本地:
    git clone http://www.github.com/substack/node-falafel
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/substack/node-falafel
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • falafel

    ast 转换为递归遍历。

    browser support

    build status

    这个模块使用 acorn 从源代码创建一个 AST。

    falafel döner

    示例

    array.js

    将函数包装器放置在所有 array 文本中。

    var falafel =require('falafel');var src ='('+function () {
     var xs = [ 1, 2, [ 3, 4 ] ];
     var ys = [ 5, 6 ];
     console.dir([ xs, ys ]);
    } +')()';var output =falafel(src, function (node) {
     if (node.type==='ArrayExpression') {
     node.update('fn('+node.source() +')');
     }
    });console.log(output);

    输出:

    
    (function () {
    
    
     var xs = fn([ 1, 2, fn([ 3, 4 ]) ]);
    
    
     var ys = fn([ 5, 6 ]);
    
    
     console.dir(fn([ xs, ys ]));
    
    
    })()
    
    
    
    
    方法
    var falafel =require('falafel')

    (,opts= {},fn )

    将字符串源 src 转换为函数 fn,返回转换后的输出对象的字符串。

    对于ast中的每个 node,fn(node) 激发。 递归遍历是预先遍历的,所以在它们的父节点之前调用。

    执行预遍历使编写嵌套转换变得更容易,因为转换父级通常需要首先转换它的所有子元素。

    返回值与( 它定义了 .toString().inspect() ) 类似,因此在函数返回并仍然捕获输出之后,可以异步调用 node.update()

    而不是传递 src,你也可以使用 opts.source

    所有的opts 将直接传递到 acorn。

    自定义解析器

    你可以将一个acorn实例传递给选择的opts.parser 以使用该版本,而不是使用这个库打包的acorn版本。

    var acorn =require('acorn-jsx');falafel(src, {parser: acorn, plugins: { jsx:true }}, function(node) {
     // this will parse jsx});
    节点

    除了常规的esprima 数据之外,还可以在节点上调用一些插入方法。

    除了更新当前 node 之外,还可以通过子节点调用子节点上子节点的更新函数。

    node.source( )

    返回给定 node的源,包括对子节点所做的任何修改。

    node.update(s )

    将当前 node的源转换为字符串 s

    注意,在 'ForStatement' node 类型中,存在一个名为 update的子节点。 对于那些节点,所有属性都被复制到 node.update() 函数上。

    node.parent

    对 root 元素中的父元素或者 null的引用。

    安装

    使用 npm:

    
    npm install falafel
    
    
    
    
    许可证

    MIT



    文章标签:wal  ast  recursive  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语