@@ -8,10 +8,9 @@ class Router
8
8
attr_reader :map , :compiled
9
9
10
10
class Any < AttributeTranslator
11
- attr_reader :pattern , :regexp , : index
12
- def initialize ( pattern , regexp , index , **attributes )
11
+ attr_reader :pattern , :index
12
+ def initialize ( pattern , index , **attributes )
13
13
@pattern = pattern
14
- @regexp = regexp
15
14
@index = index
16
15
super ( attributes )
17
16
end
@@ -39,18 +38,20 @@ def self.supported_methods
39
38
40
39
def initialize
41
40
@neutral_map = [ ]
41
+ @neutral_regexes = [ ]
42
42
@map = Hash . new { |hash , key | hash [ key ] = [ ] }
43
43
@optimized_map = Hash . new { |hash , key | hash [ key ] = // }
44
44
end
45
45
46
46
def compile!
47
47
return if compiled
48
- @union = Regexp . union ( @neutral_map . map ( &:regexp ) )
48
+ @union = Regexp . union ( @neutral_regexes )
49
+ @neutral_regexes = nil
49
50
self . class . supported_methods . each do |method |
50
51
routes = map [ method ]
51
52
@optimized_map [ method ] = routes . map . with_index do |route , index |
52
53
route . index = index
53
- route . regexp = Regexp . new ( "(?<_#{ index } >#{ route . pattern . to_regexp } )" )
54
+ Regexp . new ( "(?<_#{ index } >#{ route . pattern . to_regexp } )" )
54
55
end
55
56
@optimized_map [ method ] = Regexp . union ( @optimized_map [ method ] )
56
57
end
@@ -62,8 +63,8 @@ def append(route)
62
63
end
63
64
64
65
def associate_routes ( pattern , **options )
65
- regexp = Regexp . new ( "(?<_#{ @neutral_map . length } >)#{ pattern . to_regexp } " )
66
- @neutral_map << Any . new ( pattern , regexp , @neutral_map . length , **options )
66
+ @neutral_regexes << Regexp . new ( "(?<_#{ @neutral_map . length } >)#{ pattern . to_regexp } " )
67
+ @neutral_map << Any . new ( pattern , @neutral_map . length , **options )
67
68
end
68
69
69
70
def call ( env )
0 commit comments