refract 1.0.0.beta1 → 1.0.0

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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/refract/basic_visitor.rb +7 -2
  4. data/lib/refract/converter.rb +195 -23
  5. data/lib/refract/formatter.rb +83 -50
  6. data/lib/refract/mutation_visitor.rb +111 -115
  7. data/lib/refract/nodes/alias_global_variable_node.rb +3 -1
  8. data/lib/refract/nodes/alias_method_node.rb +3 -1
  9. data/lib/refract/nodes/alternation_pattern_node.rb +3 -1
  10. data/lib/refract/nodes/and_node.rb +3 -1
  11. data/lib/refract/nodes/arguments_node.rb +3 -1
  12. data/lib/refract/nodes/array_node.rb +3 -1
  13. data/lib/refract/nodes/array_pattern_node.rb +3 -1
  14. data/lib/refract/nodes/assoc_node.rb +3 -1
  15. data/lib/refract/nodes/assoc_splat_node.rb +3 -1
  16. data/lib/refract/nodes/back_reference_read_node.rb +3 -1
  17. data/lib/refract/nodes/begin_node.rb +3 -1
  18. data/lib/refract/nodes/block_argument_node.rb +3 -1
  19. data/lib/refract/nodes/block_local_variable_node.rb +3 -1
  20. data/lib/refract/nodes/block_node.rb +3 -1
  21. data/lib/refract/nodes/block_parameter_node.rb +3 -1
  22. data/lib/refract/nodes/block_parameters_node.rb +3 -1
  23. data/lib/refract/nodes/break_node.rb +3 -1
  24. data/lib/refract/nodes/call_and_write_node.rb +3 -1
  25. data/lib/refract/nodes/call_node.rb +5 -3
  26. data/lib/refract/nodes/call_operator_write_node.rb +3 -1
  27. data/lib/refract/nodes/call_or_write_node.rb +3 -1
  28. data/lib/refract/nodes/call_target_node.rb +3 -1
  29. data/lib/refract/nodes/capture_pattern_node.rb +3 -1
  30. data/lib/refract/nodes/case_match_node.rb +3 -1
  31. data/lib/refract/nodes/case_node.rb +3 -1
  32. data/lib/refract/nodes/class_node.rb +3 -1
  33. data/lib/refract/nodes/class_variable_and_write_node.rb +3 -1
  34. data/lib/refract/nodes/class_variable_operator_write_node.rb +3 -1
  35. data/lib/refract/nodes/class_variable_or_write_node.rb +3 -1
  36. data/lib/refract/nodes/class_variable_read_node.rb +3 -1
  37. data/lib/refract/nodes/class_variable_target_node.rb +3 -1
  38. data/lib/refract/nodes/class_variable_write_node.rb +3 -1
  39. data/lib/refract/nodes/constant_and_write_node.rb +3 -1
  40. data/lib/refract/nodes/constant_operator_write_node.rb +3 -1
  41. data/lib/refract/nodes/constant_or_write_node.rb +3 -1
  42. data/lib/refract/nodes/constant_path_and_write_node.rb +3 -1
  43. data/lib/refract/nodes/constant_path_node.rb +14 -0
  44. data/lib/refract/nodes/constant_path_operator_write_node.rb +3 -1
  45. data/lib/refract/nodes/constant_path_or_write_node.rb +3 -1
  46. data/lib/refract/nodes/constant_path_target_node.rb +3 -1
  47. data/lib/refract/nodes/constant_path_write_node.rb +3 -1
  48. data/lib/refract/nodes/constant_read_node.rb +3 -1
  49. data/lib/refract/nodes/constant_target_node.rb +3 -1
  50. data/lib/refract/nodes/constant_write_node.rb +3 -1
  51. data/lib/refract/nodes/def_node.rb +3 -1
  52. data/lib/refract/nodes/defined_node.rb +3 -1
  53. data/lib/refract/nodes/else_node.rb +3 -1
  54. data/lib/refract/nodes/embedded_statements_node.rb +3 -1
  55. data/lib/refract/nodes/embedded_variable_node.rb +3 -1
  56. data/lib/refract/nodes/ensure_node.rb +3 -1
  57. data/lib/refract/nodes/false_node.rb +3 -0
  58. data/lib/refract/nodes/find_pattern_node.rb +3 -1
  59. data/lib/refract/nodes/flip_flop_node.rb +3 -1
  60. data/lib/refract/nodes/float_node.rb +3 -1
  61. data/lib/refract/nodes/for_node.rb +3 -1
  62. data/lib/refract/nodes/forwarding_arguments_node.rb +3 -0
  63. data/lib/refract/nodes/forwarding_parameter_node.rb +3 -0
  64. data/lib/refract/nodes/forwarding_super_node.rb +3 -1
  65. data/lib/refract/nodes/global_variable_and_write_node.rb +3 -1
  66. data/lib/refract/nodes/global_variable_operator_write_node.rb +3 -1
  67. data/lib/refract/nodes/global_variable_or_write_node.rb +3 -1
  68. data/lib/refract/nodes/global_variable_read_node.rb +3 -1
  69. data/lib/refract/nodes/global_variable_target_node.rb +3 -1
  70. data/lib/refract/nodes/global_variable_write_node.rb +3 -1
  71. data/lib/refract/nodes/hash_node.rb +3 -1
  72. data/lib/refract/nodes/hash_pattern_node.rb +3 -1
  73. data/lib/refract/nodes/if_node.rb +5 -2
  74. data/lib/refract/nodes/imaginary_node.rb +3 -1
  75. data/lib/refract/nodes/implicit_node.rb +3 -1
  76. data/lib/refract/nodes/implicit_rest_node.rb +3 -0
  77. data/lib/refract/nodes/in_node.rb +3 -1
  78. data/lib/refract/nodes/index_and_write_node.rb +3 -1
  79. data/lib/refract/nodes/index_operator_write_node.rb +3 -1
  80. data/lib/refract/nodes/index_or_write_node.rb +3 -1
  81. data/lib/refract/nodes/index_target_node.rb +4 -2
  82. data/lib/refract/nodes/instance_variable_and_write_node.rb +3 -1
  83. data/lib/refract/nodes/instance_variable_operator_write_node.rb +3 -1
  84. data/lib/refract/nodes/instance_variable_or_write_node.rb +3 -1
  85. data/lib/refract/nodes/instance_variable_read_node.rb +3 -1
  86. data/lib/refract/nodes/instance_variable_target_node.rb +3 -1
  87. data/lib/refract/nodes/instance_variable_write_node.rb +3 -1
  88. data/lib/refract/nodes/integer_node.rb +3 -1
  89. data/lib/refract/nodes/interpolated_match_last_line_node.rb +3 -1
  90. data/lib/refract/nodes/interpolated_regular_expression_node.rb +3 -1
  91. data/lib/refract/nodes/interpolated_string_node.rb +3 -1
  92. data/lib/refract/nodes/interpolated_symbol_node.rb +3 -1
  93. data/lib/refract/nodes/interpolated_x_string_node.rb +3 -1
  94. data/lib/refract/nodes/it_local_variable_read_node.rb +3 -0
  95. data/lib/refract/nodes/it_parameters_node.rb +3 -0
  96. data/lib/refract/nodes/keyword_hash_node.rb +3 -1
  97. data/lib/refract/nodes/keyword_rest_parameter_node.rb +3 -1
  98. data/lib/refract/nodes/lambda_node.rb +3 -1
  99. data/lib/refract/nodes/local_variable_and_write_node.rb +3 -1
  100. data/lib/refract/nodes/local_variable_operator_write_node.rb +3 -1
  101. data/lib/refract/nodes/local_variable_or_write_node.rb +3 -1
  102. data/lib/refract/nodes/local_variable_read_node.rb +3 -1
  103. data/lib/refract/nodes/local_variable_target_node.rb +3 -1
  104. data/lib/refract/nodes/local_variable_write_node.rb +3 -1
  105. data/lib/refract/nodes/match_last_line_node.rb +3 -1
  106. data/lib/refract/nodes/match_predicate_node.rb +3 -1
  107. data/lib/refract/nodes/match_required_node.rb +3 -1
  108. data/lib/refract/nodes/match_write_node.rb +3 -1
  109. data/lib/refract/nodes/missing_node.rb +3 -0
  110. data/lib/refract/nodes/module_node.rb +3 -1
  111. data/lib/refract/nodes/multi_target_node.rb +3 -1
  112. data/lib/refract/nodes/multi_write_node.rb +3 -1
  113. data/lib/refract/nodes/next_node.rb +3 -1
  114. data/lib/refract/nodes/nil_node.rb +3 -0
  115. data/lib/refract/nodes/no_keywords_parameter_node.rb +3 -0
  116. data/lib/refract/nodes/numbered_parameters_node.rb +3 -0
  117. data/lib/refract/nodes/numbered_reference_read_node.rb +3 -1
  118. data/lib/refract/nodes/optional_keyword_parameter_node.rb +3 -1
  119. data/lib/refract/nodes/optional_parameter_node.rb +3 -1
  120. data/lib/refract/nodes/or_node.rb +3 -1
  121. data/lib/refract/nodes/parameters_node.rb +3 -1
  122. data/lib/refract/nodes/parentheses_node.rb +3 -1
  123. data/lib/refract/nodes/pinned_expression_node.rb +3 -1
  124. data/lib/refract/nodes/pinned_variable_node.rb +3 -1
  125. data/lib/refract/nodes/post_execution_node.rb +3 -1
  126. data/lib/refract/nodes/pre_execution_node.rb +3 -1
  127. data/lib/refract/nodes/program_node.rb +4 -2
  128. data/lib/refract/nodes/range_node.rb +3 -1
  129. data/lib/refract/nodes/rational_node.rb +3 -1
  130. data/lib/refract/nodes/redo_node.rb +3 -0
  131. data/lib/refract/nodes/regular_expression_node.rb +3 -1
  132. data/lib/refract/nodes/required_keyword_parameter_node.rb +3 -1
  133. data/lib/refract/nodes/required_parameter_node.rb +3 -1
  134. data/lib/refract/nodes/rescue_modifier_node.rb +3 -1
  135. data/lib/refract/nodes/rescue_node.rb +3 -1
  136. data/lib/refract/nodes/rest_parameter_node.rb +3 -1
  137. data/lib/refract/nodes/retry_node.rb +3 -0
  138. data/lib/refract/nodes/return_node.rb +3 -1
  139. data/lib/refract/nodes/self_node.rb +3 -0
  140. data/lib/refract/nodes/shareable_constant_node.rb +3 -1
  141. data/lib/refract/nodes/singleton_class_node.rb +3 -1
  142. data/lib/refract/nodes/source_encoding_node.rb +3 -0
  143. data/lib/refract/nodes/source_file_node.rb +3 -0
  144. data/lib/refract/nodes/source_line_node.rb +3 -0
  145. data/lib/refract/nodes/splat_node.rb +3 -1
  146. data/lib/refract/nodes/statements_node.rb +3 -1
  147. data/lib/refract/nodes/string_node.rb +3 -1
  148. data/lib/refract/nodes/super_node.rb +3 -1
  149. data/lib/refract/nodes/symbol_node.rb +3 -1
  150. data/lib/refract/nodes/true_node.rb +3 -0
  151. data/lib/refract/nodes/undef_node.rb +3 -1
  152. data/lib/refract/nodes/unless_node.rb +5 -2
  153. data/lib/refract/nodes/until_node.rb +5 -2
  154. data/lib/refract/nodes/when_node.rb +3 -1
  155. data/lib/refract/nodes/while_node.rb +5 -2
  156. data/lib/refract/nodes/x_string_node.rb +3 -1
  157. data/lib/refract/nodes/yield_node.rb +3 -1
  158. data/lib/refract/version.rb +1 -1
  159. data/lib/refract/visitor.rb +4 -4
  160. data/lib/refract.rb +11 -2
  161. metadata +2 -2
  162. data/lib/refract/nodes/constant_path.rb +0 -12
@@ -10,6 +10,14 @@ module Refract
10
10
  @indent = 0
11
11
  end
12
12
 
13
+ def around_visit(node)
14
+ if (start_line = node.start_line)
15
+ @source_map[@current_line] = start_line
16
+ end
17
+
18
+ super
19
+ end
20
+
13
21
  def format_node(node)
14
22
  visit(node)
15
23
  @buffer.join
@@ -190,7 +198,7 @@ module Refract
190
198
  push "."
191
199
  end
192
200
 
193
- push node.message
201
+ push node.name
194
202
 
195
203
  case node.block
196
204
  when BlockNode
@@ -349,18 +357,18 @@ module Refract
349
357
  visit node.value
350
358
  end
351
359
 
352
- visit ConstantPath do |node|
353
- visit node.parent
354
- push "::"
355
- push node.name
356
- end
357
-
358
360
  visit ConstantPathAndWriteNode do |node|
359
361
  visit node.target
360
362
  push " &&= "
361
363
  visit node.value
362
364
  end
363
365
 
366
+ visit ConstantPathNode do |node|
367
+ visit node.parent
368
+ push "::"
369
+ push node.name
370
+ end
371
+
364
372
  visit ConstantPathOperatorWriteNode do |node|
365
373
  visit node.target
366
374
  space
@@ -563,25 +571,31 @@ module Refract
563
571
  end
564
572
 
565
573
  visit IfNode do |node|
566
- # Check if this is an elsif by looking at the parent
567
- if IfNode === @stack[-2]
568
- push "elsif "
574
+ if node.inline
575
+ visit node.statements
576
+ push " if "
577
+ visit node.predicate
569
578
  else
570
- push "if "
571
- end
572
- visit node.predicate
573
- if node.statements
574
- indent do
575
- visit node.statements
579
+ # Check if this is an elsif by looking at the parent
580
+ if IfNode === @stack[-2]
581
+ push "elsif "
582
+ else
583
+ push "if "
584
+ end
585
+ visit node.predicate
586
+ if node.statements
587
+ indent do
588
+ visit node.statements
589
+ end
590
+ end
591
+ if node.subsequent
592
+ new_line
593
+ visit node.subsequent
594
+ end
595
+ unless IfNode === @stack[-2]
596
+ new_line
597
+ push "end"
576
598
  end
577
- end
578
- if node.subsequent
579
- new_line
580
- visit node.subsequent
581
- end
582
- unless IfNode === @stack[-2]
583
- new_line
584
- push "end"
585
599
  end
586
600
  end
587
601
 
@@ -1136,34 +1150,46 @@ module Refract
1136
1150
  end
1137
1151
 
1138
1152
  visit UnlessNode do |node|
1139
- push "unless "
1140
- visit node.predicate
1153
+ if node.inline
1154
+ visit node.statements
1155
+ push " unless "
1156
+ visit node.predicate
1157
+ else
1158
+ push "unless "
1159
+ visit node.predicate
1141
1160
 
1142
- if node.statements
1143
- indent do
1144
- visit node.statements
1161
+ if node.statements
1162
+ indent do
1163
+ visit node.statements
1164
+ end
1165
+ end
1166
+
1167
+ if node.else_clause
1168
+ new_line
1169
+ visit node.else_clause
1145
1170
  end
1146
- end
1147
1171
 
1148
- if node.else_clause
1149
1172
  new_line
1150
- visit node.else_clause
1173
+ push "end"
1151
1174
  end
1152
-
1153
- new_line
1154
- push "end"
1155
1175
  end
1156
1176
 
1157
1177
  visit UntilNode do |node|
1158
- push "until "
1159
- visit node.predicate
1160
- if node.statements
1161
- indent do
1162
- visit node.statements
1178
+ if node.inline
1179
+ visit node.statements
1180
+ push " until "
1181
+ visit node.predicate
1182
+ else
1183
+ push "until "
1184
+ visit node.predicate
1185
+ if node.statements
1186
+ indent do
1187
+ visit node.statements
1188
+ end
1163
1189
  end
1190
+ new_line
1191
+ push "end"
1164
1192
  end
1165
- new_line
1166
- push "end"
1167
1193
  end
1168
1194
 
1169
1195
  visit WhenNode do |node|
@@ -1176,15 +1202,21 @@ module Refract
1176
1202
  end
1177
1203
 
1178
1204
  visit WhileNode do |node|
1179
- push "while "
1180
- visit node.predicate
1181
- if node.statements
1182
- indent do
1183
- visit node.statements
1205
+ if node.inline
1206
+ visit node.statements
1207
+ push " while "
1208
+ visit node.predicate
1209
+ else
1210
+ push "while "
1211
+ visit node.predicate
1212
+ if node.statements
1213
+ indent do
1214
+ visit node.statements
1215
+ end
1184
1216
  end
1217
+ new_line
1218
+ push "end"
1185
1219
  end
1186
- new_line
1187
- push "end"
1188
1220
  end
1189
1221
 
1190
1222
  visit XStringNode do |node|
@@ -1218,7 +1250,8 @@ module Refract
1218
1250
  end
1219
1251
 
1220
1252
  private def new_line
1221
- push "\n#{"\t" * @indent}"
1253
+ @buffer << "\n#{"\t" * @indent}"
1254
+ @current_line += 1
1222
1255
  end
1223
1256
 
1224
1257
  private def indent