Rephrase - a gem for manipulating Ruby code
Summary
Rephrase converts Ruby procs or methods to source code, allowing you to reformat, reinterpret or otherwise manipulate the generated source code. Possible uses include:
- Generating code from DSL blocks.
- Inlining loops.
- Macro exansion.
- World domination (???)
How does it do it?
Rephrase uses the RubyVM::AbstractSyntaxTree
API to get the AST of a proc or
method. This allows you to manipulate code at runtime, and to be able to access
its binding.
How to use it
Use Rephrase.to_source
to get the unmodified source code of a proc or method,
e.g.:
require 'rephrase'
example = proc { 2 + 2 }
Rephrase.to_source(example) #=> "proc do\n2 + 2\nend"
How to rephrase code
Further documentation is forthcoming...
Limitations
- Works only on MRI.
- Ruby 2.7 or newer.
- Generated source code will not be formatted identically to the source (indentation, line breaks etc.)