ruby2ruby 1.2.4 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
 - data/.autotest +3 -0
 - data/History.txt +14 -0
 - data/Rakefile +35 -0
 - data/lib/ruby2ruby.rb +76 -30
 - data/test/test_ruby2ruby.rb +87 -9
 - metadata +109 -23
 - metadata.gz.sig +0 -0
 
    
        data.tar.gz.sig
    ADDED
    
    | 
         Binary file 
     | 
    
        data/.autotest
    CHANGED
    
    | 
         @@ -3,6 +3,9 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require 'autotest/restart'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Autotest.add_hook :initialize do |at|
         
     | 
| 
      
 6 
     | 
    
         
            +
              at.order = :random
         
     | 
| 
      
 7 
     | 
    
         
            +
              at.testlib = "minitest/autorun"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       6 
9 
     | 
    
         
             
              at.extra_files << "../../ParseTree/dev/test/pt_testcase.rb"
         
     | 
| 
       7 
10 
     | 
    
         
             
              at.extra_files << "../../ParseTree/dev/lib/unified_ruby.rb"
         
     | 
| 
       8 
11 
     | 
    
         
             
              at.libs << ":../../sexp_processor/dev/lib:../../ParseTree/dev/lib:../../ParseTree/dev/test"
         
     | 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            === 1.2.5 / 2010-09-01
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * 4 minor enhancements:
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              * Added braces to hash args surrounded if in a binary method call.
         
     | 
| 
      
 6 
     | 
    
         
            +
              * Added rewrite_resbody to double check structure and freak if necessary.
         
     | 
| 
      
 7 
     | 
    
         
            +
              * Added stress task
         
     | 
| 
      
 8 
     | 
    
         
            +
              * rewrite_rescue now detects rescue with multiple arguments.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            * 2 bug fixes:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              * Fixed dstr/dregex/d* roundtripping problem
         
     | 
| 
      
 13 
     | 
    
         
            +
              * Fixed up call arg processing to be more correct and to work with the new sexp form
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       1 
15 
     | 
    
         
             
            === 1.2.4 / 2009-08-14
         
     | 
| 
       2 
16 
     | 
    
         | 
| 
       3 
17 
     | 
    
         
             
            * 2 bug fixes:
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -20,4 +20,39 @@ Hoe.spec 'ruby2ruby' do 
     | 
|
| 
       20 
20 
     | 
    
         
             
              extra_dev_deps << ["ParseTree",      "~> 3.0"]
         
     | 
| 
       21 
21 
     | 
    
         
             
            end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
            task :stress do
         
     | 
| 
      
 24 
     | 
    
         
            +
              $: << "lib"
         
     | 
| 
      
 25 
     | 
    
         
            +
              $: << "../../ruby_parser/dev/lib"
         
     | 
| 
      
 26 
     | 
    
         
            +
              require "ruby_parser"
         
     | 
| 
      
 27 
     | 
    
         
            +
              require "ruby2ruby"
         
     | 
| 
      
 28 
     | 
    
         
            +
              require "pp"
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              files = Dir["../../*/dev/**/*.rb"]
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              warn "Stress testing against #{files.size} files"
         
     | 
| 
      
 33 
     | 
    
         
            +
              parser    = RubyParser.new
         
     | 
| 
      
 34 
     | 
    
         
            +
              ruby2ruby = Ruby2Ruby.new
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              bad = {}
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              files.each do |file|
         
     | 
| 
      
 39 
     | 
    
         
            +
                warn file
         
     | 
| 
      
 40 
     | 
    
         
            +
                ruby = File.read(file)
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                begin
         
     | 
| 
      
 43 
     | 
    
         
            +
                  sexp = parser.process(ruby, file)
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                  # $stderr.puts sexp.pretty_inspect
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  ruby2ruby.process(sexp)
         
     | 
| 
      
 48 
     | 
    
         
            +
                rescue Interrupt => e
         
     | 
| 
      
 49 
     | 
    
         
            +
                  raise e
         
     | 
| 
      
 50 
     | 
    
         
            +
                rescue Exception => e
         
     | 
| 
      
 51 
     | 
    
         
            +
                  bad[file] = e
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              pp bad
         
     | 
| 
      
 56 
     | 
    
         
            +
            end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       23 
58 
     | 
    
         
             
            # vim: syntax=ruby
         
     | 
    
        data/lib/ruby2ruby.rb
    CHANGED
    
    | 
         @@ -4,9 +4,11 @@ require 'rubygems' 
     | 
|
| 
       4 
4 
     | 
    
         
             
            require 'sexp_processor'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            class Ruby2Ruby < SexpProcessor
         
     | 
| 
       7 
     | 
    
         
            -
              VERSION = '1.2. 
     | 
| 
      
 7 
     | 
    
         
            +
              VERSION = '1.2.5'
         
     | 
| 
       8 
8 
     | 
    
         
             
              LINE_LENGTH = 78
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
              BINARY = [:<=>, :==, :<, :>, :<=, :>=, :-, :+, :*, :/, :%, :<<, :>>, :**]
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       10 
12 
     | 
    
         
             
              ##
         
     | 
| 
       11 
13 
     | 
    
         
             
              # Nodes that represent assignment and probably need () around them.
         
     | 
| 
       12 
14 
     | 
    
         | 
| 
         @@ -31,6 +33,8 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       31 
33 
     | 
    
         
             
                self.strict = true
         
     | 
| 
       32 
34 
     | 
    
         
             
                self.expected = String
         
     | 
| 
       33 
35 
     | 
    
         | 
| 
      
 36 
     | 
    
         
            +
                @calls = []
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       34 
38 
     | 
    
         
             
                # self.debug[:defn] = /zsuper/
         
     | 
| 
       35 
39 
     | 
    
         
             
              end
         
     | 
| 
       36 
40 
     | 
    
         | 
| 
         @@ -170,30 +174,43 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       170 
174 
     | 
    
         
             
                  Ruby2Ruby::ASSIGN_NODES.include? receiver_node_type
         
     | 
| 
       171 
175 
     | 
    
         | 
| 
       172 
176 
     | 
    
         
             
                name = exp.shift
         
     | 
| 
       173 
     | 
    
         
            -
                args =  
     | 
| 
      
 177 
     | 
    
         
            +
                args = []
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                # this allows us to do both old and new sexp forms:
         
     | 
| 
      
 180 
     | 
    
         
            +
                exp.push(*exp.pop[1..-1]) if exp.size == 1 && exp.first.first == :arglist
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
                @calls.push name
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
                in_context :arglist do
         
     | 
| 
      
 185 
     | 
    
         
            +
                  until exp.empty? do
         
     | 
| 
      
 186 
     | 
    
         
            +
                    arg = process exp.shift
         
     | 
| 
      
 187 
     | 
    
         
            +
                    args << arg unless arg.empty?
         
     | 
| 
      
 188 
     | 
    
         
            +
                  end
         
     | 
| 
      
 189 
     | 
    
         
            +
                end
         
     | 
| 
       174 
190 
     | 
    
         | 
| 
       175 
191 
     | 
    
         
             
                case name
         
     | 
| 
       176 
     | 
    
         
            -
                when  
     | 
| 
       177 
     | 
    
         
            -
                  "(#{receiver} #{name} #{ 
     | 
| 
      
 192 
     | 
    
         
            +
                when *BINARY then
         
     | 
| 
      
 193 
     | 
    
         
            +
                  "(#{receiver} #{name} #{args.join(', ')})"
         
     | 
| 
       178 
194 
     | 
    
         
             
                when :[] then
         
     | 
| 
       179 
     | 
    
         
            -
                  receiver  
     | 
| 
       180 
     | 
    
         
            -
                  "#{receiver}[#{ 
     | 
| 
      
 195 
     | 
    
         
            +
                  receiver ||= "self"
         
     | 
| 
      
 196 
     | 
    
         
            +
                  "#{receiver}[#{args.join(', ')}]"
         
     | 
| 
       181 
197 
     | 
    
         
             
                when :[]= then
         
     | 
| 
       182 
     | 
    
         
            -
                  receiver  
     | 
| 
       183 
     | 
    
         
            -
                   
     | 
| 
       184 
     | 
    
         
            -
                  "#{receiver}[#{ 
     | 
| 
      
 198 
     | 
    
         
            +
                  receiver ||= "self"
         
     | 
| 
      
 199 
     | 
    
         
            +
                  rhs = args.pop
         
     | 
| 
      
 200 
     | 
    
         
            +
                  "#{receiver}[#{args.join(', ')}] = #{rhs}"
         
     | 
| 
       185 
201 
     | 
    
         
             
                when :"-@" then
         
     | 
| 
       186 
202 
     | 
    
         
             
                  "-#{receiver}"
         
     | 
| 
       187 
203 
     | 
    
         
             
                when :"+@" then
         
     | 
| 
       188 
204 
     | 
    
         
             
                  "+#{receiver}"
         
     | 
| 
       189 
205 
     | 
    
         
             
                else
         
     | 
| 
       190 
     | 
    
         
            -
                  args     =  
     | 
| 
       191 
     | 
    
         
            -
                  args     =  
     | 
| 
       192 
     | 
    
         
            -
                   
     | 
| 
       193 
     | 
    
         
            -
                  receiver = "#{receiver}." if receiver
         
     | 
| 
      
 206 
     | 
    
         
            +
                  args     = nil                    if args.empty?
         
     | 
| 
      
 207 
     | 
    
         
            +
                  args     = "(#{args.join(', ')})" if args
         
     | 
| 
      
 208 
     | 
    
         
            +
                  receiver = "#{receiver}."         if receiver
         
     | 
| 
       194 
209 
     | 
    
         | 
| 
       195 
210 
     | 
    
         
             
                  "#{receiver}#{name}#{args}"
         
     | 
| 
       196 
211 
     | 
    
         
             
                end
         
     | 
| 
      
 212 
     | 
    
         
            +
              ensure
         
     | 
| 
      
 213 
     | 
    
         
            +
                @calls.pop
         
     | 
| 
       197 
214 
     | 
    
         
             
              end
         
     | 
| 
       198 
215 
     | 
    
         | 
| 
       199 
216 
     | 
    
         
             
              def process_case(exp)
         
     | 
| 
         @@ -284,7 +301,11 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       284 
301 
     | 
    
         
             
                  name = exp.shift
         
     | 
| 
       285 
302 
     | 
    
         
             
                  args = process(exp.shift)
         
     | 
| 
       286 
303 
     | 
    
         
             
                  args = "" if args == "()"
         
     | 
| 
       287 
     | 
    
         
            -
                  body =  
     | 
| 
      
 304 
     | 
    
         
            +
                  body = []
         
     | 
| 
      
 305 
     | 
    
         
            +
                  until exp.empty? do
         
     | 
| 
      
 306 
     | 
    
         
            +
                    body << indent(process(exp.shift))
         
     | 
| 
      
 307 
     | 
    
         
            +
                  end
         
     | 
| 
      
 308 
     | 
    
         
            +
                  body = body.join("\n")
         
     | 
| 
       288 
309 
     | 
    
         
             
                  return "def #{name}#{args}\n#{body}\nend".gsub(/\n\s*\n+/, "\n")
         
     | 
| 
       289 
310 
     | 
    
         
             
                else
         
     | 
| 
       290 
311 
     | 
    
         
             
                  raise "Unknown defn type: #{type1} for #{exp.inspect}"
         
     | 
| 
         @@ -312,7 +333,7 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       312 
333 
     | 
    
         
             
              end
         
     | 
| 
       313 
334 
     | 
    
         | 
| 
       314 
335 
     | 
    
         
             
              def process_dregx(exp)
         
     | 
| 
       315 
     | 
    
         
            -
                "/" << util_dthing( 
     | 
| 
      
 336 
     | 
    
         
            +
                "/" << util_dthing(:dregx, exp) << "/"
         
     | 
| 
       316 
337 
     | 
    
         
             
              end
         
     | 
| 
       317 
338 
     | 
    
         | 
| 
       318 
339 
     | 
    
         
             
              def process_dregx_once(exp)
         
     | 
| 
         @@ -320,15 +341,15 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       320 
341 
     | 
    
         
             
              end
         
     | 
| 
       321 
342 
     | 
    
         | 
| 
       322 
343 
     | 
    
         
             
              def process_dstr(exp)
         
     | 
| 
       323 
     | 
    
         
            -
                "\"#{util_dthing(exp)}\""
         
     | 
| 
      
 344 
     | 
    
         
            +
                "\"#{util_dthing(:dstr, exp)}\""
         
     | 
| 
       324 
345 
     | 
    
         
             
              end
         
     | 
| 
       325 
346 
     | 
    
         | 
| 
       326 
347 
     | 
    
         
             
              def process_dsym(exp)
         
     | 
| 
       327 
     | 
    
         
            -
                " 
     | 
| 
      
 348 
     | 
    
         
            +
                ":\"#{util_dthing(:dsym, exp)}\""
         
     | 
| 
       328 
349 
     | 
    
         
             
              end
         
     | 
| 
       329 
350 
     | 
    
         | 
| 
       330 
351 
     | 
    
         
             
              def process_dxstr(exp)
         
     | 
| 
       331 
     | 
    
         
            -
                "`#{ 
     | 
| 
      
 352 
     | 
    
         
            +
                "`#{util_dthing(:dxstr, exp)}`"
         
     | 
| 
       332 
353 
     | 
    
         
             
              end
         
     | 
| 
       333 
354 
     | 
    
         | 
| 
       334 
355 
     | 
    
         
             
              def process_ensure(exp)
         
     | 
| 
         @@ -393,7 +414,12 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       393 
414 
     | 
    
         
             
                case self.context[1]
         
     | 
| 
       394 
415 
     | 
    
         
             
                when :arglist, :argscat then
         
     | 
| 
       395 
416 
     | 
    
         
             
                  unless result.empty? then
         
     | 
| 
       396 
     | 
    
         
            -
                     
     | 
| 
      
 417 
     | 
    
         
            +
                    # HACK - this will break w/ 2 hashes as args
         
     | 
| 
      
 418 
     | 
    
         
            +
                    if BINARY.include? @calls.last then
         
     | 
| 
      
 419 
     | 
    
         
            +
                      return "{ #{result.join(', ')} }"
         
     | 
| 
      
 420 
     | 
    
         
            +
                    else
         
     | 
| 
      
 421 
     | 
    
         
            +
                      return "#{result.join(', ')}"
         
     | 
| 
      
 422 
     | 
    
         
            +
                    end
         
     | 
| 
       397 
423 
     | 
    
         
             
                  else
         
     | 
| 
       398 
424 
     | 
    
         
             
                    return "{}"
         
     | 
| 
       399 
425 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -830,11 +856,18 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       830 
856 
     | 
    
         
             
                exp
         
     | 
| 
       831 
857 
     | 
    
         
             
              end
         
     | 
| 
       832 
858 
     | 
    
         | 
| 
      
 859 
     | 
    
         
            +
              def rewrite_resbody exp
         
     | 
| 
      
 860 
     | 
    
         
            +
                raise "no exception list in #{exp.inspect}" unless exp.size > 2 && exp[1]
         
     | 
| 
      
 861 
     | 
    
         
            +
                raise exp[1].inspect if exp[1][0] != :array
         
     | 
| 
      
 862 
     | 
    
         
            +
                # for now, do nothing, just check and freak if we see an errant structure
         
     | 
| 
      
 863 
     | 
    
         
            +
                exp
         
     | 
| 
      
 864 
     | 
    
         
            +
              end
         
     | 
| 
      
 865 
     | 
    
         
            +
             
     | 
| 
       833 
866 
     | 
    
         
             
              def rewrite_rescue exp
         
     | 
| 
       834 
867 
     | 
    
         
             
                complex = false
         
     | 
| 
       835 
868 
     | 
    
         
             
                complex ||= exp.size > 3
         
     | 
| 
       836 
869 
     | 
    
         
             
                complex ||= exp.block
         
     | 
| 
       837 
     | 
    
         
            -
                complex ||= exp.find_nodes(:resbody).any? { |n| n 
     | 
| 
      
 870 
     | 
    
         
            +
                complex ||= exp.find_nodes(:resbody).any? { |n| n[1] != s(:array) }
         
     | 
| 
       838 
871 
     | 
    
         
             
                complex ||= exp.find_nodes(:resbody).any? { |n| n.last.nil? }
         
     | 
| 
       839 
872 
     | 
    
         | 
| 
       840 
873 
     | 
    
         
             
                handled = context.first == :ensure
         
     | 
| 
         @@ -858,27 +891,40 @@ class Ruby2Ruby < SexpProcessor 
     | 
|
| 
       858 
891 
     | 
    
         
             
              ############################################################
         
     | 
| 
       859 
892 
     | 
    
         
             
              # Utility Methods:
         
     | 
| 
       860 
893 
     | 
    
         | 
| 
       861 
     | 
    
         
            -
              def  
     | 
| 
      
 894 
     | 
    
         
            +
              def dthing_escape type, lit
         
     | 
| 
      
 895 
     | 
    
         
            +
                lit = lit.gsub(/\n/, '\n')
         
     | 
| 
      
 896 
     | 
    
         
            +
                case type
         
     | 
| 
      
 897 
     | 
    
         
            +
                when :dregx then
         
     | 
| 
      
 898 
     | 
    
         
            +
                  lit.gsub(/(\A|[^\\])\//, '\1\/')
         
     | 
| 
      
 899 
     | 
    
         
            +
                when :dstr, :dsym then
         
     | 
| 
      
 900 
     | 
    
         
            +
                  lit.gsub(/"/, '\"')
         
     | 
| 
      
 901 
     | 
    
         
            +
                when :dxstr then
         
     | 
| 
      
 902 
     | 
    
         
            +
                  lit.gsub(/`/, '\`')
         
     | 
| 
      
 903 
     | 
    
         
            +
                else
         
     | 
| 
      
 904 
     | 
    
         
            +
                  raise "unsupported type #{type.inspect}"
         
     | 
| 
      
 905 
     | 
    
         
            +
                end
         
     | 
| 
      
 906 
     | 
    
         
            +
              end
         
     | 
| 
      
 907 
     | 
    
         
            +
             
     | 
| 
      
 908 
     | 
    
         
            +
              def util_dthing(type, exp)
         
     | 
| 
       862 
909 
     | 
    
         
             
                s = []
         
     | 
| 
       863 
     | 
    
         
            -
                suck = true
         
     | 
| 
       864 
     | 
    
         
            -
                x = exp.shift.gsub(/"/, '\"').gsub(/\n/, '\n')
         
     | 
| 
       865 
     | 
    
         
            -
                x.gsub!(/\//, '\/') if regx
         
     | 
| 
       866 
910 
     | 
    
         | 
| 
       867 
     | 
    
         
            -
                 
     | 
| 
      
 911 
     | 
    
         
            +
                # first item in sexp is a string literal
         
     | 
| 
      
 912 
     | 
    
         
            +
                s << dthing_escape(type, exp.shift)
         
     | 
| 
      
 913 
     | 
    
         
            +
             
     | 
| 
       868 
914 
     | 
    
         
             
                until exp.empty?
         
     | 
| 
       869 
915 
     | 
    
         
             
                  pt = exp.shift
         
     | 
| 
       870 
916 
     | 
    
         
             
                  case pt
         
     | 
| 
       871 
917 
     | 
    
         
             
                  when Sexp then
         
     | 
| 
       872 
918 
     | 
    
         
             
                    case pt.first
         
     | 
| 
       873 
919 
     | 
    
         
             
                    when :str then
         
     | 
| 
       874 
     | 
    
         
            -
                       
     | 
| 
       875 
     | 
    
         
            -
             
     | 
| 
       876 
     | 
    
         
            -
                      s << x
         
     | 
| 
       877 
     | 
    
         
            -
                    else
         
     | 
| 
      
 920 
     | 
    
         
            +
                      s << dthing_escape(type, pt.last)
         
     | 
| 
      
 921 
     | 
    
         
            +
                    when :evstr then
         
     | 
| 
       878 
922 
     | 
    
         
             
                      s << '#{' << process(pt) << '}' # do not use interpolation here
         
     | 
| 
      
 923 
     | 
    
         
            +
                    else
         
     | 
| 
      
 924 
     | 
    
         
            +
                      raise "unknown type: #{pt.inspect}"
         
     | 
| 
       879 
925 
     | 
    
         
             
                    end
         
     | 
| 
       880 
926 
     | 
    
         
             
                  else
         
     | 
| 
       881 
     | 
    
         
            -
                    # HACK: raise "huh?: #{pt.inspect}"
         
     | 
| 
      
 927 
     | 
    
         
            +
                    # HACK: raise "huh?: #{pt.inspect}" -- hitting # constants in regexps
         
     | 
| 
       882 
928 
     | 
    
         
             
                    # do nothing for now
         
     | 
| 
       883 
929 
     | 
    
         
             
                  end
         
     | 
| 
       884 
930 
     | 
    
         
             
                end
         
     | 
    
        data/test/test_ruby2ruby.rb
    CHANGED
    
    | 
         @@ -40,22 +40,54 @@ class TestRuby2Ruby < R2RTestCase 
     | 
|
| 
       40 
40 
     | 
    
         
             
                @processor = Ruby2Ruby.new
         
     | 
| 
       41 
41 
     | 
    
         
             
              end
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
              def test_util_dthing_dregx
         
     | 
| 
      
 44 
     | 
    
         
            +
                inn = util_thingy(:dregx)
         
     | 
| 
      
 45 
     | 
    
         
            +
                inn.shift
         
     | 
| 
      
 46 
     | 
    
         
            +
                out = '/a"b#{(1 + 1)}c"d\/e/'
         
     | 
| 
      
 47 
     | 
    
         
            +
                exp = /a"b2c"d\/e/
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                assert_equal exp, eval(out)
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                assert_equal out[1..-2], @processor.util_dthing(:dregx, inn)
         
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              def test_util_dthing_dstr
         
     | 
| 
      
 55 
     | 
    
         
            +
                inn = util_thingy(:dstr)
         
     | 
| 
      
 56 
     | 
    
         
            +
                inn.shift
         
     | 
| 
      
 57 
     | 
    
         
            +
                out = '"a\"b#{(1 + 1)}c\"d/e"'
         
     | 
| 
      
 58 
     | 
    
         
            +
                exp = 'a"b2c"d/e'
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                assert_equal exp, eval(out)
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                assert_equal out[1..-2], @processor.util_dthing(:dstr, inn)
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              def test_util_dthing_dregx_bug?
         
     | 
| 
      
 66 
     | 
    
         
            +
                inn = s(:dregx, '[\/\"]', s(:evstr, s(:lit, 42)))
         
     | 
| 
      
 67 
     | 
    
         
            +
                inn.shift
         
     | 
| 
      
 68 
     | 
    
         
            +
                out = '/[\/\"]#{42}/'
         
     | 
| 
      
 69 
     | 
    
         
            +
                exp =  /[\/\"]42/
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                assert_equal out[1..-2], @processor.util_dthing(:dregx, inn)
         
     | 
| 
      
 72 
     | 
    
         
            +
                assert_equal exp, eval(out)
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       43 
75 
     | 
    
         
             
              def test_dregx_slash
         
     | 
| 
       44 
76 
     | 
    
         
             
                inn = util_thingy(:dregx)
         
     | 
| 
       45 
     | 
    
         
            -
                out =  
     | 
| 
       46 
     | 
    
         
            -
                util_compare inn, out, / 
     | 
| 
      
 77 
     | 
    
         
            +
                out = '/a"b#{(1 + 1)}c"d\/e/'
         
     | 
| 
      
 78 
     | 
    
         
            +
                util_compare inn, out, /a"b2c"d\/e/
         
     | 
| 
       47 
79 
     | 
    
         
             
              end
         
     | 
| 
       48 
80 
     | 
    
         | 
| 
       49 
81 
     | 
    
         
             
              def test_dstr_quote
         
     | 
| 
       50 
82 
     | 
    
         
             
                inn = util_thingy(:dstr)
         
     | 
| 
       51 
     | 
    
         
            -
                out = "\" 
     | 
| 
       52 
     | 
    
         
            -
                util_compare inn, out, " 
     | 
| 
      
 83 
     | 
    
         
            +
                out = '"a\"b#{(1 + 1)}c\"d/e"'
         
     | 
| 
      
 84 
     | 
    
         
            +
                util_compare inn, out, 'a"b2c"d/e'
         
     | 
| 
       53 
85 
     | 
    
         
             
              end
         
     | 
| 
       54 
86 
     | 
    
         | 
| 
       55 
87 
     | 
    
         
             
              def test_dsym_quote
         
     | 
| 
       56 
88 
     | 
    
         
             
                inn = util_thingy(:dsym)
         
     | 
| 
       57 
     | 
    
         
            -
                out = " 
     | 
| 
       58 
     | 
    
         
            -
                util_compare inn, out, :" 
     | 
| 
      
 89 
     | 
    
         
            +
                out = ':"a\"b#{(1 + 1)}c\"d/e"'
         
     | 
| 
      
 90 
     | 
    
         
            +
                util_compare inn, out, :'a"b2c"d/e'
         
     | 
| 
       59 
91 
     | 
    
         
             
              end
         
     | 
| 
       60 
92 
     | 
    
         | 
| 
       61 
93 
     | 
    
         
             
              def test_lit_regexp_slash
         
     | 
| 
         @@ -119,6 +151,52 @@ class TestRuby2Ruby < R2RTestCase 
     | 
|
| 
       119 
151 
     | 
    
         
             
                util_compare inn, out
         
     | 
| 
       120 
152 
     | 
    
         
             
              end
         
     | 
| 
       121 
153 
     | 
    
         | 
| 
      
 154 
     | 
    
         
            +
              def test_resbody_short_with_begin_end
         
     | 
| 
      
 155 
     | 
    
         
            +
                # "begin; blah; rescue; []; end"
         
     | 
| 
      
 156 
     | 
    
         
            +
                inn = s(:rescue,
         
     | 
| 
      
 157 
     | 
    
         
            +
                        s(:call, nil, :blah, s(:arglist)),
         
     | 
| 
      
 158 
     | 
    
         
            +
                        s(:resbody, s(:array), s(:array)))
         
     | 
| 
      
 159 
     | 
    
         
            +
                out = "blah rescue []"
         
     | 
| 
      
 160 
     | 
    
         
            +
                util_compare inn, out
         
     | 
| 
      
 161 
     | 
    
         
            +
              end
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
              def test_resbody_short_with_rescue_args
         
     | 
| 
      
 164 
     | 
    
         
            +
                inn = s(:rescue,
         
     | 
| 
      
 165 
     | 
    
         
            +
                        s(:call, nil, :blah, s(:arglist)),
         
     | 
| 
      
 166 
     | 
    
         
            +
                        s(:resbody, s(:array, s(:const, :A), s(:const, :B)), s(:array)))
         
     | 
| 
      
 167 
     | 
    
         
            +
                out = "begin\n  blah\nrescue A, B\n  []\nend"
         
     | 
| 
      
 168 
     | 
    
         
            +
                util_compare inn, out
         
     | 
| 
      
 169 
     | 
    
         
            +
              end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
              def test_call_binary_call_with_hash_arg
         
     | 
| 
      
 172 
     | 
    
         
            +
                # if 42
         
     | 
| 
      
 173 
     | 
    
         
            +
                #   args << {:key => 24}
         
     | 
| 
      
 174 
     | 
    
         
            +
                # end
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                inn = s(:if, s(:lit, 42),
         
     | 
| 
      
 177 
     | 
    
         
            +
                        s(:call, s(:call, nil, :args, s(:arglist)),
         
     | 
| 
      
 178 
     | 
    
         
            +
                          :<<,
         
     | 
| 
      
 179 
     | 
    
         
            +
                          s(:arglist, s(:hash, s(:lit, :key), s(:lit, 24)))),
         
     | 
| 
      
 180 
     | 
    
         
            +
                        nil)
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
                out = "(args << { :key => 24 }) if 42"
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
                util_compare inn, out
         
     | 
| 
      
 185 
     | 
    
         
            +
              end
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
              def test_interpolation_and_escapes
         
     | 
| 
      
 188 
     | 
    
         
            +
                # log_entry = "  \e[#{message_color}m#{message}\e[0m   "
         
     | 
| 
      
 189 
     | 
    
         
            +
                inn = s(:lasgn, :log_entry,
         
     | 
| 
      
 190 
     | 
    
         
            +
                        s(:dstr, "  \e[",
         
     | 
| 
      
 191 
     | 
    
         
            +
                          s(:evstr, s(:call, nil, :message_color, s(:arglist))),
         
     | 
| 
      
 192 
     | 
    
         
            +
                          s(:str, "m"),
         
     | 
| 
      
 193 
     | 
    
         
            +
                          s(:evstr, s(:call, nil, :message, s(:arglist))),
         
     | 
| 
      
 194 
     | 
    
         
            +
                          s(:str, "\e[0m   ")))
         
     | 
| 
      
 195 
     | 
    
         
            +
                out = "log_entry = \"  \e[#\{message_color}m#\{message}\e[0m   \""
         
     | 
| 
      
 196 
     | 
    
         
            +
             
     | 
| 
      
 197 
     | 
    
         
            +
                util_compare inn, out
         
     | 
| 
      
 198 
     | 
    
         
            +
              end
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
       122 
200 
     | 
    
         
             
              def util_compare sexp, expected_ruby, expected_eval = nil
         
     | 
| 
       123 
201 
     | 
    
         
             
                assert_equal expected_ruby, @processor.process(sexp)
         
     | 
| 
       124 
202 
     | 
    
         
             
                assert_equal expected_eval, eval(expected_ruby) if expected_eval
         
     | 
| 
         @@ -126,9 +204,9 @@ class TestRuby2Ruby < R2RTestCase 
     | 
|
| 
       126 
204 
     | 
    
         | 
| 
       127 
205 
     | 
    
         
             
              def util_thingy(type)
         
     | 
| 
       128 
206 
     | 
    
         
             
                s(type,
         
     | 
| 
       129 
     | 
    
         
            -
                  ' 
     | 
| 
       130 
     | 
    
         
            -
                  s(:call, s(:lit, 1), :+, s(:arglist, s(:lit, 1))),
         
     | 
| 
       131 
     | 
    
         
            -
                  s(:str, ' 
     | 
| 
      
 207 
     | 
    
         
            +
                  'a"b',
         
     | 
| 
      
 208 
     | 
    
         
            +
                  s(:evstr, s(:call, s(:lit, 1), :+, s(:arglist, s(:lit, 1)))),
         
     | 
| 
      
 209 
     | 
    
         
            +
                  s(:str, 'c"d/e'))
         
     | 
| 
       132 
210 
     | 
    
         
             
              end
         
     | 
| 
       133 
211 
     | 
    
         
             
            end
         
     | 
| 
       134 
212 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,57 +1,137 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: ruby2ruby
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 21
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 6 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 9 
     | 
    
         
            +
              - 5
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 1.2.5
         
     | 
| 
       5 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
13 
     | 
    
         
             
            - Ryan Davis
         
     | 
| 
       8 
14 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
     | 
    
         
            -
            cert_chain:  
     | 
| 
      
 16 
     | 
    
         
            +
            cert_chain: 
         
     | 
| 
      
 17 
     | 
    
         
            +
            - |
         
     | 
| 
      
 18 
     | 
    
         
            +
              -----BEGIN CERTIFICATE-----
         
     | 
| 
      
 19 
     | 
    
         
            +
              MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
         
     | 
| 
      
 20 
     | 
    
         
            +
              ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
         
     | 
| 
      
 21 
     | 
    
         
            +
              GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
         
     | 
| 
      
 22 
     | 
    
         
            +
              AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
         
     | 
| 
      
 23 
     | 
    
         
            +
              JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
         
     | 
| 
      
 24 
     | 
    
         
            +
              b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
         
     | 
| 
      
 25 
     | 
    
         
            +
              taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
         
     | 
| 
      
 26 
     | 
    
         
            +
              oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
         
     | 
| 
      
 27 
     | 
    
         
            +
              GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
         
     | 
| 
      
 28 
     | 
    
         
            +
              qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
         
     | 
| 
      
 29 
     | 
    
         
            +
              gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
         
     | 
| 
      
 30 
     | 
    
         
            +
              HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
         
     | 
| 
      
 31 
     | 
    
         
            +
              AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
         
     | 
| 
      
 32 
     | 
    
         
            +
              vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
         
     | 
| 
      
 33 
     | 
    
         
            +
              w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
         
     | 
| 
      
 34 
     | 
    
         
            +
              l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
         
     | 
| 
      
 35 
     | 
    
         
            +
              n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
         
     | 
| 
      
 36 
     | 
    
         
            +
              FBHgymkyj/AOSqKRIpXPhjC6
         
     | 
| 
      
 37 
     | 
    
         
            +
              -----END CERTIFICATE-----
         
     | 
| 
       11 
38 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 39 
     | 
    
         
            +
            date: 2010-09-01 00:00:00 -07:00
         
     | 
| 
       13 
40 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
41 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       15 
42 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       16 
43 
     | 
    
         
             
              name: sexp_processor
         
     | 
| 
       17 
     | 
    
         
            -
               
     | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 44 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 45 
     | 
    
         
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 46 
     | 
    
         
            +
                none: false
         
     | 
| 
       20 
47 
     | 
    
         
             
                requirements: 
         
     | 
| 
       21 
48 
     | 
    
         
             
                - - ~>
         
     | 
| 
       22 
49 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 50 
     | 
    
         
            +
                    hash: 7
         
     | 
| 
      
 51 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 52 
     | 
    
         
            +
                    - 3
         
     | 
| 
      
 53 
     | 
    
         
            +
                    - 0
         
     | 
| 
       23 
54 
     | 
    
         
             
                    version: "3.0"
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: *id001
         
     | 
| 
       25 
57 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       26 
58 
     | 
    
         
             
              name: ruby_parser
         
     | 
| 
       27 
     | 
    
         
            -
               
     | 
| 
       28 
     | 
    
         
            -
               
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 59 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 61 
     | 
    
         
            +
                none: false
         
     | 
| 
       30 
62 
     | 
    
         
             
                requirements: 
         
     | 
| 
       31 
63 
     | 
    
         
             
                - - ~>
         
     | 
| 
       32 
64 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 65 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 66 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 67 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 68 
     | 
    
         
            +
                    - 0
         
     | 
| 
       33 
69 
     | 
    
         
             
                    version: "2.0"
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 71 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
       35 
72 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       36 
     | 
    
         
            -
              name:  
     | 
| 
      
 73 
     | 
    
         
            +
              name: rubyforge
         
     | 
| 
      
 74 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 75 
     | 
    
         
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 76 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 77 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 78 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 79 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 80 
     | 
    
         
            +
                    hash: 7
         
     | 
| 
      
 81 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 82 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 83 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 84 
     | 
    
         
            +
                    - 4
         
     | 
| 
      
 85 
     | 
    
         
            +
                    version: 2.0.4
         
     | 
| 
      
 86 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 87 
     | 
    
         
            +
              version_requirements: *id003
         
     | 
| 
      
 88 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 89 
     | 
    
         
            +
              name: minitest
         
     | 
| 
      
 90 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 91 
     | 
    
         
            +
              requirement: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 92 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 93 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 94 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 95 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 96 
     | 
    
         
            +
                    hash: 9
         
     | 
| 
      
 97 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 98 
     | 
    
         
            +
                    - 1
         
     | 
| 
      
 99 
     | 
    
         
            +
                    - 7
         
     | 
| 
      
 100 
     | 
    
         
            +
                    - 1
         
     | 
| 
      
 101 
     | 
    
         
            +
                    version: 1.7.1
         
     | 
| 
       37 
102 
     | 
    
         
             
              type: :development
         
     | 
| 
       38 
     | 
    
         
            -
               
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
      
 103 
     | 
    
         
            +
              version_requirements: *id004
         
     | 
| 
      
 104 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 105 
     | 
    
         
            +
              name: ParseTree
         
     | 
| 
      
 106 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 107 
     | 
    
         
            +
              requirement: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 108 
     | 
    
         
            +
                none: false
         
     | 
| 
       40 
109 
     | 
    
         
             
                requirements: 
         
     | 
| 
       41 
110 
     | 
    
         
             
                - - ~>
         
     | 
| 
       42 
111 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 112 
     | 
    
         
            +
                    hash: 7
         
     | 
| 
      
 113 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 114 
     | 
    
         
            +
                    - 3
         
     | 
| 
      
 115 
     | 
    
         
            +
                    - 0
         
     | 
| 
       43 
116 
     | 
    
         
             
                    version: "3.0"
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 117 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 118 
     | 
    
         
            +
              version_requirements: *id005
         
     | 
| 
       45 
119 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       46 
120 
     | 
    
         
             
              name: hoe
         
     | 
| 
       47 
     | 
    
         
            -
               
     | 
| 
       48 
     | 
    
         
            -
               
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 121 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 122 
     | 
    
         
            +
              requirement: &id006 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 123 
     | 
    
         
            +
                none: false
         
     | 
| 
       50 
124 
     | 
    
         
             
                requirements: 
         
     | 
| 
       51 
125 
     | 
    
         
             
                - - ">="
         
     | 
| 
       52 
126 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       53 
     | 
    
         
            -
                     
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
      
 127 
     | 
    
         
            +
                    hash: 19
         
     | 
| 
      
 128 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 129 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 130 
     | 
    
         
            +
                    - 6
         
     | 
| 
      
 131 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 132 
     | 
    
         
            +
                    version: 2.6.2
         
     | 
| 
      
 133 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 134 
     | 
    
         
            +
              version_requirements: *id006
         
     | 
| 
       55 
135 
     | 
    
         
             
            description: |-
         
     | 
| 
       56 
136 
     | 
    
         
             
              ruby2ruby provides a means of generating pure ruby code easily from
         
     | 
| 
       57 
137 
     | 
    
         
             
              RubyParser compatible Sexps. This makes making dynamic language
         
     | 
| 
         @@ -86,21 +166,27 @@ rdoc_options: 
     | 
|
| 
       86 
166 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       87 
167 
     | 
    
         
             
            - lib
         
     | 
| 
       88 
168 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 169 
     | 
    
         
            +
              none: false
         
     | 
| 
       89 
170 
     | 
    
         
             
              requirements: 
         
     | 
| 
       90 
171 
     | 
    
         
             
              - - ">="
         
     | 
| 
       91 
172 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 173 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
      
 174 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 175 
     | 
    
         
            +
                  - 0
         
     | 
| 
       92 
176 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       93 
     | 
    
         
            -
              version: 
         
     | 
| 
       94 
177 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 178 
     | 
    
         
            +
              none: false
         
     | 
| 
       95 
179 
     | 
    
         
             
              requirements: 
         
     | 
| 
       96 
180 
     | 
    
         
             
              - - ">="
         
     | 
| 
       97 
181 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 182 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
      
 183 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 184 
     | 
    
         
            +
                  - 0
         
     | 
| 
       98 
185 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       99 
     | 
    
         
            -
              version: 
         
     | 
| 
       100 
186 
     | 
    
         
             
            requirements: []
         
     | 
| 
       101 
187 
     | 
    
         | 
| 
       102 
188 
     | 
    
         
             
            rubyforge_project: seattlerb
         
     | 
| 
       103 
     | 
    
         
            -
            rubygems_version: 1.3. 
     | 
| 
      
 189 
     | 
    
         
            +
            rubygems_version: 1.3.7
         
     | 
| 
       104 
190 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       105 
191 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       106 
192 
     | 
    
         
             
            summary: ruby2ruby provides a means of generating pure ruby code easily from RubyParser compatible Sexps
         
     | 
    
        metadata.gz.sig
    ADDED
    
    | 
         Binary file 
     |