从Ruby中生成/修改Ruby源文件

时间:2012-01-16 07:25:23

标签: ruby metaprogramming

从ruby中生成和/或解析和修改Ruby源文件的最可靠方法是什么?

也就是说,我希望例如创建一个新的ruby源文件或将源文件中的类中的几行代码更改为例如添加或删除方法或调用或其他任何内容。

这可能有一个库吗?

1 个答案:

答案 0 :(得分:1)

Ruby2Ruby是one such gem。可能还有其他人。来自自述文件:

require 'rubygems'
require 'ruby2ruby'
require 'ruby_parser'
require 'pp'

ruby      = "def a\n  puts 'A'\nend\n\ndef b\n  a\nend"
parser    = RubyParser.new
ruby2ruby = Ruby2Ruby.new
sexp      = parser.process(ruby)

pp sexp

p ruby2ruby.process(sexp)

## outputs:

s(:block,
 s(:defn,
  :a,
  s(:args),
  s(:scope, s(:block, s(:call, nil, :puts, s(:arglist, s(:str, "A")))))),
 s(:defn, :b, s(:args), s(:scope, s(:block, s(:call, nil, :a, s(:arglist))))))
"def a\n  puts(\"A\")\nend\ndef b\n  a\nend\n"