rkelly-remix 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/CHANGELOG.rdoc +9 -0
- data/Manifest.txt +203 -0
- data/README.rdoc +58 -0
- data/Rakefile +39 -0
- data/lib/parser.y +871 -0
- data/lib/rkelly/char_pos.rb +35 -0
- data/lib/rkelly/char_range.rb +31 -0
- data/lib/rkelly/constants.rb +3 -0
- data/lib/rkelly/generated_parser.rb +3217 -0
- data/lib/rkelly/js/array.rb +15 -0
- data/lib/rkelly/js/base.rb +91 -0
- data/lib/rkelly/js/boolean.rb +21 -0
- data/lib/rkelly/js/function.rb +39 -0
- data/lib/rkelly/js/function_prototype.rb +15 -0
- data/lib/rkelly/js/global_object.rb +52 -0
- data/lib/rkelly/js/math.rb +10 -0
- data/lib/rkelly/js/nan.rb +18 -0
- data/lib/rkelly/js/number.rb +22 -0
- data/lib/rkelly/js/object.rb +30 -0
- data/lib/rkelly/js/object_prototype.rb +14 -0
- data/lib/rkelly/js/property.rb +20 -0
- data/lib/rkelly/js/scope.rb +6 -0
- data/lib/rkelly/js/string.rb +21 -0
- data/lib/rkelly/js.rb +14 -0
- data/lib/rkelly/lexeme.rb +18 -0
- data/lib/rkelly/nodes/binary_node.rb +18 -0
- data/lib/rkelly/nodes/bracket_accessor_node.rb +11 -0
- data/lib/rkelly/nodes/case_clause_node.rb +11 -0
- data/lib/rkelly/nodes/comma_node.rb +11 -0
- data/lib/rkelly/nodes/conditional_node.rb +11 -0
- data/lib/rkelly/nodes/dot_accessor_node.rb +11 -0
- data/lib/rkelly/nodes/for_in_node.rb +12 -0
- data/lib/rkelly/nodes/for_node.rb +13 -0
- data/lib/rkelly/nodes/function_call_node.rb +16 -0
- data/lib/rkelly/nodes/function_decl_node.rb +6 -0
- data/lib/rkelly/nodes/function_expr_node.rb +12 -0
- data/lib/rkelly/nodes/if_node.rb +12 -0
- data/lib/rkelly/nodes/label_node.rb +11 -0
- data/lib/rkelly/nodes/new_expr_node.rb +11 -0
- data/lib/rkelly/nodes/node.rb +94 -0
- data/lib/rkelly/nodes/not_strict_equal_node.rb +6 -0
- data/lib/rkelly/nodes/op_equal_node.rb +16 -0
- data/lib/rkelly/nodes/postfix_node.rb +11 -0
- data/lib/rkelly/nodes/prefix_node.rb +6 -0
- data/lib/rkelly/nodes/property_node.rb +13 -0
- data/lib/rkelly/nodes/resolve_node.rb +19 -0
- data/lib/rkelly/nodes/strict_equal_node.rb +6 -0
- data/lib/rkelly/nodes/try_node.rb +13 -0
- data/lib/rkelly/nodes/var_decl_node.rb +15 -0
- data/lib/rkelly/nodes.rb +25 -0
- data/lib/rkelly/parser.rb +89 -0
- data/lib/rkelly/runtime/ruby_function.rb +13 -0
- data/lib/rkelly/runtime/scope_chain.rb +57 -0
- data/lib/rkelly/runtime.rb +36 -0
- data/lib/rkelly/syntax_error.rb +4 -0
- data/lib/rkelly/token.rb +24 -0
- data/lib/rkelly/tokenizer.rb +193 -0
- data/lib/rkelly/visitable.rb +16 -0
- data/lib/rkelly/visitors/dot_visitor.rb +228 -0
- data/lib/rkelly/visitors/ecma_visitor.rb +322 -0
- data/lib/rkelly/visitors/enumerable_visitor.rb +18 -0
- data/lib/rkelly/visitors/evaluation_visitor.rb +419 -0
- data/lib/rkelly/visitors/function_visitor.rb +46 -0
- data/lib/rkelly/visitors/pointcut_visitor.rb +31 -0
- data/lib/rkelly/visitors/real_sexp_visitor.rb +16 -0
- data/lib/rkelly/visitors/sexp_visitor.rb +373 -0
- data/lib/rkelly/visitors/visitor.rb +136 -0
- data/lib/rkelly/visitors.rb +4 -0
- data/lib/rkelly.rb +14 -0
- data/test/ecma_script_test_case.rb +21 -0
- data/test/execute_test_case.rb +16 -0
- data/test/execution_contexts/test_10_1_3-1.rb +32 -0
- data/test/expressions/test_11_3_1.rb +64 -0
- data/test/expressions/test_11_3_2.rb +64 -0
- data/test/expressions/test_11_4_2.rb +13 -0
- data/test/expressions/test_11_4_3.rb +52 -0
- data/test/expressions/test_11_4_4.rb +68 -0
- data/test/expressions/test_11_4_5.rb +69 -0
- data/test/expressions/test_11_4_6.rb +88 -0
- data/test/expressions/test_11_4_8.rb +28 -0
- data/test/expressions/test_11_4_9.rb +103 -0
- data/test/expressions/test_11_5_1.rb +51 -0
- data/test/expressions/test_11_5_2.rb +80 -0
- data/test/expressions/test_11_5_3.rb +88 -0
- data/test/expressions/test_11_6_1-1.rb +19 -0
- data/test/expressions/test_11_9_1.rb +19 -0
- data/test/function/test_15_3_1_1-1.rb +34 -0
- data/test/global_object/test_15_1_1_1.rb +29 -0
- data/test/global_object/test_15_1_1_2.rb +17 -0
- data/test/global_object/test_15_1_1_3.rb +9 -0
- data/test/helper.rb +5 -0
- data/test/node_test_case.rb +11 -0
- data/test/object/test_15_2_1_1.rb +257 -0
- data/test/object/test_15_2_1_2.rb +21 -0
- data/test/object/test_15_2_2_1.rb +52 -0
- data/test/statements/test_12_5-1.rb +27 -0
- data/test/test_add_node.rb +8 -0
- data/test/test_arguments_node.rb +8 -0
- data/test/test_array_node.rb +9 -0
- data/test/test_assign_expr_node.rb +8 -0
- data/test/test_automatic_semicolon_insertion.rb +137 -0
- data/test/test_bit_and_node.rb +8 -0
- data/test/test_bit_or_node.rb +8 -0
- data/test/test_bit_x_or_node.rb +8 -0
- data/test/test_bitwise_not_node.rb +8 -0
- data/test/test_block_node.rb +14 -0
- data/test/test_bracket_accessor_node.rb +16 -0
- data/test/test_break_node.rb +11 -0
- data/test/test_case_block_node.rb +11 -0
- data/test/test_case_clause_node.rb +15 -0
- data/test/test_char_pos.rb +39 -0
- data/test/test_char_range.rb +29 -0
- data/test/test_comma_node.rb +13 -0
- data/test/test_comments.rb +45 -0
- data/test/test_conditional_node.rb +17 -0
- data/test/test_const_statement_node.rb +14 -0
- data/test/test_continue_node.rb +11 -0
- data/test/test_delete_node.rb +8 -0
- data/test/test_divide_node.rb +8 -0
- data/test/test_do_while_node.rb +13 -0
- data/test/test_dot_accessor_node.rb +9 -0
- data/test/test_ecma_visitor.rb +210 -0
- data/test/test_element_node.rb +8 -0
- data/test/test_empty_statement_node.rb +8 -0
- data/test/test_equal_node.rb +8 -0
- data/test/test_evaluation_visitor.rb +66 -0
- data/test/test_expression_statement_node.rb +10 -0
- data/test/test_false_node.rb +8 -0
- data/test/test_for_in_node.rb +17 -0
- data/test/test_for_node.rb +24 -0
- data/test/test_function_body_node.rb +8 -0
- data/test/test_function_call_node.rb +10 -0
- data/test/test_function_decl_node.rb +16 -0
- data/test/test_function_expr_node.rb +16 -0
- data/test/test_function_visitor.rb +26 -0
- data/test/test_getter_property_node.rb +10 -0
- data/test/test_global_object.rb +49 -0
- data/test/test_greater_node.rb +8 -0
- data/test/test_greater_or_equal_node.rb +8 -0
- data/test/test_if_node.rb +17 -0
- data/test/test_in_node.rb +8 -0
- data/test/test_instance_of_node.rb +8 -0
- data/test/test_label_node.rb +13 -0
- data/test/test_left_shift_node.rb +8 -0
- data/test/test_less_node.rb +8 -0
- data/test/test_less_or_equal_node.rb +8 -0
- data/test/test_line_number.rb +81 -0
- data/test/test_logical_and_node.rb +8 -0
- data/test/test_logical_not_node.rb +8 -0
- data/test/test_logical_or_node.rb +8 -0
- data/test/test_modulus_node.rb +8 -0
- data/test/test_multiply_node.rb +8 -0
- data/test/test_new_expr_node.rb +9 -0
- data/test/test_not_equal_node.rb +8 -0
- data/test/test_not_strict_equal_node.rb +8 -0
- data/test/test_null_node.rb +8 -0
- data/test/test_number_node.rb +8 -0
- data/test/test_object_literal_node.rb +9 -0
- data/test/test_op_and_equal_node.rb +10 -0
- data/test/test_op_divide_equal_node.rb +10 -0
- data/test/test_op_equal_node.rb +10 -0
- data/test/test_op_l_shift_equal_node.rb +10 -0
- data/test/test_op_minus_equal_node.rb +10 -0
- data/test/test_op_mod_equal_node.rb +10 -0
- data/test/test_op_multiply_equal_node.rb +10 -0
- data/test/test_op_or_equal_node.rb +10 -0
- data/test/test_op_plus_equal_node.rb +10 -0
- data/test/test_op_r_shift_equal_node.rb +10 -0
- data/test/test_op_u_r_shift_equal_node.rb +10 -0
- data/test/test_op_x_or_equal_node.rb +10 -0
- data/test/test_parameter_node.rb +8 -0
- data/test/test_parser.rb +1361 -0
- data/test/test_pointcut_visitor.rb +34 -0
- data/test/test_postfix_node.rb +8 -0
- data/test/test_prefix_node.rb +8 -0
- data/test/test_property_node.rb +8 -0
- data/test/test_regexp_node.rb +8 -0
- data/test/test_resolve_node.rb +22 -0
- data/test/test_return_node.rb +11 -0
- data/test/test_right_shift_node.rb +8 -0
- data/test/test_rkelly.rb +19 -0
- data/test/test_runtime.rb +12 -0
- data/test/test_scope_chain.rb +50 -0
- data/test/test_setter_property_node.rb +10 -0
- data/test/test_source_elements.rb +9 -0
- data/test/test_strict_equal_node.rb +8 -0
- data/test/test_string_node.rb +8 -0
- data/test/test_subtract_node.rb +8 -0
- data/test/test_switch_node.rb +12 -0
- data/test/test_this_node.rb +8 -0
- data/test/test_throw_node.rb +7 -0
- data/test/test_tokenizer.rb +209 -0
- data/test/test_true_node.rb +8 -0
- data/test/test_try_node.rb +59 -0
- data/test/test_type_of_node.rb +8 -0
- data/test/test_unary_minus_node.rb +8 -0
- data/test/test_unary_plus_node.rb +8 -0
- data/test/test_unsigned_right_shift_node.rb +8 -0
- data/test/test_var_decl_node.rb +21 -0
- data/test/test_var_statement_node.rb +14 -0
- data/test/test_void_node.rb +8 -0
- data/test/test_while_node.rb +15 -0
- data/test/test_with_node.rb +8 -0
- metadata +432 -0
data/.gemtest
ADDED
File without changes
|
data/CHANGELOG.rdoc
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
= RKelly-Remix CHANGELOG
|
2
|
+
|
3
|
+
=== 0.0.1
|
4
|
+
|
5
|
+
* A fork of RKelly
|
6
|
+
* 10x speedup of Tokenizer.
|
7
|
+
* Full begin/end line/char info on each node.
|
8
|
+
* List all comment nodes in root node instead of attempting to associate them with syntax nodes and failing at it.
|
9
|
+
* Recognize /[/]/ as valid JS regex.
|
data/Manifest.txt
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
CHANGELOG.rdoc
|
2
|
+
Manifest.txt
|
3
|
+
README.rdoc
|
4
|
+
Rakefile
|
5
|
+
lib/parser.y
|
6
|
+
lib/rkelly.rb
|
7
|
+
lib/rkelly/char_pos.rb
|
8
|
+
lib/rkelly/char_range.rb
|
9
|
+
lib/rkelly/constants.rb
|
10
|
+
lib/rkelly/generated_parser.rb
|
11
|
+
lib/rkelly/js.rb
|
12
|
+
lib/rkelly/js/array.rb
|
13
|
+
lib/rkelly/js/base.rb
|
14
|
+
lib/rkelly/js/boolean.rb
|
15
|
+
lib/rkelly/js/function.rb
|
16
|
+
lib/rkelly/js/function_prototype.rb
|
17
|
+
lib/rkelly/js/global_object.rb
|
18
|
+
lib/rkelly/js/math.rb
|
19
|
+
lib/rkelly/js/nan.rb
|
20
|
+
lib/rkelly/js/number.rb
|
21
|
+
lib/rkelly/js/object.rb
|
22
|
+
lib/rkelly/js/object_prototype.rb
|
23
|
+
lib/rkelly/js/property.rb
|
24
|
+
lib/rkelly/js/scope.rb
|
25
|
+
lib/rkelly/js/string.rb
|
26
|
+
lib/rkelly/lexeme.rb
|
27
|
+
lib/rkelly/nodes.rb
|
28
|
+
lib/rkelly/nodes/binary_node.rb
|
29
|
+
lib/rkelly/nodes/bracket_accessor_node.rb
|
30
|
+
lib/rkelly/nodes/case_clause_node.rb
|
31
|
+
lib/rkelly/nodes/comma_node.rb
|
32
|
+
lib/rkelly/nodes/conditional_node.rb
|
33
|
+
lib/rkelly/nodes/dot_accessor_node.rb
|
34
|
+
lib/rkelly/nodes/for_in_node.rb
|
35
|
+
lib/rkelly/nodes/for_node.rb
|
36
|
+
lib/rkelly/nodes/function_call_node.rb
|
37
|
+
lib/rkelly/nodes/function_decl_node.rb
|
38
|
+
lib/rkelly/nodes/function_expr_node.rb
|
39
|
+
lib/rkelly/nodes/if_node.rb
|
40
|
+
lib/rkelly/nodes/label_node.rb
|
41
|
+
lib/rkelly/nodes/new_expr_node.rb
|
42
|
+
lib/rkelly/nodes/node.rb
|
43
|
+
lib/rkelly/nodes/not_strict_equal_node.rb
|
44
|
+
lib/rkelly/nodes/op_equal_node.rb
|
45
|
+
lib/rkelly/nodes/postfix_node.rb
|
46
|
+
lib/rkelly/nodes/prefix_node.rb
|
47
|
+
lib/rkelly/nodes/property_node.rb
|
48
|
+
lib/rkelly/nodes/resolve_node.rb
|
49
|
+
lib/rkelly/nodes/strict_equal_node.rb
|
50
|
+
lib/rkelly/nodes/try_node.rb
|
51
|
+
lib/rkelly/nodes/var_decl_node.rb
|
52
|
+
lib/rkelly/parser.rb
|
53
|
+
lib/rkelly/runtime.rb
|
54
|
+
lib/rkelly/runtime/ruby_function.rb
|
55
|
+
lib/rkelly/runtime/scope_chain.rb
|
56
|
+
lib/rkelly/syntax_error.rb
|
57
|
+
lib/rkelly/token.rb
|
58
|
+
lib/rkelly/tokenizer.rb
|
59
|
+
lib/rkelly/visitable.rb
|
60
|
+
lib/rkelly/visitors.rb
|
61
|
+
lib/rkelly/visitors/dot_visitor.rb
|
62
|
+
lib/rkelly/visitors/ecma_visitor.rb
|
63
|
+
lib/rkelly/visitors/enumerable_visitor.rb
|
64
|
+
lib/rkelly/visitors/evaluation_visitor.rb
|
65
|
+
lib/rkelly/visitors/function_visitor.rb
|
66
|
+
lib/rkelly/visitors/pointcut_visitor.rb
|
67
|
+
lib/rkelly/visitors/real_sexp_visitor.rb
|
68
|
+
lib/rkelly/visitors/sexp_visitor.rb
|
69
|
+
lib/rkelly/visitors/visitor.rb
|
70
|
+
test/ecma_script_test_case.rb
|
71
|
+
test/execute_test_case.rb
|
72
|
+
test/execution_contexts/test_10_1_3-1.rb
|
73
|
+
test/expressions/test_11_3_1.rb
|
74
|
+
test/expressions/test_11_3_2.rb
|
75
|
+
test/expressions/test_11_4_2.rb
|
76
|
+
test/expressions/test_11_4_3.rb
|
77
|
+
test/expressions/test_11_4_4.rb
|
78
|
+
test/expressions/test_11_4_5.rb
|
79
|
+
test/expressions/test_11_4_6.rb
|
80
|
+
test/expressions/test_11_4_8.rb
|
81
|
+
test/expressions/test_11_4_9.rb
|
82
|
+
test/expressions/test_11_5_1.rb
|
83
|
+
test/expressions/test_11_5_2.rb
|
84
|
+
test/expressions/test_11_5_3.rb
|
85
|
+
test/expressions/test_11_6_1-1.rb
|
86
|
+
test/expressions/test_11_9_1.rb
|
87
|
+
test/function/test_15_3_1_1-1.rb
|
88
|
+
test/global_object/test_15_1_1_1.rb
|
89
|
+
test/global_object/test_15_1_1_2.rb
|
90
|
+
test/global_object/test_15_1_1_3.rb
|
91
|
+
test/helper.rb
|
92
|
+
test/node_test_case.rb
|
93
|
+
test/object/test_15_2_1_1.rb
|
94
|
+
test/object/test_15_2_1_2.rb
|
95
|
+
test/object/test_15_2_2_1.rb
|
96
|
+
test/statements/test_12_5-1.rb
|
97
|
+
test/test_add_node.rb
|
98
|
+
test/test_arguments_node.rb
|
99
|
+
test/test_array_node.rb
|
100
|
+
test/test_assign_expr_node.rb
|
101
|
+
test/test_automatic_semicolon_insertion.rb
|
102
|
+
test/test_bit_and_node.rb
|
103
|
+
test/test_bit_or_node.rb
|
104
|
+
test/test_bit_x_or_node.rb
|
105
|
+
test/test_bitwise_not_node.rb
|
106
|
+
test/test_block_node.rb
|
107
|
+
test/test_bracket_accessor_node.rb
|
108
|
+
test/test_break_node.rb
|
109
|
+
test/test_case_block_node.rb
|
110
|
+
test/test_case_clause_node.rb
|
111
|
+
test/test_char_pos.rb
|
112
|
+
test/test_char_range.rb
|
113
|
+
test/test_comma_node.rb
|
114
|
+
test/test_comments.rb
|
115
|
+
test/test_conditional_node.rb
|
116
|
+
test/test_const_statement_node.rb
|
117
|
+
test/test_continue_node.rb
|
118
|
+
test/test_delete_node.rb
|
119
|
+
test/test_divide_node.rb
|
120
|
+
test/test_do_while_node.rb
|
121
|
+
test/test_dot_accessor_node.rb
|
122
|
+
test/test_ecma_visitor.rb
|
123
|
+
test/test_element_node.rb
|
124
|
+
test/test_empty_statement_node.rb
|
125
|
+
test/test_equal_node.rb
|
126
|
+
test/test_evaluation_visitor.rb
|
127
|
+
test/test_expression_statement_node.rb
|
128
|
+
test/test_false_node.rb
|
129
|
+
test/test_for_in_node.rb
|
130
|
+
test/test_for_node.rb
|
131
|
+
test/test_function_body_node.rb
|
132
|
+
test/test_function_call_node.rb
|
133
|
+
test/test_function_decl_node.rb
|
134
|
+
test/test_function_expr_node.rb
|
135
|
+
test/test_function_visitor.rb
|
136
|
+
test/test_getter_property_node.rb
|
137
|
+
test/test_global_object.rb
|
138
|
+
test/test_greater_node.rb
|
139
|
+
test/test_greater_or_equal_node.rb
|
140
|
+
test/test_if_node.rb
|
141
|
+
test/test_in_node.rb
|
142
|
+
test/test_instance_of_node.rb
|
143
|
+
test/test_label_node.rb
|
144
|
+
test/test_left_shift_node.rb
|
145
|
+
test/test_less_node.rb
|
146
|
+
test/test_less_or_equal_node.rb
|
147
|
+
test/test_line_number.rb
|
148
|
+
test/test_logical_and_node.rb
|
149
|
+
test/test_logical_not_node.rb
|
150
|
+
test/test_logical_or_node.rb
|
151
|
+
test/test_modulus_node.rb
|
152
|
+
test/test_multiply_node.rb
|
153
|
+
test/test_new_expr_node.rb
|
154
|
+
test/test_not_equal_node.rb
|
155
|
+
test/test_not_strict_equal_node.rb
|
156
|
+
test/test_null_node.rb
|
157
|
+
test/test_number_node.rb
|
158
|
+
test/test_object_literal_node.rb
|
159
|
+
test/test_op_and_equal_node.rb
|
160
|
+
test/test_op_divide_equal_node.rb
|
161
|
+
test/test_op_equal_node.rb
|
162
|
+
test/test_op_l_shift_equal_node.rb
|
163
|
+
test/test_op_minus_equal_node.rb
|
164
|
+
test/test_op_mod_equal_node.rb
|
165
|
+
test/test_op_multiply_equal_node.rb
|
166
|
+
test/test_op_or_equal_node.rb
|
167
|
+
test/test_op_plus_equal_node.rb
|
168
|
+
test/test_op_r_shift_equal_node.rb
|
169
|
+
test/test_op_u_r_shift_equal_node.rb
|
170
|
+
test/test_op_x_or_equal_node.rb
|
171
|
+
test/test_parameter_node.rb
|
172
|
+
test/test_parser.rb
|
173
|
+
test/test_pointcut_visitor.rb
|
174
|
+
test/test_postfix_node.rb
|
175
|
+
test/test_prefix_node.rb
|
176
|
+
test/test_property_node.rb
|
177
|
+
test/test_regexp_node.rb
|
178
|
+
test/test_resolve_node.rb
|
179
|
+
test/test_return_node.rb
|
180
|
+
test/test_right_shift_node.rb
|
181
|
+
test/test_rkelly.rb
|
182
|
+
test/test_runtime.rb
|
183
|
+
test/test_scope_chain.rb
|
184
|
+
test/test_setter_property_node.rb
|
185
|
+
test/test_source_elements.rb
|
186
|
+
test/test_strict_equal_node.rb
|
187
|
+
test/test_string_node.rb
|
188
|
+
test/test_subtract_node.rb
|
189
|
+
test/test_switch_node.rb
|
190
|
+
test/test_this_node.rb
|
191
|
+
test/test_throw_node.rb
|
192
|
+
test/test_tokenizer.rb
|
193
|
+
test/test_true_node.rb
|
194
|
+
test/test_try_node.rb
|
195
|
+
test/test_type_of_node.rb
|
196
|
+
test/test_unary_minus_node.rb
|
197
|
+
test/test_unary_plus_node.rb
|
198
|
+
test/test_unsigned_right_shift_node.rb
|
199
|
+
test/test_var_decl_node.rb
|
200
|
+
test/test_var_statement_node.rb
|
201
|
+
test/test_void_node.rb
|
202
|
+
test/test_while_node.rb
|
203
|
+
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,39 @@
|
|
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('rkelly-remix') do |p|
|
10
|
+
developer('Aaron Patterson', 'aaron.patterson@gmail.com')
|
11
|
+
developer('Rene Saarsoo', 'rene.saarsoo@sencha.com')
|
12
|
+
self.readme_file = 'README.rdoc'
|
13
|
+
self.history_file = 'CHANGELOG.rdoc'
|
14
|
+
self.extra_rdoc_files = FileList['*.rdoc']
|
15
|
+
self.clean_globs = [GENERATED_PARSER]
|
16
|
+
end
|
17
|
+
|
18
|
+
file GENERATED_PARSER => "lib/parser.y" do |t|
|
19
|
+
if ENV['DEBUG']
|
20
|
+
sh "racc -g -v -o #{t.name} #{t.prerequisites.first}"
|
21
|
+
else
|
22
|
+
sh "racc -o #{t.name} #{t.prerequisites.first}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
task :parser => GENERATED_PARSER
|
27
|
+
|
28
|
+
# make sure the parser's up-to-date when we test
|
29
|
+
Rake::Task[:test].prerequisites << :parser
|
30
|
+
Rake::Task[:check_manifest].prerequisites << :parser
|
31
|
+
|
32
|
+
namespace :gem do
|
33
|
+
task :spec do
|
34
|
+
File.open("#{HOE.name}.gemspec", 'w') do |f|
|
35
|
+
HOE.spec.version = "#{HOE.version}.#{Time.now.strftime("%Y%m%d%H%M%S")}"
|
36
|
+
f.write(HOE.spec.to_ruby)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|