Ripper - это библиотека синтаксического анализа, которая поставляется с Ruby 1.9. Он преобразует код Ruby в AST, например:
pp Ripper.sexp("def foo; yield :a; return 1 end")
#=>
[:program,
[[:def,
[:@ident, "foo", [1, 4]],
[:params, nil, nil, nil, nil, nil],
[:bodystmt,
[[:yield,
[:args_add_block,
[[:symbol_literal, [:symbol, [:@ident, "a", [1, 16]]]]],
false]],
[:return, [:args_add_block, [[:@int, "1", [1, 26]]], false]]],
nil,
nil,
nil]]]]
Есть ли библиотека, чтобы взять этот AST и преобразовать его обратно в код Ruby?
ruby_parser и ruby2ruby раньше делали это, но я хотел бы использовать Ripper в качестве моего парсера. (Ruby 1.9 может даже поставляться с такой библиотекой, но я изо всех сил пытаюсь найти документацию даже на самом Ripper) *