Sha256: dca00b82bd3e830006ed34d6af1ffd80f3447a9ecca084dd6023cc869ab41acb

Contents?: true

Size: 1.23 KB

Versions: 3

Compression:

Stored size: 1.23 KB

Contents

Ruby-decompiler is a decompiler for ruby code.  With it you can...

View method signatures:

  irb(main):015:0> def foo(a, b, *rest, &block); end; method(:foo).signature
  => #<MethodSig::Signature:0x4037093c @origin_class=Object, @arg_info={:b=>"b",
  :block=>"&block", :a=>"a", :rest=>"*rest"}, @name="foo", @arg_names=[:a,
  :b, :rest, :block]>
  irb(main):016:0> proc { |x, y, *rest| }.signature
  => #<Proc::Signature:0x4036cf30 @args=#<Proc::Arguments:0x4036d020 @rest_arg=2,
  @multiple_assignment=true, @names=[:x, :y, :rest]>, @arg_info={:x=>"x", :y=>"y",
  :rest=>"*rest"}>

And reconstruct compiled methods:

  irb(main):001:0> def foo(a, b, *rest, &block)
  irb(main):002:1>   begin
  irb(main):003:2*     if not a and not b then
  irb(main):004:3*       raise "Need more input!"
  irb(main):005:3>     end
  irb(main):006:2>     return a + b
  irb(main):007:2>   ensure
  irb(main):008:2*     puts "In ensure block"
  irb(main):009:2>   end
  irb(main):010:1> end
  => nil
  irb(main):011:0> m = method(:foo)
  => #<Method: Object#foo>
  irb(main):012:0> puts m.as_code
  def foo(a, b, *rest, &block)
    begin
      (raise("Need more input!")) if (not a and not b)
      return a + b
    ensure
      puts("In ensure block")
    end
  end
  => nil

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruby-decompiler-0.0.3 README.rdoc
ruby-decompiler-0.0.2 README.rdoc
ruby-decompiler-0.0.1 README.rdoc