rack-mount 0.6.13 → 0.8.3
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/lib/rack/mount/analysis/splitting.rb +43 -43
- data/lib/rack/mount/code_generation.rb +5 -2
- data/lib/rack/mount/multimap.rb +95 -11
- data/lib/rack/mount/prefix.rb +1 -1
- data/lib/rack/mount/route.rb +7 -11
- data/lib/rack/mount/route_set.rb +19 -41
- data/lib/rack/mount/strexp/parser.rb +0 -0
- data/lib/rack/mount/utils.rb +1 -1
- data/lib/rack/mount/vendor/regin/regin/group.rb +8 -3
- data/lib/rack/mount/vendor/regin/regin/parser.rb +210 -185
- data/lib/rack/mount/vendor/regin/regin/tokenizer.rb +0 -0
- data/lib/rack/mount/version.rb +1 -1
- data/lib/rack/mount.rb +0 -1
- metadata +31 -22
- data/lib/rack/mount/analysis/frequency.rb +0 -60
- data/lib/rack/mount/strexp/parser.y +0 -34
- data/lib/rack/mount/strexp/tokenizer.rex +0 -12
- data/lib/rack/mount/vendor/multimap/multimap.rb +0 -569
- data/lib/rack/mount/vendor/multimap/multiset.rb +0 -185
- data/lib/rack/mount/vendor/multimap/nested_multimap.rb +0 -158
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rack-mount
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 57
|
|
5
|
+
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
version: 0.
|
|
8
|
+
- 8
|
|
9
|
+
- 3
|
|
10
|
+
version: 0.8.3
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Joshua Peek
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date:
|
|
18
|
+
date: 2011-08-30 00:00:00 -05:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -49,7 +49,7 @@ dependencies:
|
|
|
49
49
|
type: :development
|
|
50
50
|
version_requirements: *id002
|
|
51
51
|
- !ruby/object:Gem::Dependency
|
|
52
|
-
name:
|
|
52
|
+
name: rake
|
|
53
53
|
prerelease: false
|
|
54
54
|
requirement: &id003 !ruby/object:Gem::Requirement
|
|
55
55
|
none: false
|
|
@@ -62,18 +62,31 @@ dependencies:
|
|
|
62
62
|
version: "0"
|
|
63
63
|
type: :development
|
|
64
64
|
version_requirements: *id003
|
|
65
|
-
|
|
65
|
+
- !ruby/object:Gem::Dependency
|
|
66
|
+
name: rexical
|
|
67
|
+
prerelease: false
|
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
69
|
+
none: false
|
|
70
|
+
requirements:
|
|
71
|
+
- - ">="
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
hash: 3
|
|
74
|
+
segments:
|
|
75
|
+
- 0
|
|
76
|
+
version: "0"
|
|
77
|
+
type: :development
|
|
78
|
+
version_requirements: *id004
|
|
79
|
+
description: " A stackable dynamic tree based Rack router.\n"
|
|
66
80
|
email: josh@joshpeek.com
|
|
67
81
|
executables: []
|
|
68
82
|
|
|
69
83
|
extensions: []
|
|
70
84
|
|
|
71
|
-
extra_rdoc_files:
|
|
72
|
-
|
|
73
|
-
- README.rdoc
|
|
85
|
+
extra_rdoc_files: []
|
|
86
|
+
|
|
74
87
|
files:
|
|
75
|
-
-
|
|
76
|
-
-
|
|
88
|
+
- README.rdoc
|
|
89
|
+
- LICENSE
|
|
77
90
|
- lib/rack/mount/analysis/histogram.rb
|
|
78
91
|
- lib/rack/mount/analysis/splitting.rb
|
|
79
92
|
- lib/rack/mount/code_generation.rb
|
|
@@ -83,16 +96,10 @@ files:
|
|
|
83
96
|
- lib/rack/mount/regexp_with_named_groups.rb
|
|
84
97
|
- lib/rack/mount/route.rb
|
|
85
98
|
- lib/rack/mount/route_set.rb
|
|
86
|
-
- lib/rack/mount/strexp.rb
|
|
87
99
|
- lib/rack/mount/strexp/parser.rb
|
|
88
|
-
- lib/rack/mount/strexp/parser.y
|
|
89
100
|
- lib/rack/mount/strexp/tokenizer.rb
|
|
90
|
-
- lib/rack/mount/strexp
|
|
101
|
+
- lib/rack/mount/strexp.rb
|
|
91
102
|
- lib/rack/mount/utils.rb
|
|
92
|
-
- lib/rack/mount/vendor/multimap/multimap.rb
|
|
93
|
-
- lib/rack/mount/vendor/multimap/multiset.rb
|
|
94
|
-
- lib/rack/mount/vendor/multimap/nested_multimap.rb
|
|
95
|
-
- lib/rack/mount/vendor/regin/regin.rb
|
|
96
103
|
- lib/rack/mount/vendor/regin/regin/alternation.rb
|
|
97
104
|
- lib/rack/mount/vendor/regin/regin/anchor.rb
|
|
98
105
|
- lib/rack/mount/vendor/regin/regin/atom.rb
|
|
@@ -105,9 +112,11 @@ files:
|
|
|
105
112
|
- lib/rack/mount/vendor/regin/regin/parser.rb
|
|
106
113
|
- lib/rack/mount/vendor/regin/regin/tokenizer.rb
|
|
107
114
|
- lib/rack/mount/vendor/regin/regin/version.rb
|
|
115
|
+
- lib/rack/mount/vendor/regin/regin.rb
|
|
108
116
|
- lib/rack/mount/version.rb
|
|
117
|
+
- lib/rack/mount.rb
|
|
109
118
|
has_rdoc: true
|
|
110
|
-
homepage:
|
|
119
|
+
homepage: https://github.com/josh/rack-mount
|
|
111
120
|
licenses: []
|
|
112
121
|
|
|
113
122
|
post_install_message:
|
|
@@ -136,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
136
145
|
requirements: []
|
|
137
146
|
|
|
138
147
|
rubyforge_project:
|
|
139
|
-
rubygems_version: 1.
|
|
148
|
+
rubygems_version: 1.5.2
|
|
140
149
|
signing_key:
|
|
141
150
|
specification_version: 3
|
|
142
151
|
summary: Stackable dynamic tree based Rack router
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
require 'rack/mount/utils'
|
|
2
|
-
|
|
3
|
-
module Rack::Mount
|
|
4
|
-
module Analysis
|
|
5
|
-
class Frequency #:nodoc:
|
|
6
|
-
def initialize(*keys)
|
|
7
|
-
clear
|
|
8
|
-
keys.each { |key| self << key }
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def clear
|
|
12
|
-
@raw_keys = []
|
|
13
|
-
@key_frequency = Analysis::Histogram.new
|
|
14
|
-
self
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def <<(key)
|
|
18
|
-
raise ArgumentError unless key.is_a?(Hash)
|
|
19
|
-
@raw_keys << key
|
|
20
|
-
nil
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def possible_keys
|
|
24
|
-
@possible_keys ||= begin
|
|
25
|
-
@raw_keys.map do |key|
|
|
26
|
-
key.inject({}) { |requirements, (method, requirement)|
|
|
27
|
-
process_key(requirements, method, requirement)
|
|
28
|
-
requirements
|
|
29
|
-
}
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def process_key(requirements, method, requirement)
|
|
35
|
-
if requirement.is_a?(Regexp)
|
|
36
|
-
expression = Utils.parse_regexp(requirement)
|
|
37
|
-
|
|
38
|
-
if expression.is_a?(Regin::Expression) && expression.anchored_to_line?
|
|
39
|
-
expression = Regin::Expression.new(expression.reject { |e| e.is_a?(Regin::Anchor) })
|
|
40
|
-
return requirements[method] = expression.to_s if expression.literal?
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
requirements[method] = requirement
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def report
|
|
48
|
-
@report ||= begin
|
|
49
|
-
possible_keys.each { |keys| keys.each_pair { |key, _| @key_frequency << key } }
|
|
50
|
-
return [] if @key_frequency.count <= 1
|
|
51
|
-
@key_frequency.keys_in_upper_quartile
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def expire!
|
|
56
|
-
@possible_keys = @report = nil
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
class Rack::Mount::StrexpParser
|
|
2
|
-
rule
|
|
3
|
-
target: expr { result = anchor ? "\\A#{val.join}\\Z" : "\\A#{val.join}" }
|
|
4
|
-
|
|
5
|
-
expr: expr token { result = val.join }
|
|
6
|
-
| token
|
|
7
|
-
|
|
8
|
-
token: PARAM {
|
|
9
|
-
name = val[0].to_sym
|
|
10
|
-
requirement = requirements[name]
|
|
11
|
-
result = REGEXP_NAMED_CAPTURE % [name, requirement]
|
|
12
|
-
}
|
|
13
|
-
| GLOB {
|
|
14
|
-
name = val[0].to_sym
|
|
15
|
-
requirement = requirements[name]
|
|
16
|
-
result = REGEXP_NAMED_CAPTURE % [name, '.+' || requirement]
|
|
17
|
-
}
|
|
18
|
-
| LPAREN expr RPAREN { result = "(?:#{val[1]})?" }
|
|
19
|
-
| CHAR { result = Regexp.escape(val[0]) }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
---- header ----
|
|
23
|
-
require 'rack/mount/utils'
|
|
24
|
-
require 'rack/mount/strexp/tokenizer'
|
|
25
|
-
|
|
26
|
-
---- inner
|
|
27
|
-
|
|
28
|
-
if Regin.regexp_supports_named_captures?
|
|
29
|
-
REGEXP_NAMED_CAPTURE = '(?<%s>%s)'.freeze
|
|
30
|
-
else
|
|
31
|
-
REGEXP_NAMED_CAPTURE = '(?:<%s>%s)'.freeze
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
attr_accessor :anchor, :requirements
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
class Rack::Mount::StrexpParser
|
|
2
|
-
macro
|
|
3
|
-
RESERVED \(|\)|:|\*
|
|
4
|
-
ALPHA_U [a-zA-Z_]
|
|
5
|
-
rule
|
|
6
|
-
\\({RESERVED}) { [:CHAR, @ss[1]] }
|
|
7
|
-
\:({ALPHA_U}\w*) { [:PARAM, @ss[1]] }
|
|
8
|
-
\*({ALPHA_U}\w*) { [:GLOB, @ss[1]] }
|
|
9
|
-
\( { [:LPAREN, text] }
|
|
10
|
-
\) { [:RPAREN, text] }
|
|
11
|
-
. { [:CHAR, text] }
|
|
12
|
-
end
|