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.
Files changed (89) hide show
  1. data/.gitignore +6 -6
  2. data/.rspec +1 -0
  3. data/.travis.yml +12 -1
  4. data/Changelog.md +115 -0
  5. data/Gemfile +5 -3
  6. data/Gemfile.devtools +67 -0
  7. data/Guardfile +18 -0
  8. data/LICENSE +21 -0
  9. data/README.md +52 -0
  10. data/Rakefile +3 -8
  11. data/TODO +9 -0
  12. data/bin/to_source +17 -0
  13. data/config/flay.yml +3 -0
  14. data/config/flog.yml +2 -0
  15. data/config/roodi.yml +26 -0
  16. data/config/site.reek +97 -0
  17. data/config/yardstick.yml +2 -0
  18. data/lib/to_source/command.rb +106 -0
  19. data/lib/to_source/emitter/access.rb +28 -0
  20. data/lib/to_source/emitter/actual_arguments.rb +89 -0
  21. data/lib/to_source/emitter/alias.rb +27 -0
  22. data/lib/to_source/emitter/assignment.rb +119 -0
  23. data/lib/to_source/emitter/attribute_assignment.rb +28 -0
  24. data/lib/to_source/emitter/begin.rb +71 -0
  25. data/lib/to_source/emitter/binary_operator.rb +63 -0
  26. data/lib/to_source/emitter/binary_operator_method.rb +58 -0
  27. data/lib/to_source/emitter/block.rb +29 -0
  28. data/lib/to_source/emitter/block_argument.rb +23 -0
  29. data/lib/to_source/emitter/block_pass.rb +23 -0
  30. data/lib/to_source/emitter/case.rb +85 -0
  31. data/lib/to_source/emitter/class.rb +44 -0
  32. data/lib/to_source/emitter/concat_arguments.rb +28 -0
  33. data/lib/to_source/emitter/default_arguments.rb +22 -0
  34. data/lib/to_source/emitter/define.rb +99 -0
  35. data/lib/to_source/emitter/defined.rb +24 -0
  36. data/lib/to_source/emitter/element_assignment.rb +29 -0
  37. data/lib/to_source/emitter/element_reference.rb +25 -0
  38. data/lib/to_source/emitter/empty_body.rb +21 -0
  39. data/lib/to_source/emitter/ensure.rb +50 -0
  40. data/lib/to_source/emitter/ensure_body.rb +27 -0
  41. data/lib/to_source/emitter/execute_string.rb +22 -0
  42. data/lib/to_source/emitter/formal_arguments.rb +212 -0
  43. data/lib/to_source/emitter/if.rb +96 -0
  44. data/lib/to_source/emitter/iter.rb +27 -0
  45. data/lib/to_source/emitter/keyword_value.rb +67 -0
  46. data/lib/to_source/emitter/literal/dynamic.rb +178 -0
  47. data/lib/to_source/emitter/literal.rb +232 -0
  48. data/lib/to_source/emitter/loop.rb +40 -0
  49. data/lib/to_source/emitter/match3.rb +25 -0
  50. data/lib/to_source/emitter/module.rb +28 -0
  51. data/lib/to_source/emitter/multiple_assignment.rb +49 -0
  52. data/lib/to_source/emitter/nth_ref.rb +22 -0
  53. data/lib/to_source/emitter/op_assign1.rb +27 -0
  54. data/lib/to_source/emitter/op_assign2.rb +27 -0
  55. data/lib/to_source/emitter/pattern_arguments.rb +24 -0
  56. data/lib/to_source/emitter/rescue.rb +28 -0
  57. data/lib/to_source/emitter/rescue_condition.rb +93 -0
  58. data/lib/to_source/emitter/scope.rb +24 -0
  59. data/lib/to_source/emitter/scope_name.rb +23 -0
  60. data/lib/to_source/emitter/scoped_name.rb +28 -0
  61. data/lib/to_source/emitter/send.rb +133 -0
  62. data/lib/to_source/emitter/send_with_arguments.rb +103 -0
  63. data/lib/to_source/emitter/singleton_class.rb +38 -0
  64. data/lib/to_source/emitter/splat.rb +24 -0
  65. data/lib/to_source/emitter/splat_when.rb +23 -0
  66. data/lib/to_source/emitter/static.rb +52 -0
  67. data/lib/to_source/emitter/super.rb +92 -0
  68. data/lib/to_source/emitter/to_array.rb +22 -0
  69. data/lib/to_source/emitter/to_string.rb +24 -0
  70. data/lib/to_source/emitter/toplevel.rb +24 -0
  71. data/lib/to_source/emitter/unary_operator_method.rb +27 -0
  72. data/lib/to_source/emitter/unless.rb +45 -0
  73. data/lib/to_source/emitter/util.rb +28 -0
  74. data/lib/to_source/emitter/when.rb +63 -0
  75. data/lib/to_source/emitter/yield.rb +28 -0
  76. data/lib/to_source/emitter/z_super.rb +24 -0
  77. data/lib/to_source/emitter.rb +278 -0
  78. data/lib/to_source/state.rb +144 -0
  79. data/lib/to_source.rb +78 -11
  80. data/spec/spec_helper.rb +11 -0
  81. data/spec/unit/to_source/class_methods/run_spec.rb +1254 -0
  82. data/to_source.gemspec +16 -14
  83. metadata +160 -20
  84. data/.rvmrc +0 -1
  85. data/Readme.md +0 -38
  86. data/lib/to_source/core_ext/node.rb +0 -22
  87. data/lib/to_source/version.rb +0 -3
  88. data/lib/to_source/visitor.rb +0 -377
  89. 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