L2G / unparser

Generate equivalent sourcecode from whitequark/parser ast.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

Generate equivalent sourcecode from whitequark/parser ast.

License:MIT License


Languages

Language:Ruby 100.0%