ripper2ruby 0.0.1
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/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
|