unparser

Build Status Dependency Status Code Climate

Generate equivalent source for ASTs from whitequarks awesome parser.

This library is in early development stage and still has some bugs/missing features. Nevertheless it is able to regenerate it own source and serves well for mutant mutators and the in-memory vendoring for self hosting mutant.

Usage

require 'unparser'
Unparser.unparse(your_ast) # => "the code"

Equivalent vs identical:

require 'unparser'

code = <<-RUBY
%w(foo bar)
RUBY

node = Parser::CurrentRuby.parse(code)

generated = Unparser.unparse(node) # ["foo", "bar"], NOT %w(foo bar) !

code == generated                            # false, not identical code
Parser::CurrentRuby.parse(generated) == node # true, but identical AST

Summary: unparser does not reproduce your source! It produces equivalent source.

Installation

Install the gem unparser via your prefered method.

Credits

Contributing

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with Rakefile or version (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

License

See LICENSE file.