rack-mount 0.0.1 → 0.6.13
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/README.rdoc +12 -4
- data/lib/rack/mount/analysis/frequency.rb +15 -6
- data/lib/rack/mount/analysis/histogram.rb +55 -6
- data/lib/rack/mount/analysis/splitting.rb +85 -71
- data/lib/rack/mount/code_generation.rb +117 -0
- data/lib/rack/mount/generatable_regexp.rb +95 -48
- data/lib/rack/mount/multimap.rb +2 -43
- data/lib/rack/mount/prefix.rb +12 -7
- data/lib/rack/mount/regexp_with_named_groups.rb +27 -7
- data/lib/rack/mount/route.rb +79 -18
- data/lib/rack/mount/route_set.rb +330 -22
- data/lib/rack/mount/strexp/parser.rb +0 -0
- data/lib/rack/mount/strexp/parser.y +34 -0
- data/lib/rack/mount/strexp/tokenizer.rb +83 -0
- data/lib/rack/mount/strexp/tokenizer.rex +12 -0
- data/lib/rack/mount/strexp.rb +54 -79
- data/lib/rack/mount/utils.rb +65 -174
- data/lib/rack/mount/vendor/multimap/multimap.rb +142 -39
- data/lib/rack/mount/vendor/multimap/multiset.rb +33 -1
- data/lib/rack/mount/vendor/multimap/nested_multimap.rb +18 -16
- data/lib/rack/mount/vendor/regin/regin/alternation.rb +40 -0
- data/lib/rack/mount/vendor/regin/regin/anchor.rb +4 -0
- data/lib/rack/mount/vendor/regin/regin/atom.rb +54 -0
- data/lib/rack/mount/vendor/regin/regin/character.rb +51 -0
- data/lib/rack/mount/vendor/regin/regin/character_class.rb +50 -0
- data/lib/rack/mount/vendor/regin/regin/collection.rb +77 -0
- data/lib/rack/mount/vendor/regin/regin/expression.rb +126 -0
- data/lib/rack/mount/vendor/regin/regin/group.rb +85 -0
- data/lib/rack/mount/vendor/regin/regin/options.rb +55 -0
- data/lib/rack/mount/vendor/regin/regin/parser.rb +521 -0
- data/lib/rack/mount/vendor/regin/regin/tokenizer.rb +0 -0
- data/lib/rack/mount/vendor/regin/regin/version.rb +3 -0
- data/lib/rack/mount/vendor/regin/regin.rb +75 -0
- data/lib/rack/mount/version.rb +3 -0
- data/lib/rack/mount.rb +13 -16
- metadata +73 -29
- data/lib/rack/mount/const.rb +0 -45
- data/lib/rack/mount/exceptions.rb +0 -3
- data/lib/rack/mount/generation/route.rb +0 -57
- data/lib/rack/mount/generation/route_set.rb +0 -163
- data/lib/rack/mount/meta_method.rb +0 -104
- data/lib/rack/mount/mixover.rb +0 -47
- data/lib/rack/mount/recognition/code_generation.rb +0 -99
- data/lib/rack/mount/recognition/route.rb +0 -59
- data/lib/rack/mount/recognition/route_set.rb +0 -88
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
#
|
|
2
|
+
# DO NOT MODIFY!!!!
|
|
3
|
+
# This file is automatically generated by Racc 1.4.6
|
|
4
|
+
# from Racc grammer file "".
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
require 'racc/parser.rb'
|
|
8
|
+
module Regin
|
|
9
|
+
class Parser < Racc::Parser #:nodoc: all
|
|
10
|
+
|
|
11
|
+
def self.parse_regexp(regexp)
|
|
12
|
+
options = Options.from_int(regexp.options)
|
|
13
|
+
|
|
14
|
+
parser = new
|
|
15
|
+
parser.options_stack << options.to_h
|
|
16
|
+
|
|
17
|
+
expression = parser.scan_str(regexp.source)
|
|
18
|
+
expression = expression.dup(options.to_h) if options.any?
|
|
19
|
+
expression
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attr_accessor :options_stack
|
|
23
|
+
|
|
24
|
+
def initialize
|
|
25
|
+
@capture_index = 0
|
|
26
|
+
@capture_index_stack = []
|
|
27
|
+
@options_stack = []
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
##### State transition tables begin ###
|
|
31
|
+
|
|
32
|
+
racc_action_table = [
|
|
33
|
+
45, 47, 67, 69, 56, 57, 58, 59, 60, 61,
|
|
34
|
+
62, 63, 64, 66, 68, 55, 53, 83, 46, 48,
|
|
35
|
+
49, 74, 44, 46, 48, 49, 4, 54, 16, 7,
|
|
36
|
+
9, 11, 13, 18, 19, 20, 4, 3, 5, 7,
|
|
37
|
+
9, 11, 13, 46, 48, 49, 4, 3, 5, 7,
|
|
38
|
+
9, 11, 13, 46, 48, 49, 4, 3, 5, 7,
|
|
39
|
+
9, 11, 13, 46, 48, 49, 4, 3, 5, 7,
|
|
40
|
+
9, 11, 13, 26, 29, 27, 4, 3, 5, 7,
|
|
41
|
+
9, 11, 13, 46, 48, 49, 4, 3, 5, 7,
|
|
42
|
+
9, 11, 13, 46, 48, 49, 4, 3, 5, 7,
|
|
43
|
+
9, 11, 13, 77, 21, 70, 21, 3, 5, 39,
|
|
44
|
+
28, 25, 21, 37, 21, 79, 23, 39, 80, 25,
|
|
45
|
+
75, 46, 48, 49, 46, 48, 49, 52, 32, 33,
|
|
46
|
+
85, 35, 87, 41, 36 ]
|
|
47
|
+
|
|
48
|
+
racc_action_check = [
|
|
49
|
+
29, 29, 36, 36, 36, 36, 36, 36, 36, 36,
|
|
50
|
+
36, 36, 36, 36, 36, 36, 34, 76, 76, 76,
|
|
51
|
+
76, 50, 29, 29, 29, 29, 27, 34, 1, 27,
|
|
52
|
+
27, 27, 27, 1, 1, 1, 45, 27, 27, 45,
|
|
53
|
+
45, 45, 45, 75, 75, 75, 0, 45, 45, 0,
|
|
54
|
+
0, 0, 0, 71, 71, 71, 47, 0, 0, 47,
|
|
55
|
+
47, 47, 47, 78, 78, 78, 13, 47, 47, 13,
|
|
56
|
+
13, 13, 13, 8, 13, 10, 14, 13, 13, 14,
|
|
57
|
+
14, 14, 14, 82, 82, 82, 74, 14, 14, 74,
|
|
58
|
+
74, 74, 74, 44, 44, 44, 28, 74, 74, 28,
|
|
59
|
+
28, 28, 28, 65, 40, 40, 23, 28, 28, 40,
|
|
60
|
+
12, 23, 22, 22, 4, 72, 4, 22, 73, 4,
|
|
61
|
+
51, 51, 51, 51, 83, 83, 83, 30, 18, 19,
|
|
62
|
+
77, 20, 81, 26, 21 ]
|
|
63
|
+
|
|
64
|
+
racc_action_pointer = [
|
|
65
|
+
43, 17, nil, nil, 111, nil, nil, nil, 73, nil,
|
|
66
|
+
73, nil, 108, 63, 73, nil, nil, nil, 117, 118,
|
|
67
|
+
123, 122, 109, 103, nil, nil, 133, 23, 93, -12,
|
|
68
|
+
117, nil, nil, nil, 8, nil, -18, nil, nil, nil,
|
|
69
|
+
101, nil, nil, nil, 58, 33, nil, 53, nil, nil,
|
|
70
|
+
9, 86, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
71
|
+
nil, nil, nil, nil, nil, 91, nil, nil, nil, nil,
|
|
72
|
+
nil, 18, 105, 108, 83, 8, -17, 126, 28, nil,
|
|
73
|
+
nil, 122, 48, 89, nil, nil, nil, nil, nil, nil ]
|
|
74
|
+
|
|
75
|
+
racc_action_default = [
|
|
76
|
+
-57, -9, -10, -21, -57, -22, -15, -13, -57, -14,
|
|
77
|
+
-1, -16, -2, -57, -5, -7, -25, -8, -23, -24,
|
|
78
|
+
-57, -57, -57, -57, -33, -34, -57, -57, -57, -57,
|
|
79
|
+
-57, -6, -26, -27, -57, -30, -57, -11, -31, -32,
|
|
80
|
+
-57, 90, -3, -4, -57, -57, -54, -57, -55, -56,
|
|
81
|
+
-57, -57, -17, -29, -28, -49, -38, -39, -40, -41,
|
|
82
|
+
-42, -43, -44, -45, -46, -57, -47, -36, -48, -37,
|
|
83
|
+
-12, -57, -57, -57, -57, -57, -57, -57, -57, -19,
|
|
84
|
+
-20, -57, -57, -57, -53, -35, -50, -18, -51, -52 ]
|
|
85
|
+
|
|
86
|
+
racc_goto_table = [
|
|
87
|
+
8, 22, 51, 38, 42, 43, 34, 31, 17, 65,
|
|
88
|
+
50, nil, nil, 30, nil, nil, nil, 71, nil, nil,
|
|
89
|
+
40, 38, nil, nil, 76, nil, nil, nil, nil, nil,
|
|
90
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
91
|
+
nil, nil, nil, nil, 78, 72, nil, 73, 82, 84,
|
|
92
|
+
nil, 86, nil, nil, nil, 88, 89, nil, nil, nil,
|
|
93
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
94
|
+
nil, nil, nil, nil, 81 ]
|
|
95
|
+
|
|
96
|
+
racc_goto_check = [
|
|
97
|
+
1, 9, 15, 13, 3, 3, 12, 5, 7, 14,
|
|
98
|
+
11, nil, nil, 1, nil, nil, nil, 15, nil, nil,
|
|
99
|
+
9, 13, nil, nil, 15, nil, nil, nil, nil, nil,
|
|
100
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
101
|
+
nil, nil, nil, nil, 15, 1, nil, 1, 15, 15,
|
|
102
|
+
nil, 15, nil, nil, nil, 15, 15, nil, nil, nil,
|
|
103
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
104
|
+
nil, nil, nil, nil, 1 ]
|
|
105
|
+
|
|
106
|
+
racc_goto_pointer = [
|
|
107
|
+
nil, 0, nil, -23, nil, -7, nil, 7, nil, -3,
|
|
108
|
+
nil, -19, -14, -19, -27, -27 ]
|
|
109
|
+
|
|
110
|
+
racc_goto_default = [
|
|
111
|
+
nil, nil, 10, 12, 14, 15, 1, nil, 2, nil,
|
|
112
|
+
6, nil, nil, 24, nil, nil ]
|
|
113
|
+
|
|
114
|
+
racc_reduce_table = [
|
|
115
|
+
0, 0, :racc_error,
|
|
116
|
+
1, 39, :_reduce_1,
|
|
117
|
+
1, 39, :_reduce_none,
|
|
118
|
+
3, 40, :_reduce_3,
|
|
119
|
+
3, 40, :_reduce_4,
|
|
120
|
+
1, 41, :_reduce_5,
|
|
121
|
+
2, 42, :_reduce_6,
|
|
122
|
+
1, 42, :_reduce_7,
|
|
123
|
+
2, 43, :_reduce_8,
|
|
124
|
+
1, 43, :_reduce_none,
|
|
125
|
+
1, 44, :_reduce_none,
|
|
126
|
+
3, 44, :_reduce_11,
|
|
127
|
+
4, 44, :_reduce_12,
|
|
128
|
+
1, 44, :_reduce_13,
|
|
129
|
+
1, 44, :_reduce_14,
|
|
130
|
+
1, 44, :_reduce_15,
|
|
131
|
+
1, 44, :_reduce_16,
|
|
132
|
+
3, 46, :_reduce_17,
|
|
133
|
+
6, 46, :_reduce_18,
|
|
134
|
+
5, 46, :_reduce_19,
|
|
135
|
+
5, 46, :_reduce_20,
|
|
136
|
+
1, 48, :_reduce_none,
|
|
137
|
+
1, 48, :_reduce_none,
|
|
138
|
+
1, 45, :_reduce_none,
|
|
139
|
+
1, 45, :_reduce_none,
|
|
140
|
+
1, 45, :_reduce_none,
|
|
141
|
+
2, 45, :_reduce_26,
|
|
142
|
+
2, 45, :_reduce_27,
|
|
143
|
+
3, 45, :_reduce_28,
|
|
144
|
+
2, 50, :_reduce_29,
|
|
145
|
+
1, 50, :_reduce_none,
|
|
146
|
+
2, 47, :_reduce_31,
|
|
147
|
+
2, 47, :_reduce_32,
|
|
148
|
+
1, 47, :_reduce_none,
|
|
149
|
+
1, 47, :_reduce_none,
|
|
150
|
+
5, 51, :_reduce_35,
|
|
151
|
+
1, 52, :_reduce_none,
|
|
152
|
+
1, 52, :_reduce_none,
|
|
153
|
+
1, 52, :_reduce_none,
|
|
154
|
+
1, 52, :_reduce_none,
|
|
155
|
+
1, 52, :_reduce_none,
|
|
156
|
+
1, 52, :_reduce_none,
|
|
157
|
+
1, 52, :_reduce_none,
|
|
158
|
+
1, 52, :_reduce_none,
|
|
159
|
+
1, 52, :_reduce_none,
|
|
160
|
+
1, 52, :_reduce_none,
|
|
161
|
+
1, 52, :_reduce_none,
|
|
162
|
+
1, 52, :_reduce_none,
|
|
163
|
+
1, 52, :_reduce_none,
|
|
164
|
+
1, 52, :_reduce_none,
|
|
165
|
+
4, 49, :_reduce_50,
|
|
166
|
+
4, 49, :_reduce_51,
|
|
167
|
+
4, 49, :_reduce_52,
|
|
168
|
+
3, 49, :_reduce_53,
|
|
169
|
+
1, 53, :_reduce_54,
|
|
170
|
+
1, 53, :_reduce_55,
|
|
171
|
+
1, 53, :_reduce_56 ]
|
|
172
|
+
|
|
173
|
+
racc_reduce_n = 57
|
|
174
|
+
|
|
175
|
+
racc_shift_n = 90
|
|
176
|
+
|
|
177
|
+
racc_token_table = {
|
|
178
|
+
false => 0,
|
|
179
|
+
:error => 1,
|
|
180
|
+
:BAR => 2,
|
|
181
|
+
:LBRACK => 3,
|
|
182
|
+
:RBRACK => 4,
|
|
183
|
+
:NEGATE => 5,
|
|
184
|
+
:CCLASS => 6,
|
|
185
|
+
:DOT => 7,
|
|
186
|
+
:CHAR => 8,
|
|
187
|
+
:LPAREN => 9,
|
|
188
|
+
:RPAREN => 10,
|
|
189
|
+
:QMARK => 11,
|
|
190
|
+
:COLON => 12,
|
|
191
|
+
:NAME => 13,
|
|
192
|
+
:L_ANCHOR => 14,
|
|
193
|
+
:R_ANCHOR => 15,
|
|
194
|
+
:STAR => 16,
|
|
195
|
+
:PLUS => 17,
|
|
196
|
+
:LCURLY => 18,
|
|
197
|
+
:RCURLY => 19,
|
|
198
|
+
"alnum" => 20,
|
|
199
|
+
"alpha" => 21,
|
|
200
|
+
"ascii" => 22,
|
|
201
|
+
"blank" => 23,
|
|
202
|
+
"cntrl" => 24,
|
|
203
|
+
"digit" => 25,
|
|
204
|
+
"graph" => 26,
|
|
205
|
+
"lower" => 27,
|
|
206
|
+
"print" => 28,
|
|
207
|
+
"punct" => 29,
|
|
208
|
+
"space" => 30,
|
|
209
|
+
"upper" => 31,
|
|
210
|
+
"word" => 32,
|
|
211
|
+
"xdigit" => 33,
|
|
212
|
+
:MINUS => 34,
|
|
213
|
+
:MULTILINE => 35,
|
|
214
|
+
:IGNORECASE => 36,
|
|
215
|
+
:EXTENDED => 37 }
|
|
216
|
+
|
|
217
|
+
racc_nt_base = 38
|
|
218
|
+
|
|
219
|
+
racc_use_result_var = true
|
|
220
|
+
|
|
221
|
+
Racc_arg = [
|
|
222
|
+
racc_action_table,
|
|
223
|
+
racc_action_check,
|
|
224
|
+
racc_action_default,
|
|
225
|
+
racc_action_pointer,
|
|
226
|
+
racc_goto_table,
|
|
227
|
+
racc_goto_check,
|
|
228
|
+
racc_goto_default,
|
|
229
|
+
racc_goto_pointer,
|
|
230
|
+
racc_nt_base,
|
|
231
|
+
racc_reduce_table,
|
|
232
|
+
racc_token_table,
|
|
233
|
+
racc_shift_n,
|
|
234
|
+
racc_reduce_n,
|
|
235
|
+
racc_use_result_var ]
|
|
236
|
+
|
|
237
|
+
Racc_token_to_s_table = [
|
|
238
|
+
"$end",
|
|
239
|
+
"error",
|
|
240
|
+
"BAR",
|
|
241
|
+
"LBRACK",
|
|
242
|
+
"RBRACK",
|
|
243
|
+
"NEGATE",
|
|
244
|
+
"CCLASS",
|
|
245
|
+
"DOT",
|
|
246
|
+
"CHAR",
|
|
247
|
+
"LPAREN",
|
|
248
|
+
"RPAREN",
|
|
249
|
+
"QMARK",
|
|
250
|
+
"COLON",
|
|
251
|
+
"NAME",
|
|
252
|
+
"L_ANCHOR",
|
|
253
|
+
"R_ANCHOR",
|
|
254
|
+
"STAR",
|
|
255
|
+
"PLUS",
|
|
256
|
+
"LCURLY",
|
|
257
|
+
"RCURLY",
|
|
258
|
+
"\"alnum\"",
|
|
259
|
+
"\"alpha\"",
|
|
260
|
+
"\"ascii\"",
|
|
261
|
+
"\"blank\"",
|
|
262
|
+
"\"cntrl\"",
|
|
263
|
+
"\"digit\"",
|
|
264
|
+
"\"graph\"",
|
|
265
|
+
"\"lower\"",
|
|
266
|
+
"\"print\"",
|
|
267
|
+
"\"punct\"",
|
|
268
|
+
"\"space\"",
|
|
269
|
+
"\"upper\"",
|
|
270
|
+
"\"word\"",
|
|
271
|
+
"\"xdigit\"",
|
|
272
|
+
"MINUS",
|
|
273
|
+
"MULTILINE",
|
|
274
|
+
"IGNORECASE",
|
|
275
|
+
"EXTENDED",
|
|
276
|
+
"$start",
|
|
277
|
+
"expression",
|
|
278
|
+
"alternation",
|
|
279
|
+
"subexpression",
|
|
280
|
+
"expression_ary",
|
|
281
|
+
"quantified_atom",
|
|
282
|
+
"atom",
|
|
283
|
+
"quantifier",
|
|
284
|
+
"group",
|
|
285
|
+
"bracket_expression",
|
|
286
|
+
"anchor",
|
|
287
|
+
"options",
|
|
288
|
+
"quantifier_char",
|
|
289
|
+
"posix_bracket_expression",
|
|
290
|
+
"posix_bracket_type",
|
|
291
|
+
"modifier" ]
|
|
292
|
+
|
|
293
|
+
Racc_debug_parser = false
|
|
294
|
+
|
|
295
|
+
##### State transition tables end #####
|
|
296
|
+
|
|
297
|
+
# reduce 0 omitted
|
|
298
|
+
|
|
299
|
+
def _reduce_1(val, _values, result)
|
|
300
|
+
result = Expression.new(val[0])
|
|
301
|
+
result
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
# reduce 2 omitted
|
|
305
|
+
|
|
306
|
+
def _reduce_3(val, _values, result)
|
|
307
|
+
result = val[0] + [val[2]]
|
|
308
|
+
result
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def _reduce_4(val, _values, result)
|
|
312
|
+
result = Alternation.new(val[0], val[2])
|
|
313
|
+
result
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
def _reduce_5(val, _values, result)
|
|
317
|
+
result = Expression.new(val[0])
|
|
318
|
+
result
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def _reduce_6(val, _values, result)
|
|
322
|
+
result = val[0] + [val[1]]
|
|
323
|
+
result
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
def _reduce_7(val, _values, result)
|
|
327
|
+
result = [val[0]]
|
|
328
|
+
result
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def _reduce_8(val, _values, result)
|
|
332
|
+
result = val[0].dup(:quantifier => val[1])
|
|
333
|
+
result
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
# reduce 9 omitted
|
|
337
|
+
|
|
338
|
+
# reduce 10 omitted
|
|
339
|
+
|
|
340
|
+
def _reduce_11(val, _values, result)
|
|
341
|
+
result = CharacterClass.new(val[1])
|
|
342
|
+
result
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def _reduce_12(val, _values, result)
|
|
346
|
+
result = CharacterClass.new(val[2], :negate => true)
|
|
347
|
+
result
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
def _reduce_13(val, _values, result)
|
|
351
|
+
result = CharacterClass.new(val[0])
|
|
352
|
+
result
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def _reduce_14(val, _values, result)
|
|
356
|
+
result = CharacterClass.new('.')
|
|
357
|
+
result
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def _reduce_15(val, _values, result)
|
|
361
|
+
result = Anchor.new(val[0])
|
|
362
|
+
result
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
def _reduce_16(val, _values, result)
|
|
366
|
+
result = Character.new(val[0])
|
|
367
|
+
result
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
def _reduce_17(val, _values, result)
|
|
371
|
+
result = Group.new(val[1], :index => @capture_index_stack.pop)
|
|
372
|
+
|
|
373
|
+
result
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
def _reduce_18(val, _values, result)
|
|
377
|
+
result = Group.new(val[4], val[2].merge(:capture => false))
|
|
378
|
+
@options_stack.pop
|
|
379
|
+
|
|
380
|
+
result
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
def _reduce_19(val, _values, result)
|
|
384
|
+
result = Group.new(val[3], :capture => false);
|
|
385
|
+
|
|
386
|
+
result
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
def _reduce_20(val, _values, result)
|
|
390
|
+
result = Group.new(val[3], :name => val[2], :index => @capture_index_stack.pop);
|
|
391
|
+
|
|
392
|
+
result
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
# reduce 21 omitted
|
|
396
|
+
|
|
397
|
+
# reduce 22 omitted
|
|
398
|
+
|
|
399
|
+
# reduce 23 omitted
|
|
400
|
+
|
|
401
|
+
# reduce 24 omitted
|
|
402
|
+
|
|
403
|
+
# reduce 25 omitted
|
|
404
|
+
|
|
405
|
+
def _reduce_26(val, _values, result)
|
|
406
|
+
result = val.join
|
|
407
|
+
result
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
def _reduce_27(val, _values, result)
|
|
411
|
+
result = val.join
|
|
412
|
+
result
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
def _reduce_28(val, _values, result)
|
|
416
|
+
result = val.join
|
|
417
|
+
result
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
def _reduce_29(val, _values, result)
|
|
421
|
+
result = val.join
|
|
422
|
+
result
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
# reduce 30 omitted
|
|
426
|
+
|
|
427
|
+
def _reduce_31(val, _values, result)
|
|
428
|
+
result = val.join
|
|
429
|
+
result
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
def _reduce_32(val, _values, result)
|
|
433
|
+
result = val.join
|
|
434
|
+
result
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
# reduce 33 omitted
|
|
438
|
+
|
|
439
|
+
# reduce 34 omitted
|
|
440
|
+
|
|
441
|
+
def _reduce_35(val, _values, result)
|
|
442
|
+
result = val.join
|
|
443
|
+
result
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
# reduce 36 omitted
|
|
447
|
+
|
|
448
|
+
# reduce 37 omitted
|
|
449
|
+
|
|
450
|
+
# reduce 38 omitted
|
|
451
|
+
|
|
452
|
+
# reduce 39 omitted
|
|
453
|
+
|
|
454
|
+
# reduce 40 omitted
|
|
455
|
+
|
|
456
|
+
# reduce 41 omitted
|
|
457
|
+
|
|
458
|
+
# reduce 42 omitted
|
|
459
|
+
|
|
460
|
+
# reduce 43 omitted
|
|
461
|
+
|
|
462
|
+
# reduce 44 omitted
|
|
463
|
+
|
|
464
|
+
# reduce 45 omitted
|
|
465
|
+
|
|
466
|
+
# reduce 46 omitted
|
|
467
|
+
|
|
468
|
+
# reduce 47 omitted
|
|
469
|
+
|
|
470
|
+
# reduce 48 omitted
|
|
471
|
+
|
|
472
|
+
# reduce 49 omitted
|
|
473
|
+
|
|
474
|
+
def _reduce_50(val, _values, result)
|
|
475
|
+
@options_stack << result = { val[1] => false, val[2] => false, val[3] => false }
|
|
476
|
+
|
|
477
|
+
result
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
def _reduce_51(val, _values, result)
|
|
481
|
+
@options_stack << result = { val[0] => true, val[2] => false, val[3] => false }
|
|
482
|
+
|
|
483
|
+
result
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
def _reduce_52(val, _values, result)
|
|
487
|
+
@options_stack << result = { val[0] => true, val[1] => true, val[3] => false }
|
|
488
|
+
|
|
489
|
+
result
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
def _reduce_53(val, _values, result)
|
|
493
|
+
@options_stack << result = { val[0] => true, val[1] => true, val[2] => true }
|
|
494
|
+
|
|
495
|
+
result
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
def _reduce_54(val, _values, result)
|
|
499
|
+
result = :multiline
|
|
500
|
+
result
|
|
501
|
+
end
|
|
502
|
+
|
|
503
|
+
def _reduce_55(val, _values, result)
|
|
504
|
+
result = :ignorecase
|
|
505
|
+
result
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
def _reduce_56(val, _values, result)
|
|
509
|
+
result = :extended
|
|
510
|
+
result
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
def _reduce_none(val, _values, result)
|
|
514
|
+
val[0]
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
end # class Parser
|
|
518
|
+
end # module Regin
|
|
519
|
+
|
|
520
|
+
require 'regin/tokenizer'
|
|
521
|
+
|
|
Binary file
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
module Regin
|
|
2
|
+
autoload :Alternation, 'regin/alternation'
|
|
3
|
+
autoload :Anchor, 'regin/anchor'
|
|
4
|
+
autoload :Atom, 'regin/atom'
|
|
5
|
+
autoload :Character, 'regin/character'
|
|
6
|
+
autoload :CharacterClass, 'regin/character_class'
|
|
7
|
+
autoload :Collection, 'regin/collection'
|
|
8
|
+
autoload :Expression, 'regin/expression'
|
|
9
|
+
autoload :Group, 'regin/group'
|
|
10
|
+
autoload :Options, 'regin/options'
|
|
11
|
+
autoload :Parser, 'regin/parser'
|
|
12
|
+
|
|
13
|
+
# Detect named capture support
|
|
14
|
+
begin
|
|
15
|
+
old_debug, $DEBUG = $DEBUG, nil
|
|
16
|
+
eval('foo = /(?<foo>.*)/').named_captures
|
|
17
|
+
|
|
18
|
+
# Returns true if the interpreter is using the Oniguruma Regexp lib
|
|
19
|
+
# and supports named captures.
|
|
20
|
+
#
|
|
21
|
+
# /(?<foo>bar)/
|
|
22
|
+
def self.regexp_supports_named_captures?
|
|
23
|
+
true
|
|
24
|
+
end
|
|
25
|
+
rescue SyntaxError, NoMethodError
|
|
26
|
+
def self.regexp_supports_named_captures? #:nodoc:
|
|
27
|
+
false
|
|
28
|
+
end
|
|
29
|
+
ensure
|
|
30
|
+
$DEBUG = old_debug
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
POSIX_BRACKET_TYPES = %w(
|
|
35
|
+
alnum alpha ascii blank cntrl digit graph
|
|
36
|
+
lower print punct space upper word xdigit
|
|
37
|
+
foo
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
# Returns array of supported POSX bracket types
|
|
41
|
+
def self.supported_posix_bracket_types
|
|
42
|
+
@supported_posix_bracket_types ||= []
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Detect supported posix bracket types
|
|
46
|
+
begin
|
|
47
|
+
old_debug, $DEBUG = $DEBUG, nil
|
|
48
|
+
|
|
49
|
+
POSIX_BRACKET_TYPES.each do |type|
|
|
50
|
+
begin
|
|
51
|
+
eval("foo = /[[:#{type}:]]/")
|
|
52
|
+
supported_posix_bracket_types << type
|
|
53
|
+
rescue SyntaxError, RegexpError
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
ensure
|
|
57
|
+
$DEBUG = old_debug
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# Parses Regexp and returns a Expression data structure.
|
|
62
|
+
def self.parse(regexp)
|
|
63
|
+
Parser.parse_regexp(regexp)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Recompiles Regexp by parsing it and turning it back into a Regexp.
|
|
67
|
+
#
|
|
68
|
+
# (In the future Regin will perform some Regexp optimizations
|
|
69
|
+
# such as removing unnecessary captures and options)
|
|
70
|
+
def self.compile(source)
|
|
71
|
+
regexp = Regexp.compile(source)
|
|
72
|
+
expression = parse(regexp)
|
|
73
|
+
Regexp.compile(expression.to_s(true), expression.flags)
|
|
74
|
+
end
|
|
75
|
+
end
|
data/lib/rack/mount.rb
CHANGED
|
@@ -1,35 +1,32 @@
|
|
|
1
1
|
require 'rack'
|
|
2
2
|
|
|
3
3
|
module Rack #:nodoc:
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
# A stackable dynamic tree based Rack router.
|
|
5
|
+
#
|
|
6
|
+
# Rack::Mount supports Rack's Cascade style of trying several routes until
|
|
7
|
+
# it finds one that is not a 404. This allows multiple routes to be nested
|
|
8
|
+
# or stacked on top of each other. Since the application endpoint can
|
|
9
|
+
# trigger the router to continue matching, middleware can be used to add
|
|
10
|
+
# arbitrary conditions to any route. This allows you to route based on
|
|
11
|
+
# other request attributes, session information, or even data dynamically
|
|
12
|
+
# pulled from a database.
|
|
13
|
+
module Mount
|
|
14
|
+
autoload :CodeGeneration, 'rack/mount/code_generation'
|
|
6
15
|
autoload :GeneratableRegexp, 'rack/mount/generatable_regexp'
|
|
7
|
-
autoload :MetaMethod, 'rack/mount/meta_method'
|
|
8
|
-
autoload :Mixover, 'rack/mount/mixover'
|
|
9
16
|
autoload :Multimap, 'rack/mount/multimap'
|
|
10
17
|
autoload :Prefix, 'rack/mount/prefix'
|
|
11
18
|
autoload :RegexpWithNamedGroups, 'rack/mount/regexp_with_named_groups'
|
|
12
19
|
autoload :Route, 'rack/mount/route'
|
|
13
20
|
autoload :RouteSet, 'rack/mount/route_set'
|
|
14
|
-
autoload :RoutingError, 'rack/mount/
|
|
21
|
+
autoload :RoutingError, 'rack/mount/route_set'
|
|
15
22
|
autoload :Strexp, 'rack/mount/strexp'
|
|
16
23
|
autoload :Utils, 'rack/mount/utils'
|
|
24
|
+
autoload :Version, 'rack/mount/version'
|
|
17
25
|
|
|
18
26
|
module Analysis #:nodoc:
|
|
19
27
|
autoload :Frequency, 'rack/mount/analysis/frequency'
|
|
20
28
|
autoload :Histogram, 'rack/mount/analysis/histogram'
|
|
21
29
|
autoload :Splitting, 'rack/mount/analysis/splitting'
|
|
22
30
|
end
|
|
23
|
-
|
|
24
|
-
module Generation #:nodoc:
|
|
25
|
-
autoload :Route, 'rack/mount/generation/route'
|
|
26
|
-
autoload :RouteSet, 'rack/mount/generation/route_set'
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
module Recognition #:nodoc:
|
|
30
|
-
autoload :CodeGeneration, 'rack/mount/recognition/code_generation'
|
|
31
|
-
autoload :Route, 'rack/mount/recognition/route'
|
|
32
|
-
autoload :RouteSet, 'rack/mount/recognition/route_set'
|
|
33
|
-
end
|
|
34
31
|
end
|
|
35
32
|
end
|