ripper2ruby 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.markdown +10 -0
- data/lib/core_ext/array/flush.rb +5 -0
- data/lib/core_ext/hash/delete_at.rb +5 -0
- data/lib/core_ext/object/meta_class.rb +5 -0
- data/lib/core_ext/object/try.rb +12 -0
- data/lib/erb/stripper.rb +48 -0
- data/lib/highlighters/ansi.rb +29 -0
- data/lib/ripper/event_log.rb +45 -0
- data/lib/ripper/ruby_builder.rb +168 -0
- data/lib/ripper/ruby_builder/buffer.rb +34 -0
- data/lib/ripper/ruby_builder/events/args.rb +40 -0
- data/lib/ripper/ruby_builder/events/array.rb +71 -0
- data/lib/ripper/ruby_builder/events/assignment.rb +55 -0
- data/lib/ripper/ruby_builder/events/block.rb +80 -0
- data/lib/ripper/ruby_builder/events/call.rb +123 -0
- data/lib/ripper/ruby_builder/events/case.rb +17 -0
- data/lib/ripper/ruby_builder/events/const.rb +47 -0
- data/lib/ripper/ruby_builder/events/for.rb +13 -0
- data/lib/ripper/ruby_builder/events/hash.rb +24 -0
- data/lib/ripper/ruby_builder/events/identifier.rb +41 -0
- data/lib/ripper/ruby_builder/events/if.rb +37 -0
- data/lib/ripper/ruby_builder/events/lexer.rb +159 -0
- data/lib/ripper/ruby_builder/events/literal.rb +47 -0
- data/lib/ripper/ruby_builder/events/method.rb +21 -0
- data/lib/ripper/ruby_builder/events/operator.rb +23 -0
- data/lib/ripper/ruby_builder/events/statements.rb +50 -0
- data/lib/ripper/ruby_builder/events/string.rb +117 -0
- data/lib/ripper/ruby_builder/events/symbol.rb +22 -0
- data/lib/ripper/ruby_builder/events/while.rb +27 -0
- data/lib/ripper/ruby_builder/queue.rb +33 -0
- data/lib/ripper/ruby_builder/stack.rb +125 -0
- data/lib/ripper/ruby_builder/token.rb +91 -0
- data/lib/ripper2ruby.rb +1 -0
- data/lib/ruby.rb +28 -0
- data/lib/ruby/aggregate.rb +71 -0
- data/lib/ruby/alternation/args.rb +25 -0
- data/lib/ruby/alternation/hash.rb +25 -0
- data/lib/ruby/alternation/list.rb +19 -0
- data/lib/ruby/args.rb +36 -0
- data/lib/ruby/array.rb +27 -0
- data/lib/ruby/assignment.rb +32 -0
- data/lib/ruby/assoc.rb +17 -0
- data/lib/ruby/block.rb +42 -0
- data/lib/ruby/call.rb +34 -0
- data/lib/ruby/case.rb +30 -0
- data/lib/ruby/const.rb +49 -0
- data/lib/ruby/for.rb +18 -0
- data/lib/ruby/hash.rb +14 -0
- data/lib/ruby/if.rb +35 -0
- data/lib/ruby/list.rb +40 -0
- data/lib/ruby/literal.rb +45 -0
- data/lib/ruby/method.rb +19 -0
- data/lib/ruby/node.rb +47 -0
- data/lib/ruby/node/composite.rb +68 -0
- data/lib/ruby/node/conversions.rb +66 -0
- data/lib/ruby/node/position.rb +35 -0
- data/lib/ruby/node/source.rb +29 -0
- data/lib/ruby/node/text.rb +121 -0
- data/lib/ruby/node/traversal.rb +82 -0
- data/lib/ruby/operator.rb +49 -0
- data/lib/ruby/params.rb +41 -0
- data/lib/ruby/statements.rb +45 -0
- data/lib/ruby/string.rb +40 -0
- data/lib/ruby/symbol.rb +27 -0
- data/lib/ruby/token.rb +51 -0
- data/lib/ruby/while.rb +32 -0
- data/test/all.rb +3 -0
- data/test/builder/stack_test.rb +67 -0
- data/test/builder/text_test.rb +118 -0
- data/test/context_test.rb +54 -0
- data/test/erb_stripper_test.rb +29 -0
- data/test/fixtures/all.rb.src +150 -0
- data/test/fixtures/source_1.rb +16 -0
- data/test/fixtures/source_2.rb +1 -0
- data/test/fixtures/stuff.rb +371 -0
- data/test/fixtures/template.html.erb +22 -0
- data/test/fixtures/tmp.rb +6 -0
- data/test/lib_test.rb +92 -0
- data/test/lib_test_helper.rb +103 -0
- data/test/libs.txt +227 -0
- data/test/nodes/args_test.rb +100 -0
- data/test/nodes/array_test.rb +141 -0
- data/test/nodes/assignment_test.rb +49 -0
- data/test/nodes/block_test.rb +125 -0
- data/test/nodes/call_test.rb +229 -0
- data/test/nodes/case_test.rb +68 -0
- data/test/nodes/comments_test.rb +25 -0
- data/test/nodes/const_test.rb +46 -0
- data/test/nodes/conversions_test.rb +9 -0
- data/test/nodes/for_test.rb +34 -0
- data/test/nodes/hash_test.rb +71 -0
- data/test/nodes/heredoc_test.rb +202 -0
- data/test/nodes/identifier_test.rb +51 -0
- data/test/nodes/if_test.rb +100 -0
- data/test/nodes/literals_test.rb +63 -0
- data/test/nodes/method_test.rb +92 -0
- data/test/nodes/namespaces_test.rb +65 -0
- data/test/nodes/node_test.rb +74 -0
- data/test/nodes/nodes_test.rb +23 -0
- data/test/nodes/operator_test.rb +241 -0
- data/test/nodes/separators_test.rb +97 -0
- data/test/nodes/statements_test.rb +70 -0
- data/test/nodes/string_test.rb +92 -0
- data/test/nodes/symbol_test.rb +57 -0
- data/test/nodes/unless_test.rb +42 -0
- data/test/nodes/until_test.rb +61 -0
- data/test/nodes/while_test.rb +71 -0
- data/test/test_helper.rb +51 -0
- data/test/traversal_test.rb +53 -0
- metadata +163 -0
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class SymbolTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
def assert_symbol(src, value = nil, klass = Ruby::Symbol)
|
7
|
+
assert_build(src) do |node|
|
8
|
+
assert_equal klass, node.first.class
|
9
|
+
assert_equal value, node.first.value if value
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
define_method :"test a symbol" do
|
14
|
+
src = ':foo'
|
15
|
+
assert_symbol(src, :foo)
|
16
|
+
end
|
17
|
+
|
18
|
+
define_method :"test a symbol that is an operator" do
|
19
|
+
src = ':!'
|
20
|
+
assert_symbol(src, :!)
|
21
|
+
end
|
22
|
+
|
23
|
+
define_method :"test a symbol that is wtf" do
|
24
|
+
src = ':-@'
|
25
|
+
assert_symbol(src, :-@)
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method :'test a symbol that is also a keyword' do
|
29
|
+
src = ":if"
|
30
|
+
assert_symbol(src, :if)
|
31
|
+
end
|
32
|
+
|
33
|
+
define_method :"test a symbol that is an array access operator" do
|
34
|
+
src = ':[]'
|
35
|
+
assert_symbol(src, :[])
|
36
|
+
end
|
37
|
+
|
38
|
+
define_method :"test a symbol that is an array assignment operator" do
|
39
|
+
src = ':[]='
|
40
|
+
assert_symbol(src, :[]=)
|
41
|
+
end
|
42
|
+
|
43
|
+
define_method :"test a double-quoted dyna-symbol" do
|
44
|
+
src = ':"foo.bar"'
|
45
|
+
assert_symbol(src, :'foo.bar', Ruby::DynaSymbol)
|
46
|
+
end
|
47
|
+
|
48
|
+
define_method :"test a single-quoted dyna-symbol" do
|
49
|
+
src = ":'foo.bar'"
|
50
|
+
assert_symbol(src, :'foo.bar', Ruby::DynaSymbol)
|
51
|
+
end
|
52
|
+
|
53
|
+
define_method :"test a double-quoted dyna-symbol w/ an embedded expression" do
|
54
|
+
src = ':"@#{token}"'
|
55
|
+
assert_symbol(src, nil, Ruby::DynaSymbol)
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class UnlessTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
define_method :'test unless block, semicolon separated' do
|
7
|
+
src = "unless true; false end"
|
8
|
+
assert_build(src) do |node|
|
9
|
+
assert_equal Ruby::Unless, node.first.class
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
define_method :'test unless block, newline separated' do
|
14
|
+
src = "unless true\n false end"
|
15
|
+
assert_build(src)
|
16
|
+
end
|
17
|
+
|
18
|
+
define_method :'test unless block w/ then, not separated' do
|
19
|
+
src = "unless true then false end"
|
20
|
+
assert_build(src)
|
21
|
+
end
|
22
|
+
|
23
|
+
define_method :'test unless block w/ else block, semicolon separated' do
|
24
|
+
src = "unless true; false; else; true end"
|
25
|
+
assert_build(src)
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method :'test unless block w/ else block, newline separated' do
|
29
|
+
src = "unless true\n false\n else\n true end"
|
30
|
+
assert_build(src)
|
31
|
+
end
|
32
|
+
|
33
|
+
define_method :'test unless modifier' do
|
34
|
+
src = "foo unless true"
|
35
|
+
assert_build(src)
|
36
|
+
end
|
37
|
+
|
38
|
+
define_method :'test chained unless and if modifiers' do
|
39
|
+
src = "1 unless false if true"
|
40
|
+
assert_build(src)
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
# until expression; statement; end
|
4
|
+
# begin statement end until expression
|
5
|
+
# statement until expression
|
6
|
+
|
7
|
+
class UntilTest < Test::Unit::TestCase
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
define_method :'test until block, semicolon separated' do
|
11
|
+
src = "until true; false end"
|
12
|
+
assert_build(src) do |node|
|
13
|
+
assert_equal Ruby::Until, node.first.class
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
define_method :'test until block, semicolon separated (2)' do
|
18
|
+
src = "until (true); false end"
|
19
|
+
assert_build(src)
|
20
|
+
end
|
21
|
+
|
22
|
+
define_method :'test until block, semicolon separated (3)' do
|
23
|
+
src = "until (true;); false end"
|
24
|
+
assert_build(src)
|
25
|
+
end
|
26
|
+
|
27
|
+
define_method :'test until block, newline separated' do
|
28
|
+
src = "until true\n false end"
|
29
|
+
assert_build(src)
|
30
|
+
end
|
31
|
+
|
32
|
+
define_method :'test until block, newline separated (2)' do
|
33
|
+
src = "until (true)\n false end"
|
34
|
+
assert_build(src)
|
35
|
+
end
|
36
|
+
|
37
|
+
define_method :'test until with do block' do
|
38
|
+
src = "until foo do ; end"
|
39
|
+
assert_build(src)
|
40
|
+
end
|
41
|
+
|
42
|
+
define_method :'test begin do until block, semicolon separated' do
|
43
|
+
src = "begin; false; end until true"
|
44
|
+
assert_build(src)
|
45
|
+
end
|
46
|
+
|
47
|
+
define_method :'test begin do until block, newline separated' do
|
48
|
+
src = "begin\n false\n end until true"
|
49
|
+
assert_build(src)
|
50
|
+
end
|
51
|
+
|
52
|
+
define_method :'test until modifier' do
|
53
|
+
src = "foo until true"
|
54
|
+
assert_build(src)
|
55
|
+
end
|
56
|
+
|
57
|
+
define_method :'test until modifier (2)' do
|
58
|
+
src = "foo until (true)"
|
59
|
+
assert_build(src)
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
# while expression; statement; end
|
4
|
+
# begin statement end while expression
|
5
|
+
# statement while expression
|
6
|
+
|
7
|
+
class WhileTest < Test::Unit::TestCase
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
define_method :'test while block, semicolon separated' do
|
11
|
+
src = "while true; false end"
|
12
|
+
assert_build(src) do |node|
|
13
|
+
assert_equal Ruby::While, node.first.class
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
define_method :'test while block, semicolon separated (2)' do
|
18
|
+
src = "while (true); false end"
|
19
|
+
assert_build(src)
|
20
|
+
end
|
21
|
+
|
22
|
+
define_method :'test while block, semicolon separated (3)' do
|
23
|
+
src = "while (true;true); false end"
|
24
|
+
assert_build(src)
|
25
|
+
end
|
26
|
+
|
27
|
+
define_method :'test while block, newline separated' do
|
28
|
+
src = "while true\n false end"
|
29
|
+
assert_build(src)
|
30
|
+
end
|
31
|
+
|
32
|
+
define_method :'test while block, newline separated (2)' do
|
33
|
+
src = "while (true)\n false end"
|
34
|
+
assert_build(src)
|
35
|
+
end
|
36
|
+
|
37
|
+
define_method :'test while with do block' do
|
38
|
+
src = "while foo do ; end"
|
39
|
+
assert_build(src)
|
40
|
+
end
|
41
|
+
|
42
|
+
define_method :'test begin do while block, semicolon separated' do
|
43
|
+
src = "begin; false; end while true"
|
44
|
+
assert_build(src)
|
45
|
+
end
|
46
|
+
|
47
|
+
define_method :'test begin do while block, semicolon separated (2)' do
|
48
|
+
src = "begin; false; end while (true)"
|
49
|
+
assert_build(src)
|
50
|
+
end
|
51
|
+
|
52
|
+
define_method :'test begin do while block, newline separated' do
|
53
|
+
src = "begin\n false\n end while true"
|
54
|
+
assert_build(src)
|
55
|
+
end
|
56
|
+
|
57
|
+
define_method :'test begin do while block, newline separated (2)' do
|
58
|
+
src = "begin\n false\n end while (true)"
|
59
|
+
assert_build(src)
|
60
|
+
end
|
61
|
+
|
62
|
+
define_method :'test while modifier' do
|
63
|
+
src = "foo while true"
|
64
|
+
assert_build(src)
|
65
|
+
end
|
66
|
+
|
67
|
+
define_method :'test while modifier (2)' do
|
68
|
+
src = "foo while (true)"
|
69
|
+
assert_build(src)
|
70
|
+
end
|
71
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
$: << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
2
|
+
|
3
|
+
require 'ripper/ruby_builder'
|
4
|
+
require 'ripper/event_log'
|
5
|
+
require 'test/unit'
|
6
|
+
require 'pp'
|
7
|
+
require 'highlighters/ansi'
|
8
|
+
|
9
|
+
module TestHelper
|
10
|
+
def build(src, filename = nil)
|
11
|
+
Ripper::RubyBuilder.build(src, filename)
|
12
|
+
end
|
13
|
+
|
14
|
+
def sexp(src)
|
15
|
+
pp Ripper::SexpBuilder.new(src).parse
|
16
|
+
end
|
17
|
+
|
18
|
+
def log(src)
|
19
|
+
Ripper::EventLog.out(src)
|
20
|
+
end
|
21
|
+
|
22
|
+
def assert_build(src)
|
23
|
+
expr = build(src)
|
24
|
+
assert_equal src, expr.to_ruby(true)
|
25
|
+
assert_equal src, expr.src(true)
|
26
|
+
# expr.all_nodes.each { |node| assert_equal Ruby::Program, node.root.class }
|
27
|
+
yield(expr) if block_given?
|
28
|
+
end
|
29
|
+
|
30
|
+
def assert_node(node, assertions)
|
31
|
+
node = node.first if node.is_a?(Array)
|
32
|
+
assertions.each do |type, value|
|
33
|
+
case type
|
34
|
+
when :is_a
|
35
|
+
assert node.is_a?(value)
|
36
|
+
when :class
|
37
|
+
assert_equal value, node.class
|
38
|
+
when :pos, :position
|
39
|
+
assert_position(value, node)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def assert_position(position, node)
|
45
|
+
node = node.first if node.is_a?(Array)
|
46
|
+
assert_equal position, node.position.to_a
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class TraversalTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
define_method :"test select by token" do
|
7
|
+
nodes = build('1 + (1 + (1 + 2))').select(:token => '1')
|
8
|
+
assert_equal 3, nodes.size
|
9
|
+
assert_equal [Ruby::Integer], nodes.map(&:class).uniq
|
10
|
+
assert_equal ['1', '1', '1'], nodes.map(&:token)
|
11
|
+
end
|
12
|
+
|
13
|
+
define_method :"test select by value" do
|
14
|
+
nodes = build('1 + (1 + (1 + 2))').select(:value => 2)
|
15
|
+
assert_equal 1, nodes.size
|
16
|
+
assert_equal [Ruby::Integer], nodes.map(&:class).uniq
|
17
|
+
assert_equal ['2'], nodes.map(&:token)
|
18
|
+
end
|
19
|
+
|
20
|
+
define_method :"test select by position" do
|
21
|
+
nodes = build('1 + (2 + (3 + 4))').select(:position => [0, 10])
|
22
|
+
assert_equal 3, nodes.size
|
23
|
+
assert_equal [Ruby::Statements, Ruby::Binary, Ruby::Integer], nodes.map(&:class)
|
24
|
+
assert_equal '3', nodes.last.token
|
25
|
+
assert_equal [0, 10], nodes.last.position.to_a
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method :"test select by a single klass" do
|
29
|
+
nodes = build('1 + (2 + (3 + 4))').select(Ruby::Operator)
|
30
|
+
assert_equal 3, nodes.size
|
31
|
+
assert_equal [Ruby::Binary], nodes.map(&:class).uniq
|
32
|
+
assert_equal '+', nodes.last.operator.token
|
33
|
+
assert_equal [0, 10], nodes.last.position.to_a
|
34
|
+
end
|
35
|
+
|
36
|
+
define_method :"test select by :left_of" do
|
37
|
+
nodes = build('1 + (2 + (3 + 4))')
|
38
|
+
right = nodes.select(Ruby::Integer, :value => 3).first
|
39
|
+
nodes = nodes.select(Ruby::Integer, :left_of => right)
|
40
|
+
assert_equal 2, nodes.size
|
41
|
+
assert_equal [Ruby::Integer], nodes.map(&:class).uniq
|
42
|
+
assert_equal ['1', '2'], nodes.map(&:token)
|
43
|
+
end
|
44
|
+
|
45
|
+
define_method :"test select by :right_of" do
|
46
|
+
nodes = build('1 + (2 + (3 + 4))')
|
47
|
+
right = nodes.select(Ruby::Integer, :value => 3).first
|
48
|
+
nodes = nodes.select(Ruby::Integer, :right_of => right)
|
49
|
+
assert_equal 1, nodes.size
|
50
|
+
assert_equal [Ruby::Integer], nodes.map(&:class).uniq
|
51
|
+
assert_equal ['4'], nodes.map(&:token)
|
52
|
+
end
|
53
|
+
end
|
metadata
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ripper2ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sven Fuchs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-07-04 09:00:00 +02:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Ripper2Ruby builds an object-oriented representation of Ruby code that you can modify and recompile back to Ruby.
|
17
|
+
email: svenfuchs@artweb-design.de
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/core_ext/array/flush.rb
|
26
|
+
- lib/core_ext/hash/delete_at.rb
|
27
|
+
- lib/core_ext/object/meta_class.rb
|
28
|
+
- lib/core_ext/object/try.rb
|
29
|
+
- lib/erb/stripper.rb
|
30
|
+
- lib/highlighters/ansi.rb
|
31
|
+
- lib/ripper/event_log.rb
|
32
|
+
- lib/ripper/ruby_builder.rb
|
33
|
+
- lib/ripper/ruby_builder/buffer.rb
|
34
|
+
- lib/ripper/ruby_builder/events/args.rb
|
35
|
+
- lib/ripper/ruby_builder/events/array.rb
|
36
|
+
- lib/ripper/ruby_builder/events/assignment.rb
|
37
|
+
- lib/ripper/ruby_builder/events/block.rb
|
38
|
+
- lib/ripper/ruby_builder/events/call.rb
|
39
|
+
- lib/ripper/ruby_builder/events/case.rb
|
40
|
+
- lib/ripper/ruby_builder/events/const.rb
|
41
|
+
- lib/ripper/ruby_builder/events/for.rb
|
42
|
+
- lib/ripper/ruby_builder/events/hash.rb
|
43
|
+
- lib/ripper/ruby_builder/events/identifier.rb
|
44
|
+
- lib/ripper/ruby_builder/events/if.rb
|
45
|
+
- lib/ripper/ruby_builder/events/lexer.rb
|
46
|
+
- lib/ripper/ruby_builder/events/literal.rb
|
47
|
+
- lib/ripper/ruby_builder/events/method.rb
|
48
|
+
- lib/ripper/ruby_builder/events/operator.rb
|
49
|
+
- lib/ripper/ruby_builder/events/statements.rb
|
50
|
+
- lib/ripper/ruby_builder/events/string.rb
|
51
|
+
- lib/ripper/ruby_builder/events/symbol.rb
|
52
|
+
- lib/ripper/ruby_builder/events/while.rb
|
53
|
+
- lib/ripper/ruby_builder/queue.rb
|
54
|
+
- lib/ripper/ruby_builder/stack.rb
|
55
|
+
- lib/ripper/ruby_builder/token.rb
|
56
|
+
- lib/ripper2ruby.rb
|
57
|
+
- lib/ruby.rb
|
58
|
+
- lib/ruby/aggregate.rb
|
59
|
+
- lib/ruby/alternation/args.rb
|
60
|
+
- lib/ruby/alternation/hash.rb
|
61
|
+
- lib/ruby/alternation/list.rb
|
62
|
+
- lib/ruby/args.rb
|
63
|
+
- lib/ruby/array.rb
|
64
|
+
- lib/ruby/assignment.rb
|
65
|
+
- lib/ruby/assoc.rb
|
66
|
+
- lib/ruby/block.rb
|
67
|
+
- lib/ruby/call.rb
|
68
|
+
- lib/ruby/case.rb
|
69
|
+
- lib/ruby/const.rb
|
70
|
+
- lib/ruby/for.rb
|
71
|
+
- lib/ruby/hash.rb
|
72
|
+
- lib/ruby/if.rb
|
73
|
+
- lib/ruby/list.rb
|
74
|
+
- lib/ruby/literal.rb
|
75
|
+
- lib/ruby/method.rb
|
76
|
+
- lib/ruby/node.rb
|
77
|
+
- lib/ruby/node/composite.rb
|
78
|
+
- lib/ruby/node/conversions.rb
|
79
|
+
- lib/ruby/node/position.rb
|
80
|
+
- lib/ruby/node/source.rb
|
81
|
+
- lib/ruby/node/text.rb
|
82
|
+
- lib/ruby/node/traversal.rb
|
83
|
+
- lib/ruby/operator.rb
|
84
|
+
- lib/ruby/params.rb
|
85
|
+
- lib/ruby/statements.rb
|
86
|
+
- lib/ruby/string.rb
|
87
|
+
- lib/ruby/symbol.rb
|
88
|
+
- lib/ruby/token.rb
|
89
|
+
- lib/ruby/while.rb
|
90
|
+
- MIT-LICENSE
|
91
|
+
- README.markdown
|
92
|
+
has_rdoc: false
|
93
|
+
homepage: http://github.com/svenfuchs/ripper2ruby
|
94
|
+
licenses: []
|
95
|
+
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
|
99
|
+
require_paths:
|
100
|
+
- lib
|
101
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: "0"
|
106
|
+
version:
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: "0"
|
112
|
+
version:
|
113
|
+
requirements: []
|
114
|
+
|
115
|
+
rubyforge_project:
|
116
|
+
rubygems_version: 1.3.5
|
117
|
+
signing_key:
|
118
|
+
specification_version: 2
|
119
|
+
summary: Ripper2Ruby builds an object-oriented representation of Ruby code that you can modify and recompile back to Ruby
|
120
|
+
test_files:
|
121
|
+
- test/all.rb
|
122
|
+
- test/builder/stack_test.rb
|
123
|
+
- test/builder/text_test.rb
|
124
|
+
- test/context_test.rb
|
125
|
+
- test/erb_stripper_test.rb
|
126
|
+
- test/fixtures/all.rb.src
|
127
|
+
- test/fixtures/source_1.rb
|
128
|
+
- test/fixtures/source_2.rb
|
129
|
+
- test/fixtures/stuff.rb
|
130
|
+
- test/fixtures/template.html.erb
|
131
|
+
- test/fixtures/tmp.rb
|
132
|
+
- test/libs.txt
|
133
|
+
- test/lib_test.rb
|
134
|
+
- test/lib_test_helper.rb
|
135
|
+
- test/nodes/args_test.rb
|
136
|
+
- test/nodes/array_test.rb
|
137
|
+
- test/nodes/assignment_test.rb
|
138
|
+
- test/nodes/block_test.rb
|
139
|
+
- test/nodes/call_test.rb
|
140
|
+
- test/nodes/case_test.rb
|
141
|
+
- test/nodes/comments_test.rb
|
142
|
+
- test/nodes/const_test.rb
|
143
|
+
- test/nodes/conversions_test.rb
|
144
|
+
- test/nodes/for_test.rb
|
145
|
+
- test/nodes/hash_test.rb
|
146
|
+
- test/nodes/heredoc_test.rb
|
147
|
+
- test/nodes/identifier_test.rb
|
148
|
+
- test/nodes/if_test.rb
|
149
|
+
- test/nodes/literals_test.rb
|
150
|
+
- test/nodes/method_test.rb
|
151
|
+
- test/nodes/namespaces_test.rb
|
152
|
+
- test/nodes/nodes_test.rb
|
153
|
+
- test/nodes/node_test.rb
|
154
|
+
- test/nodes/operator_test.rb
|
155
|
+
- test/nodes/separators_test.rb
|
156
|
+
- test/nodes/statements_test.rb
|
157
|
+
- test/nodes/string_test.rb
|
158
|
+
- test/nodes/symbol_test.rb
|
159
|
+
- test/nodes/unless_test.rb
|
160
|
+
- test/nodes/until_test.rb
|
161
|
+
- test/nodes/while_test.rb
|
162
|
+
- test/test_helper.rb
|
163
|
+
- test/traversal_test.rb
|