Sorcerer是Jim Weirich开发的Ruby代码生成器,能够基于Ripper类的抽象语法树(例如S表达式)。
例子
sexp = [:binary,
[:var_ref, [:@ident, "a", [1, 0]]],
:+,
[:var_ref, [:@ident, "b", [1, 4]]]]
puts Sorcerer.source(sexp)
会生成
a + b
Sorcerer需要用到的S表达式可以用Ripper生成。下面的代码效果类似:
sexp = Ripper::SexpBuilder.new("a + b").parse
puts Sorcerer.source(sexp)
选项
无选项
默认状态下,sorcerer会输出单行代码。
例如,给定以下代码:
sexp = Ripper::SexpBuilder.new("def foo; bar; end").parse
然后下面的代码:
puts Sorcerer.source(sexp)
会生成单行代码:
def foo; bar; end
多行输出
使用multiline
选项可以实现多行输出。
例如,同样是上面举的代码,使用:
puts Sorcerer.source(sexp, multiline: true)
会得到多行输出:
def foo
bar
end
缩进
默认状态下,sorcerer的多行输出没有缩进。添加indent
选项会添加缩进。
例如:
puts Sorcerer.source(sexp, indent: true)
会生成带缩进的代码:
def foo
bar
end
调试输出
使用debug
选项
puts Sorcerer.source(sexp, debug: true)
许可
MIT
相关链接
编译 SegmentFault
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。