Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.
/ ripper2ruby Public archive
forked from msorc/ripper2ruby

Similar to ruby2ruby this library allows to parse Ruby code, modify and recompile it back to Ruby.

License

Notifications You must be signed in to change notification settings

exKAZUu/ripper2ruby

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ripper2Ruby

Similar to ruby2ruby this library allows to parse Ruby code, modify and recompile it back to Ruby.

Differences:

  • uses Ripper for parsing (shipped with Ruby 1.9)
  • produces a full object-oriented representation of the Ruby code

Higher level select API

  • A higher level API is to facilitate selecting parts of the parse tree

See files: ruby_api.rb and ruby_api_traversal_test.rb

Find module

# module Monty::Python ... end code.find_module('Monty::Python') 

Find class

# class Monty::Python ... end code.find_class('Monty::Python') 
# class Monty < Abc::Blip ... end code.find_class('Monty', :superclass => 'Abc::Blip') 

Find block

# my_block do ... end code.find_block('my_block') 
# my_block do |v| ... end code.find_block('my_block', :block_params => ['v']) 
 # my_block 7, 'a' do ... end code.find_block('my_block', :args => [7, 'a']) 
 # my_block 7, 'a', :k => 32 do |v| ... end code.find_block('my_block', :args => [7, 'a', {:k => 32}], :block_params => ['v']) 
# my_block :a => 7, b => 3 do |v| ... end block_node = code.find_block('my_block', :args => [{:a => 7, 'b' => 3}]) 
 # my_block ['a', 'b'] do |v| ... end block_node = code.find_block('my_block', :args => [{:array =>['a', 'b']}]) 

More to come soon...

About

Similar to ruby2ruby this library allows to parse Ruby code, modify and recompile it back to Ruby.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%