to_source 0.1.3 → 0.2.16
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/.gitignore +6 -6
- data/.rspec +1 -0
- data/.travis.yml +12 -1
- data/Changelog.md +115 -0
- data/Gemfile +5 -3
- data/Gemfile.devtools +67 -0
- data/Guardfile +18 -0
- data/LICENSE +21 -0
- data/README.md +52 -0
- data/Rakefile +3 -8
- data/TODO +9 -0
- data/bin/to_source +17 -0
- data/config/flay.yml +3 -0
- data/config/flog.yml +2 -0
- data/config/roodi.yml +26 -0
- data/config/site.reek +97 -0
- data/config/yardstick.yml +2 -0
- data/lib/to_source/command.rb +106 -0
- data/lib/to_source/emitter/access.rb +28 -0
- data/lib/to_source/emitter/actual_arguments.rb +89 -0
- data/lib/to_source/emitter/alias.rb +27 -0
- data/lib/to_source/emitter/assignment.rb +119 -0
- data/lib/to_source/emitter/attribute_assignment.rb +28 -0
- data/lib/to_source/emitter/begin.rb +71 -0
- data/lib/to_source/emitter/binary_operator.rb +63 -0
- data/lib/to_source/emitter/binary_operator_method.rb +58 -0
- data/lib/to_source/emitter/block.rb +29 -0
- data/lib/to_source/emitter/block_argument.rb +23 -0
- data/lib/to_source/emitter/block_pass.rb +23 -0
- data/lib/to_source/emitter/case.rb +85 -0
- data/lib/to_source/emitter/class.rb +44 -0
- data/lib/to_source/emitter/concat_arguments.rb +28 -0
- data/lib/to_source/emitter/default_arguments.rb +22 -0
- data/lib/to_source/emitter/define.rb +99 -0
- data/lib/to_source/emitter/defined.rb +24 -0
- data/lib/to_source/emitter/element_assignment.rb +29 -0
- data/lib/to_source/emitter/element_reference.rb +25 -0
- data/lib/to_source/emitter/empty_body.rb +21 -0
- data/lib/to_source/emitter/ensure.rb +50 -0
- data/lib/to_source/emitter/ensure_body.rb +27 -0
- data/lib/to_source/emitter/execute_string.rb +22 -0
- data/lib/to_source/emitter/formal_arguments.rb +212 -0
- data/lib/to_source/emitter/if.rb +96 -0
- data/lib/to_source/emitter/iter.rb +27 -0
- data/lib/to_source/emitter/keyword_value.rb +67 -0
- data/lib/to_source/emitter/literal/dynamic.rb +178 -0
- data/lib/to_source/emitter/literal.rb +232 -0
- data/lib/to_source/emitter/loop.rb +40 -0
- data/lib/to_source/emitter/match3.rb +25 -0
- data/lib/to_source/emitter/module.rb +28 -0
- data/lib/to_source/emitter/multiple_assignment.rb +49 -0
- data/lib/to_source/emitter/nth_ref.rb +22 -0
- data/lib/to_source/emitter/op_assign1.rb +27 -0
- data/lib/to_source/emitter/op_assign2.rb +27 -0
- data/lib/to_source/emitter/pattern_arguments.rb +24 -0
- data/lib/to_source/emitter/rescue.rb +28 -0
- data/lib/to_source/emitter/rescue_condition.rb +93 -0
- data/lib/to_source/emitter/scope.rb +24 -0
- data/lib/to_source/emitter/scope_name.rb +23 -0
- data/lib/to_source/emitter/scoped_name.rb +28 -0
- data/lib/to_source/emitter/send.rb +133 -0
- data/lib/to_source/emitter/send_with_arguments.rb +103 -0
- data/lib/to_source/emitter/singleton_class.rb +38 -0
- data/lib/to_source/emitter/splat.rb +24 -0
- data/lib/to_source/emitter/splat_when.rb +23 -0
- data/lib/to_source/emitter/static.rb +52 -0
- data/lib/to_source/emitter/super.rb +92 -0
- data/lib/to_source/emitter/to_array.rb +22 -0
- data/lib/to_source/emitter/to_string.rb +24 -0
- data/lib/to_source/emitter/toplevel.rb +24 -0
- data/lib/to_source/emitter/unary_operator_method.rb +27 -0
- data/lib/to_source/emitter/unless.rb +45 -0
- data/lib/to_source/emitter/util.rb +28 -0
- data/lib/to_source/emitter/when.rb +63 -0
- data/lib/to_source/emitter/yield.rb +28 -0
- data/lib/to_source/emitter/z_super.rb +24 -0
- data/lib/to_source/emitter.rb +278 -0
- data/lib/to_source/state.rb +144 -0
- data/lib/to_source.rb +78 -11
- data/spec/spec_helper.rb +11 -0
- data/spec/unit/to_source/class_methods/run_spec.rb +1254 -0
- data/to_source.gemspec +16 -14
- metadata +160 -20
- data/.rvmrc +0 -1
- data/Readme.md +0 -38
- data/lib/to_source/core_ext/node.rb +0 -22
- data/lib/to_source/version.rb +0 -3
- data/lib/to_source/visitor.rb +0 -377
- data/test/to_source/visitor_test.rb +0 -202
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
require 'test/unit'
|
|
2
|
-
require 'to_source'
|
|
3
|
-
|
|
4
|
-
module ToSource
|
|
5
|
-
class VisitorTest < Test::Unit::TestCase
|
|
6
|
-
def visit(code)
|
|
7
|
-
code.to_ast.to_source
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def assert_source(code)
|
|
11
|
-
assert_equal code, visit(code)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def assert_converts(expected, code)
|
|
15
|
-
assert_equal expected, visit(code)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_class
|
|
19
|
-
assert_source "class TestClass\nend"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_class_with_superclass
|
|
23
|
-
assert_source "class TestClass < Object\nend"
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_class_with_body
|
|
27
|
-
assert_source "class TestClass\n 1\nend"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def test_module
|
|
31
|
-
assert_source "module TestModule\nend"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def test_module_with_body
|
|
35
|
-
assert_source "module TestModule\n 1\nend"
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def test_local_assignment
|
|
39
|
-
assert_source "foo = 1"
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_ivar_assignment
|
|
43
|
-
assert_source "@foo = 1"
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_local_access
|
|
47
|
-
assert_source "foo = 1\nfoo"
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_ivar_access
|
|
51
|
-
assert_source "@foo"
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def test_toplevel_constant_access
|
|
55
|
-
assert_source "::Rubinius"
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def test_constant_access
|
|
59
|
-
assert_source "Rubinius"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def test_scoped_constant_access
|
|
63
|
-
assert_source "Rubinius::Debugger"
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def test_fixnum_literal
|
|
67
|
-
assert_source "1"
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_float_literal
|
|
71
|
-
assert_source "1.0"
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def test_string_literal
|
|
75
|
-
assert_source '"foo"'
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def test_symbol_literal
|
|
79
|
-
assert_source ':foo'
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def test_true_literal
|
|
83
|
-
assert_source 'true'
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def test_false_literal
|
|
87
|
-
assert_source 'false'
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def test_nil_literal
|
|
91
|
-
assert_source 'nil'
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def test_array_literal
|
|
95
|
-
assert_source '[1, 2, 3]'
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def test_hash_literal
|
|
99
|
-
assert_source '{:answer => 42, :bar => :baz}'
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def test_range
|
|
103
|
-
assert_source '20..34'
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def test_range_exclude
|
|
107
|
-
assert_source '20...34'
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def test_regex
|
|
111
|
-
assert_source '/.*/'
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
def test_send
|
|
115
|
-
assert_source 'foo.bar'
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def test_send_with_arguments
|
|
119
|
-
assert_converts 'foo.bar(:baz, :yeah)', 'foo.bar :baz, :yeah'
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
def test_send_with_arguments_and_empty_block
|
|
123
|
-
assert_converts "foo.bar(:baz, :yeah) do\n nil\nend", "foo.bar(:baz, :yeah) do\nend"
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def test_send_with_arguments_and_block_with_one_argument
|
|
127
|
-
assert_source "foo.bar(:baz, :yeah) do |a|\n 3\n 4\nend"
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def test_send_with_arguments_and_block_with_arguments
|
|
131
|
-
assert_source "foo.bar(:baz, :yeah) do |a, b|\n 3\n 4\nend"
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def test_lambda
|
|
135
|
-
assert_source "lambda do |a, b|\n a\nend"
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
def test_proc
|
|
139
|
-
assert_source "Proc.new do\n a\nend"
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
def test_binary_operators
|
|
143
|
-
%w(+ - * / & | && || <<).each do |operator|
|
|
144
|
-
assert_source "1 #{operator} 2"
|
|
145
|
-
end
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
def test_expands_binary_equal
|
|
149
|
-
assert_converts "a = a + 2", "a += 2"
|
|
150
|
-
assert_converts "a = a - 2", "a -= 2"
|
|
151
|
-
assert_converts "a = a * 2", "a *= 2"
|
|
152
|
-
assert_converts "a = a / 2", "a /= 2"
|
|
153
|
-
assert_converts "a && a = 2", "a &&= 2"
|
|
154
|
-
assert_converts "a || a = 2", "a ||= 2"
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
def test_unary_operators
|
|
158
|
-
assert_source "!1"
|
|
159
|
-
assert_source "!!1"
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def test_if
|
|
163
|
-
assert_source "if 3\n 9\nend"
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def test_if_with_multiple_blocks
|
|
167
|
-
assert_source "if 3\n 9\n 8\nend"
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def test_else
|
|
171
|
-
assert_source "if 3\n 9\nelse\n 9\nend"
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
def test_else_with_multiple_blocks
|
|
175
|
-
assert_source "if 3\n 9\n 8\nelse\n 9\n 8\nend"
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
def test_unless
|
|
179
|
-
assert_source "unless 3\n 9\nend"
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
def test_while
|
|
183
|
-
assert_source "while false\n 3\nend"
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def test_while_with_multiple_blocks
|
|
187
|
-
assert_source "while false\n 3\n 5\nend"
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
def test_until
|
|
191
|
-
assert_source "until false\n 3\nend"
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
def test_until_with_multiple_blocks
|
|
195
|
-
assert_source "while false\n 3\n 5\nend"
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def test_return
|
|
199
|
-
assert_source "return 9"
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
end
|