alex-rkelly 1.0.5

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 (201) hide show
  1. data/.gemtest +0 -0
  2. data/CHANGELOG.rdoc +21 -0
  3. data/Manifest.txt +199 -0
  4. data/README.rdoc +58 -0
  5. data/Rakefile +38 -0
  6. data/lib/parser.y +871 -0
  7. data/lib/rkelly/constants.rb +3 -0
  8. data/lib/rkelly/generated_parser.rb +3274 -0
  9. data/lib/rkelly/js/array.rb +15 -0
  10. data/lib/rkelly/js/base.rb +91 -0
  11. data/lib/rkelly/js/boolean.rb +21 -0
  12. data/lib/rkelly/js/function.rb +39 -0
  13. data/lib/rkelly/js/function_prototype.rb +15 -0
  14. data/lib/rkelly/js/global_object.rb +52 -0
  15. data/lib/rkelly/js/math.rb +10 -0
  16. data/lib/rkelly/js/nan.rb +18 -0
  17. data/lib/rkelly/js/number.rb +22 -0
  18. data/lib/rkelly/js/object.rb +30 -0
  19. data/lib/rkelly/js/object_prototype.rb +14 -0
  20. data/lib/rkelly/js/property.rb +20 -0
  21. data/lib/rkelly/js/scope.rb +6 -0
  22. data/lib/rkelly/js/string.rb +21 -0
  23. data/lib/rkelly/js.rb +14 -0
  24. data/lib/rkelly/lexeme.rb +18 -0
  25. data/lib/rkelly/nodes/binary_node.rb +18 -0
  26. data/lib/rkelly/nodes/bracket_accessor_node.rb +11 -0
  27. data/lib/rkelly/nodes/case_clause_node.rb +11 -0
  28. data/lib/rkelly/nodes/comma_node.rb +11 -0
  29. data/lib/rkelly/nodes/conditional_node.rb +11 -0
  30. data/lib/rkelly/nodes/dot_accessor_node.rb +11 -0
  31. data/lib/rkelly/nodes/for_in_node.rb +12 -0
  32. data/lib/rkelly/nodes/for_node.rb +13 -0
  33. data/lib/rkelly/nodes/function_call_node.rb +16 -0
  34. data/lib/rkelly/nodes/function_decl_node.rb +6 -0
  35. data/lib/rkelly/nodes/function_expr_node.rb +12 -0
  36. data/lib/rkelly/nodes/if_node.rb +12 -0
  37. data/lib/rkelly/nodes/label_node.rb +11 -0
  38. data/lib/rkelly/nodes/new_expr_node.rb +11 -0
  39. data/lib/rkelly/nodes/node.rb +88 -0
  40. data/lib/rkelly/nodes/not_strict_equal_node.rb +6 -0
  41. data/lib/rkelly/nodes/op_equal_node.rb +16 -0
  42. data/lib/rkelly/nodes/postfix_node.rb +11 -0
  43. data/lib/rkelly/nodes/prefix_node.rb +6 -0
  44. data/lib/rkelly/nodes/property_node.rb +13 -0
  45. data/lib/rkelly/nodes/resolve_node.rb +19 -0
  46. data/lib/rkelly/nodes/strict_equal_node.rb +6 -0
  47. data/lib/rkelly/nodes/try_node.rb +13 -0
  48. data/lib/rkelly/nodes/var_decl_node.rb +15 -0
  49. data/lib/rkelly/nodes.rb +25 -0
  50. data/lib/rkelly/parser.rb +104 -0
  51. data/lib/rkelly/runtime/ruby_function.rb +13 -0
  52. data/lib/rkelly/runtime/scope_chain.rb +57 -0
  53. data/lib/rkelly/runtime.rb +36 -0
  54. data/lib/rkelly/syntax_error.rb +4 -0
  55. data/lib/rkelly/token.rb +15 -0
  56. data/lib/rkelly/tokenizer.rb +152 -0
  57. data/lib/rkelly/visitable.rb +16 -0
  58. data/lib/rkelly/visitors/dot_visitor.rb +228 -0
  59. data/lib/rkelly/visitors/ecma_visitor.rb +322 -0
  60. data/lib/rkelly/visitors/enumerable_visitor.rb +18 -0
  61. data/lib/rkelly/visitors/evaluation_visitor.rb +419 -0
  62. data/lib/rkelly/visitors/function_visitor.rb +46 -0
  63. data/lib/rkelly/visitors/pointcut_visitor.rb +31 -0
  64. data/lib/rkelly/visitors/real_sexp_visitor.rb +16 -0
  65. data/lib/rkelly/visitors/sexp_visitor.rb +373 -0
  66. data/lib/rkelly/visitors/visitor.rb +136 -0
  67. data/lib/rkelly/visitors.rb +4 -0
  68. data/lib/rkelly.rb +14 -0
  69. data/test/ecma_script_test_case.rb +21 -0
  70. data/test/execute_test_case.rb +16 -0
  71. data/test/execution_contexts/test_10_1_3-1.rb +32 -0
  72. data/test/expressions/test_11_3_1.rb +64 -0
  73. data/test/expressions/test_11_3_2.rb +64 -0
  74. data/test/expressions/test_11_4_2.rb +13 -0
  75. data/test/expressions/test_11_4_3.rb +52 -0
  76. data/test/expressions/test_11_4_4.rb +68 -0
  77. data/test/expressions/test_11_4_5.rb +69 -0
  78. data/test/expressions/test_11_4_6.rb +88 -0
  79. data/test/expressions/test_11_4_8.rb +28 -0
  80. data/test/expressions/test_11_4_9.rb +103 -0
  81. data/test/expressions/test_11_5_1.rb +51 -0
  82. data/test/expressions/test_11_5_2.rb +80 -0
  83. data/test/expressions/test_11_5_3.rb +88 -0
  84. data/test/expressions/test_11_6_1-1.rb +19 -0
  85. data/test/expressions/test_11_9_1.rb +19 -0
  86. data/test/function/test_15_3_1_1-1.rb +34 -0
  87. data/test/global_object/test_15_1_1_1.rb +29 -0
  88. data/test/global_object/test_15_1_1_2.rb +17 -0
  89. data/test/global_object/test_15_1_1_3.rb +9 -0
  90. data/test/helper.rb +5 -0
  91. data/test/node_test_case.rb +11 -0
  92. data/test/object/test_15_2_1_1.rb +257 -0
  93. data/test/object/test_15_2_1_2.rb +21 -0
  94. data/test/object/test_15_2_2_1.rb +52 -0
  95. data/test/statements/test_12_5-1.rb +27 -0
  96. data/test/test_add_node.rb +8 -0
  97. data/test/test_arguments_node.rb +8 -0
  98. data/test/test_array_node.rb +9 -0
  99. data/test/test_assign_expr_node.rb +8 -0
  100. data/test/test_automatic_semicolon_insertion.rb +137 -0
  101. data/test/test_bit_and_node.rb +8 -0
  102. data/test/test_bit_or_node.rb +8 -0
  103. data/test/test_bit_x_or_node.rb +8 -0
  104. data/test/test_bitwise_not_node.rb +8 -0
  105. data/test/test_block_node.rb +14 -0
  106. data/test/test_bracket_accessor_node.rb +16 -0
  107. data/test/test_break_node.rb +11 -0
  108. data/test/test_case_block_node.rb +11 -0
  109. data/test/test_case_clause_node.rb +15 -0
  110. data/test/test_comma_node.rb +13 -0
  111. data/test/test_comments.rb +44 -0
  112. data/test/test_conditional_node.rb +17 -0
  113. data/test/test_const_statement_node.rb +14 -0
  114. data/test/test_continue_node.rb +11 -0
  115. data/test/test_delete_node.rb +8 -0
  116. data/test/test_divide_node.rb +8 -0
  117. data/test/test_do_while_node.rb +13 -0
  118. data/test/test_dot_accessor_node.rb +9 -0
  119. data/test/test_ecma_visitor.rb +210 -0
  120. data/test/test_element_node.rb +8 -0
  121. data/test/test_empty_statement_node.rb +8 -0
  122. data/test/test_equal_node.rb +8 -0
  123. data/test/test_evaluation_visitor.rb +66 -0
  124. data/test/test_expression_statement_node.rb +10 -0
  125. data/test/test_false_node.rb +8 -0
  126. data/test/test_for_in_node.rb +17 -0
  127. data/test/test_for_node.rb +24 -0
  128. data/test/test_function_body_node.rb +8 -0
  129. data/test/test_function_call_node.rb +10 -0
  130. data/test/test_function_decl_node.rb +16 -0
  131. data/test/test_function_expr_node.rb +16 -0
  132. data/test/test_function_visitor.rb +26 -0
  133. data/test/test_getter_property_node.rb +10 -0
  134. data/test/test_global_object.rb +49 -0
  135. data/test/test_greater_node.rb +8 -0
  136. data/test/test_greater_or_equal_node.rb +8 -0
  137. data/test/test_if_node.rb +17 -0
  138. data/test/test_in_node.rb +8 -0
  139. data/test/test_instance_of_node.rb +8 -0
  140. data/test/test_label_node.rb +13 -0
  141. data/test/test_left_shift_node.rb +8 -0
  142. data/test/test_less_node.rb +8 -0
  143. data/test/test_less_or_equal_node.rb +8 -0
  144. data/test/test_line_number.rb +23 -0
  145. data/test/test_logical_and_node.rb +8 -0
  146. data/test/test_logical_not_node.rb +8 -0
  147. data/test/test_logical_or_node.rb +8 -0
  148. data/test/test_modulus_node.rb +8 -0
  149. data/test/test_multiply_node.rb +8 -0
  150. data/test/test_new_expr_node.rb +9 -0
  151. data/test/test_not_equal_node.rb +8 -0
  152. data/test/test_not_strict_equal_node.rb +8 -0
  153. data/test/test_null_node.rb +8 -0
  154. data/test/test_number_node.rb +8 -0
  155. data/test/test_object_literal_node.rb +9 -0
  156. data/test/test_op_and_equal_node.rb +10 -0
  157. data/test/test_op_divide_equal_node.rb +10 -0
  158. data/test/test_op_equal_node.rb +10 -0
  159. data/test/test_op_l_shift_equal_node.rb +10 -0
  160. data/test/test_op_minus_equal_node.rb +10 -0
  161. data/test/test_op_mod_equal_node.rb +10 -0
  162. data/test/test_op_multiply_equal_node.rb +10 -0
  163. data/test/test_op_or_equal_node.rb +10 -0
  164. data/test/test_op_plus_equal_node.rb +10 -0
  165. data/test/test_op_r_shift_equal_node.rb +10 -0
  166. data/test/test_op_u_r_shift_equal_node.rb +10 -0
  167. data/test/test_op_x_or_equal_node.rb +10 -0
  168. data/test/test_parameter_node.rb +8 -0
  169. data/test/test_parser.rb +1361 -0
  170. data/test/test_pointcut_visitor.rb +34 -0
  171. data/test/test_postfix_node.rb +8 -0
  172. data/test/test_prefix_node.rb +8 -0
  173. data/test/test_property_node.rb +8 -0
  174. data/test/test_regexp_node.rb +8 -0
  175. data/test/test_resolve_node.rb +22 -0
  176. data/test/test_return_node.rb +11 -0
  177. data/test/test_right_shift_node.rb +8 -0
  178. data/test/test_rkelly.rb +19 -0
  179. data/test/test_runtime.rb +12 -0
  180. data/test/test_scope_chain.rb +50 -0
  181. data/test/test_setter_property_node.rb +10 -0
  182. data/test/test_source_elements.rb +9 -0
  183. data/test/test_strict_equal_node.rb +8 -0
  184. data/test/test_string_node.rb +8 -0
  185. data/test/test_subtract_node.rb +8 -0
  186. data/test/test_switch_node.rb +12 -0
  187. data/test/test_this_node.rb +8 -0
  188. data/test/test_throw_node.rb +7 -0
  189. data/test/test_tokenizer.rb +191 -0
  190. data/test/test_true_node.rb +8 -0
  191. data/test/test_try_node.rb +59 -0
  192. data/test/test_type_of_node.rb +8 -0
  193. data/test/test_unary_minus_node.rb +8 -0
  194. data/test/test_unary_plus_node.rb +8 -0
  195. data/test/test_unsigned_right_shift_node.rb +8 -0
  196. data/test/test_var_decl_node.rb +21 -0
  197. data/test/test_var_statement_node.rb +14 -0
  198. data/test/test_void_node.rb +8 -0
  199. data/test/test_while_node.rb +15 -0
  200. data/test/test_with_node.rb +8 -0
  201. metadata +410 -0
data/.gemtest ADDED
File without changes
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,21 @@
1
+ = RKelly CHANGELOG
2
+
3
+ === 1.0.3
4
+
5
+ * Bugfixes
6
+
7
+ * Fixed a typo in visitor.rb
8
+ * Fixed syntax error class
9
+ * Regex tonenization (thanks Josh Dzielak)
10
+
11
+ === 1.0.1
12
+
13
+ * Bugfixes
14
+
15
+ * Fixed nondeterministic file order loading issue.
16
+
17
+ === 0.0.1
18
+
19
+ * Added dynamic method assignment
20
+ * Birthday!
21
+
data/Manifest.txt ADDED
@@ -0,0 +1,199 @@
1
+ CHANGELOG.rdoc
2
+ Manifest.txt
3
+ README.rdoc
4
+ Rakefile
5
+ lib/parser.y
6
+ lib/rkelly.rb
7
+ lib/rkelly/constants.rb
8
+ lib/rkelly/generated_parser.rb
9
+ lib/rkelly/js.rb
10
+ lib/rkelly/js/array.rb
11
+ lib/rkelly/js/base.rb
12
+ lib/rkelly/js/boolean.rb
13
+ lib/rkelly/js/function.rb
14
+ lib/rkelly/js/function_prototype.rb
15
+ lib/rkelly/js/global_object.rb
16
+ lib/rkelly/js/math.rb
17
+ lib/rkelly/js/nan.rb
18
+ lib/rkelly/js/number.rb
19
+ lib/rkelly/js/object.rb
20
+ lib/rkelly/js/object_prototype.rb
21
+ lib/rkelly/js/property.rb
22
+ lib/rkelly/js/scope.rb
23
+ lib/rkelly/js/string.rb
24
+ lib/rkelly/lexeme.rb
25
+ lib/rkelly/nodes.rb
26
+ lib/rkelly/nodes/binary_node.rb
27
+ lib/rkelly/nodes/bracket_accessor_node.rb
28
+ lib/rkelly/nodes/case_clause_node.rb
29
+ lib/rkelly/nodes/comma_node.rb
30
+ lib/rkelly/nodes/conditional_node.rb
31
+ lib/rkelly/nodes/dot_accessor_node.rb
32
+ lib/rkelly/nodes/for_in_node.rb
33
+ lib/rkelly/nodes/for_node.rb
34
+ lib/rkelly/nodes/function_call_node.rb
35
+ lib/rkelly/nodes/function_decl_node.rb
36
+ lib/rkelly/nodes/function_expr_node.rb
37
+ lib/rkelly/nodes/if_node.rb
38
+ lib/rkelly/nodes/label_node.rb
39
+ lib/rkelly/nodes/new_expr_node.rb
40
+ lib/rkelly/nodes/node.rb
41
+ lib/rkelly/nodes/not_strict_equal_node.rb
42
+ lib/rkelly/nodes/op_equal_node.rb
43
+ lib/rkelly/nodes/postfix_node.rb
44
+ lib/rkelly/nodes/prefix_node.rb
45
+ lib/rkelly/nodes/property_node.rb
46
+ lib/rkelly/nodes/resolve_node.rb
47
+ lib/rkelly/nodes/strict_equal_node.rb
48
+ lib/rkelly/nodes/try_node.rb
49
+ lib/rkelly/nodes/var_decl_node.rb
50
+ lib/rkelly/parser.rb
51
+ lib/rkelly/runtime.rb
52
+ lib/rkelly/runtime/ruby_function.rb
53
+ lib/rkelly/runtime/scope_chain.rb
54
+ lib/rkelly/syntax_error.rb
55
+ lib/rkelly/token.rb
56
+ lib/rkelly/tokenizer.rb
57
+ lib/rkelly/visitable.rb
58
+ lib/rkelly/visitors.rb
59
+ lib/rkelly/visitors/dot_visitor.rb
60
+ lib/rkelly/visitors/ecma_visitor.rb
61
+ lib/rkelly/visitors/enumerable_visitor.rb
62
+ lib/rkelly/visitors/evaluation_visitor.rb
63
+ lib/rkelly/visitors/function_visitor.rb
64
+ lib/rkelly/visitors/pointcut_visitor.rb
65
+ lib/rkelly/visitors/real_sexp_visitor.rb
66
+ lib/rkelly/visitors/sexp_visitor.rb
67
+ lib/rkelly/visitors/visitor.rb
68
+ test/ecma_script_test_case.rb
69
+ test/execute_test_case.rb
70
+ test/execution_contexts/test_10_1_3-1.rb
71
+ test/expressions/test_11_3_1.rb
72
+ test/expressions/test_11_3_2.rb
73
+ test/expressions/test_11_4_2.rb
74
+ test/expressions/test_11_4_3.rb
75
+ test/expressions/test_11_4_4.rb
76
+ test/expressions/test_11_4_5.rb
77
+ test/expressions/test_11_4_6.rb
78
+ test/expressions/test_11_4_8.rb
79
+ test/expressions/test_11_4_9.rb
80
+ test/expressions/test_11_5_1.rb
81
+ test/expressions/test_11_5_2.rb
82
+ test/expressions/test_11_5_3.rb
83
+ test/expressions/test_11_6_1-1.rb
84
+ test/expressions/test_11_9_1.rb
85
+ test/function/test_15_3_1_1-1.rb
86
+ test/global_object/test_15_1_1_1.rb
87
+ test/global_object/test_15_1_1_2.rb
88
+ test/global_object/test_15_1_1_3.rb
89
+ test/helper.rb
90
+ test/node_test_case.rb
91
+ test/object/test_15_2_1_1.rb
92
+ test/object/test_15_2_1_2.rb
93
+ test/object/test_15_2_2_1.rb
94
+ test/statements/test_12_5-1.rb
95
+ test/test_add_node.rb
96
+ test/test_arguments_node.rb
97
+ test/test_array_node.rb
98
+ test/test_assign_expr_node.rb
99
+ test/test_automatic_semicolon_insertion.rb
100
+ test/test_bit_and_node.rb
101
+ test/test_bit_or_node.rb
102
+ test/test_bit_x_or_node.rb
103
+ test/test_bitwise_not_node.rb
104
+ test/test_block_node.rb
105
+ test/test_bracket_accessor_node.rb
106
+ test/test_break_node.rb
107
+ test/test_case_block_node.rb
108
+ test/test_case_clause_node.rb
109
+ test/test_comma_node.rb
110
+ test/test_comments.rb
111
+ test/test_conditional_node.rb
112
+ test/test_const_statement_node.rb
113
+ test/test_continue_node.rb
114
+ test/test_delete_node.rb
115
+ test/test_divide_node.rb
116
+ test/test_do_while_node.rb
117
+ test/test_dot_accessor_node.rb
118
+ test/test_ecma_visitor.rb
119
+ test/test_element_node.rb
120
+ test/test_empty_statement_node.rb
121
+ test/test_equal_node.rb
122
+ test/test_evaluation_visitor.rb
123
+ test/test_expression_statement_node.rb
124
+ test/test_false_node.rb
125
+ test/test_for_in_node.rb
126
+ test/test_for_node.rb
127
+ test/test_function_body_node.rb
128
+ test/test_function_call_node.rb
129
+ test/test_function_decl_node.rb
130
+ test/test_function_expr_node.rb
131
+ test/test_function_visitor.rb
132
+ test/test_getter_property_node.rb
133
+ test/test_global_object.rb
134
+ test/test_greater_node.rb
135
+ test/test_greater_or_equal_node.rb
136
+ test/test_if_node.rb
137
+ test/test_in_node.rb
138
+ test/test_instance_of_node.rb
139
+ test/test_label_node.rb
140
+ test/test_left_shift_node.rb
141
+ test/test_less_node.rb
142
+ test/test_less_or_equal_node.rb
143
+ test/test_line_number.rb
144
+ test/test_logical_and_node.rb
145
+ test/test_logical_not_node.rb
146
+ test/test_logical_or_node.rb
147
+ test/test_modulus_node.rb
148
+ test/test_multiply_node.rb
149
+ test/test_new_expr_node.rb
150
+ test/test_not_equal_node.rb
151
+ test/test_not_strict_equal_node.rb
152
+ test/test_null_node.rb
153
+ test/test_number_node.rb
154
+ test/test_object_literal_node.rb
155
+ test/test_op_and_equal_node.rb
156
+ test/test_op_divide_equal_node.rb
157
+ test/test_op_equal_node.rb
158
+ test/test_op_l_shift_equal_node.rb
159
+ test/test_op_minus_equal_node.rb
160
+ test/test_op_mod_equal_node.rb
161
+ test/test_op_multiply_equal_node.rb
162
+ test/test_op_or_equal_node.rb
163
+ test/test_op_plus_equal_node.rb
164
+ test/test_op_r_shift_equal_node.rb
165
+ test/test_op_u_r_shift_equal_node.rb
166
+ test/test_op_x_or_equal_node.rb
167
+ test/test_parameter_node.rb
168
+ test/test_parser.rb
169
+ test/test_pointcut_visitor.rb
170
+ test/test_postfix_node.rb
171
+ test/test_prefix_node.rb
172
+ test/test_property_node.rb
173
+ test/test_regexp_node.rb
174
+ test/test_resolve_node.rb
175
+ test/test_return_node.rb
176
+ test/test_right_shift_node.rb
177
+ test/test_rkelly.rb
178
+ test/test_runtime.rb
179
+ test/test_scope_chain.rb
180
+ test/test_setter_property_node.rb
181
+ test/test_source_elements.rb
182
+ test/test_strict_equal_node.rb
183
+ test/test_string_node.rb
184
+ test/test_subtract_node.rb
185
+ test/test_switch_node.rb
186
+ test/test_this_node.rb
187
+ test/test_throw_node.rb
188
+ test/test_tokenizer.rb
189
+ test/test_true_node.rb
190
+ test/test_try_node.rb
191
+ test/test_type_of_node.rb
192
+ test/test_unary_minus_node.rb
193
+ test/test_unary_plus_node.rb
194
+ test/test_unsigned_right_shift_node.rb
195
+ test/test_var_decl_node.rb
196
+ test/test_var_statement_node.rb
197
+ test/test_void_node.rb
198
+ test/test_while_node.rb
199
+ test/test_with_node.rb
data/README.rdoc ADDED
@@ -0,0 +1,58 @@
1
+ = RKelly
2
+
3
+ * http://rkelly.rubyforge.org/
4
+
5
+ == DESCRIPTION
6
+
7
+ The RKelly library will parse JavaScript and return a parse tree.
8
+
9
+ == Example
10
+
11
+ ##
12
+ # Iterate over and modify a JavaScript AST. Then print the modified
13
+ # AST as JavaScript.
14
+ require 'rkelly'
15
+
16
+ parser = RKelly::Parser.new
17
+ ast = parser.parse(
18
+ "for(var i = 0; i < 10; i++) { var x = 5 + 5; }"
19
+ )
20
+
21
+ ast.each do |node|
22
+ node.value = 'hello' if node.value == 'i'
23
+ node.name = 'hello' if node.respond_to?(:name) && node.name == 'i'
24
+ end
25
+ puts ast.to_ecma # => awesome javascript
26
+
27
+ == Acknowledgments
28
+
29
+ The original javascript parser was was taken from rbnarcissus written by
30
+ Paul Sowden. Thanks Paul!
31
+
32
+ http://idontsmoke.co.uk/2005/rbnarcissus/
33
+
34
+ The current parser was ported from WebKit. Thank you WebKit team!
35
+
36
+ == License
37
+
38
+ The MIT License
39
+
40
+ Copyright (c) 2007, 2008, 2009 Aaron Patterson, John Barnette
41
+
42
+ Permission is hereby granted, free of charge, to any person obtaining a copy
43
+ of this software and associated documentation files (the "Software"), to deal
44
+ in the Software without restriction, including without limitation the rights
45
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
46
+ copies of the Software, and to permit persons to whom the Software is
47
+ furnished to do so, subject to the following conditions:
48
+
49
+ The above copyright notice and this permission notice shall be included in
50
+ all copies or substantial portions of the Software.
51
+
52
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
53
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
54
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
55
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
56
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
57
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
58
+ THE SOFTWARE
data/Rakefile ADDED
@@ -0,0 +1,38 @@
1
+ require 'rubygems'
2
+ require 'hoe'
3
+
4
+ Hoe.plugin :gemspec # `gem install hoe-gemspec`
5
+ Hoe.plugin :git # `gem install hoe-git`
6
+
7
+ GENERATED_PARSER = "lib/rkelly/generated_parser.rb"
8
+
9
+ HOE = Hoe.spec('alex-rkelly') do |p|
10
+ developer('Aaron Patterson', 'aaron.patterson@gmail.com')
11
+ self.readme_file = 'README.rdoc'
12
+ self.history_file = 'CHANGELOG.rdoc'
13
+ self.extra_rdoc_files = FileList['*.rdoc']
14
+ self.clean_globs = [GENERATED_PARSER]
15
+ end
16
+
17
+ file GENERATED_PARSER => "lib/parser.y" do |t|
18
+ if ENV['DEBUG']
19
+ sh "racc -g -v -o #{t.name} #{t.prerequisites.first}"
20
+ else
21
+ sh "racc -o #{t.name} #{t.prerequisites.first}"
22
+ end
23
+ end
24
+
25
+ task :parser => GENERATED_PARSER
26
+
27
+ # make sure the parser's up-to-date when we test
28
+ Rake::Task[:test].prerequisites << :parser
29
+ Rake::Task[:check_manifest].prerequisites << :parser
30
+
31
+ namespace :gem do
32
+ task :spec do
33
+ File.open("#{HOE.name}.gemspec", 'w') do |f|
34
+ HOE.spec.version = "#{HOE.version}.#{Time.now.strftime("%Y%m%d%H%M%S")}"
35
+ f.write(HOE.spec.to_ruby)
36
+ end
37
+ end
38
+ end