mustermann19 0.3.1 → 0.3.1.1
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.
- checksums.yaml +7 -0
- data/.travis.yml +4 -3
- data/README.md +680 -376
- data/lib/mustermann/ast/compiler.rb +13 -7
- data/lib/mustermann/ast/expander.rb +11 -5
- data/lib/mustermann/ast/node.rb +27 -1
- data/lib/mustermann/ast/param_scanner.rb +20 -0
- data/lib/mustermann/ast/parser.rb +131 -12
- data/lib/mustermann/ast/pattern.rb +45 -6
- data/lib/mustermann/ast/template_generator.rb +28 -0
- data/lib/mustermann/ast/validation.rb +5 -3
- data/lib/mustermann/composite.rb +103 -0
- data/lib/mustermann/expander.rb +1 -1
- data/lib/mustermann/express.rb +34 -0
- data/lib/mustermann/flask.rb +204 -0
- data/lib/mustermann/identity.rb +54 -0
- data/lib/mustermann/pattern.rb +186 -12
- data/lib/mustermann/pattern_cache.rb +49 -0
- data/lib/mustermann/pyramid.rb +25 -0
- data/lib/mustermann/regexp_based.rb +18 -1
- data/lib/mustermann/regular.rb +1 -1
- data/lib/mustermann/shell.rb +8 -0
- data/lib/mustermann/simple.rb +1 -1
- data/lib/mustermann/simple_match.rb +5 -0
- data/lib/mustermann/sinatra.rb +19 -5
- data/lib/mustermann/string_scanner.rb +314 -0
- data/lib/mustermann/template.rb +10 -0
- data/lib/mustermann/to_pattern.rb +11 -6
- data/lib/mustermann/version.rb +1 -1
- data/lib/mustermann.rb +52 -3
- data/mustermann.gemspec +1 -1
- data/spec/composite_spec.rb +147 -0
- data/spec/expander_spec.rb +15 -0
- data/spec/express_spec.rb +209 -0
- data/spec/flask_spec.rb +361 -0
- data/spec/flask_subclass_spec.rb +368 -0
- data/spec/identity_spec.rb +44 -0
- data/spec/mustermann_spec.rb +14 -0
- data/spec/pattern_spec.rb +7 -3
- data/spec/pyramid_spec.rb +101 -0
- data/spec/rails_spec.rb +76 -2
- data/spec/regular_spec.rb +25 -0
- data/spec/shell_spec.rb +33 -0
- data/spec/simple_spec.rb +25 -0
- data/spec/sinatra_spec.rb +184 -9
- data/spec/string_scanner_spec.rb +271 -0
- data/spec/support/expand_matcher.rb +7 -5
- data/spec/support/generate_template_matcher.rb +27 -0
- data/spec/support/pattern.rb +3 -0
- data/spec/support/scan_matcher.rb +63 -0
- data/spec/support.rb +2 -1
- data/spec/template_spec.rb +22 -0
- data/spec/to_pattern_spec.rb +49 -0
- metadata +47 -61
- data/internals.md +0 -64
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mustermann19
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.1
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Konstantin Haase
|
@@ -10,76 +9,53 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2014-
|
12
|
+
date: 2014-11-23 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: enumerable-lazy
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ! '>='
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '0'
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ! '>='
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '0'
|
31
14
|
- !ruby/object:Gem::Dependency
|
32
15
|
name: rspec
|
33
16
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
17
|
requirements:
|
36
|
-
- -
|
18
|
+
- - '>='
|
37
19
|
- !ruby/object:Gem::Version
|
38
20
|
version: '0'
|
39
21
|
type: :development
|
40
22
|
prerelease: false
|
41
23
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
24
|
requirements:
|
44
|
-
- -
|
25
|
+
- - '>='
|
45
26
|
- !ruby/object:Gem::Version
|
46
27
|
version: '0'
|
47
28
|
- !ruby/object:Gem::Dependency
|
48
29
|
name: rspec-its
|
49
30
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
31
|
requirements:
|
52
|
-
- -
|
32
|
+
- - '>='
|
53
33
|
- !ruby/object:Gem::Version
|
54
34
|
version: '0'
|
55
35
|
type: :development
|
56
36
|
prerelease: false
|
57
37
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
38
|
requirements:
|
60
|
-
- -
|
39
|
+
- - '>='
|
61
40
|
- !ruby/object:Gem::Version
|
62
41
|
version: '0'
|
63
42
|
- !ruby/object:Gem::Dependency
|
64
43
|
name: addressable
|
65
44
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
45
|
requirements:
|
68
|
-
- -
|
46
|
+
- - '>='
|
69
47
|
- !ruby/object:Gem::Version
|
70
48
|
version: '0'
|
71
49
|
type: :development
|
72
50
|
prerelease: false
|
73
51
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
52
|
requirements:
|
76
|
-
- -
|
53
|
+
- - '>='
|
77
54
|
- !ruby/object:Gem::Version
|
78
55
|
version: '0'
|
79
56
|
- !ruby/object:Gem::Dependency
|
80
57
|
name: sinatra
|
81
58
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
59
|
requirements:
|
84
60
|
- - ~>
|
85
61
|
- !ruby/object:Gem::Version
|
@@ -87,7 +63,6 @@ dependencies:
|
|
87
63
|
type: :development
|
88
64
|
prerelease: false
|
89
65
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
66
|
requirements:
|
92
67
|
- - ~>
|
93
68
|
- !ruby/object:Gem::Version
|
@@ -95,81 +70,71 @@ dependencies:
|
|
95
70
|
- !ruby/object:Gem::Dependency
|
96
71
|
name: rack-test
|
97
72
|
requirement: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
73
|
requirements:
|
100
|
-
- -
|
74
|
+
- - '>='
|
101
75
|
- !ruby/object:Gem::Version
|
102
76
|
version: '0'
|
103
77
|
type: :development
|
104
78
|
prerelease: false
|
105
79
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
80
|
requirements:
|
108
|
-
- -
|
81
|
+
- - '>='
|
109
82
|
- !ruby/object:Gem::Version
|
110
83
|
version: '0'
|
111
84
|
- !ruby/object:Gem::Dependency
|
112
85
|
name: rake
|
113
86
|
requirement: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
87
|
requirements:
|
116
|
-
- -
|
88
|
+
- - '>='
|
117
89
|
- !ruby/object:Gem::Version
|
118
90
|
version: '0'
|
119
91
|
type: :development
|
120
92
|
prerelease: false
|
121
93
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
none: false
|
123
94
|
requirements:
|
124
|
-
- -
|
95
|
+
- - '>='
|
125
96
|
- !ruby/object:Gem::Version
|
126
97
|
version: '0'
|
127
98
|
- !ruby/object:Gem::Dependency
|
128
99
|
name: yard
|
129
100
|
requirement: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
101
|
requirements:
|
132
|
-
- -
|
102
|
+
- - '>='
|
133
103
|
- !ruby/object:Gem::Version
|
134
104
|
version: '0'
|
135
105
|
type: :development
|
136
106
|
prerelease: false
|
137
107
|
version_requirements: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
108
|
requirements:
|
140
|
-
- -
|
109
|
+
- - '>='
|
141
110
|
- !ruby/object:Gem::Version
|
142
111
|
version: '0'
|
143
112
|
- !ruby/object:Gem::Dependency
|
144
113
|
name: simplecov
|
145
114
|
requirement: !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
115
|
requirements:
|
148
|
-
- -
|
116
|
+
- - '>='
|
149
117
|
- !ruby/object:Gem::Version
|
150
118
|
version: '0'
|
151
119
|
type: :development
|
152
120
|
prerelease: false
|
153
121
|
version_requirements: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
122
|
requirements:
|
156
|
-
- -
|
123
|
+
- - '>='
|
157
124
|
- !ruby/object:Gem::Version
|
158
125
|
version: '0'
|
159
126
|
- !ruby/object:Gem::Dependency
|
160
127
|
name: coveralls
|
161
128
|
requirement: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
129
|
requirements:
|
164
|
-
- -
|
130
|
+
- - '>='
|
165
131
|
- !ruby/object:Gem::Version
|
166
132
|
version: '0'
|
167
133
|
type: :development
|
168
134
|
prerelease: false
|
169
135
|
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
171
136
|
requirements:
|
172
|
-
- -
|
137
|
+
- - '>='
|
173
138
|
- !ruby/object:Gem::Version
|
174
139
|
version: '0'
|
175
140
|
description: library implementing patterns that behave like regular expressions for
|
@@ -179,7 +144,6 @@ executables: []
|
|
179
144
|
extensions: []
|
180
145
|
extra_rdoc_files:
|
181
146
|
- README.md
|
182
|
-
- internals.md
|
183
147
|
files:
|
184
148
|
- .gitignore
|
185
149
|
- .rspec
|
@@ -193,25 +157,31 @@ files:
|
|
193
157
|
- bench/regexp.rb
|
194
158
|
- bench/simple_vs_sinatra.rb
|
195
159
|
- bench/template_vs_addressable.rb
|
196
|
-
- internals.md
|
197
160
|
- lib/mustermann.rb
|
198
161
|
- lib/mustermann/ast/compiler.rb
|
199
162
|
- lib/mustermann/ast/expander.rb
|
200
163
|
- lib/mustermann/ast/node.rb
|
164
|
+
- lib/mustermann/ast/param_scanner.rb
|
201
165
|
- lib/mustermann/ast/parser.rb
|
202
166
|
- lib/mustermann/ast/pattern.rb
|
167
|
+
- lib/mustermann/ast/template_generator.rb
|
203
168
|
- lib/mustermann/ast/transformer.rb
|
204
169
|
- lib/mustermann/ast/translator.rb
|
205
170
|
- lib/mustermann/ast/tree_renderer.rb
|
206
171
|
- lib/mustermann/ast/validation.rb
|
207
172
|
- lib/mustermann/caster.rb
|
173
|
+
- lib/mustermann/composite.rb
|
208
174
|
- lib/mustermann/equality_map.rb
|
209
175
|
- lib/mustermann/error.rb
|
210
176
|
- lib/mustermann/expander.rb
|
177
|
+
- lib/mustermann/express.rb
|
211
178
|
- lib/mustermann/extension.rb
|
179
|
+
- lib/mustermann/flask.rb
|
212
180
|
- lib/mustermann/identity.rb
|
213
181
|
- lib/mustermann/mapper.rb
|
214
182
|
- lib/mustermann/pattern.rb
|
183
|
+
- lib/mustermann/pattern_cache.rb
|
184
|
+
- lib/mustermann/pyramid.rb
|
215
185
|
- lib/mustermann/rails.rb
|
216
186
|
- lib/mustermann/regexp_based.rb
|
217
187
|
- lib/mustermann/regular.rb
|
@@ -222,16 +192,22 @@ files:
|
|
222
192
|
- lib/mustermann/simple.rb
|
223
193
|
- lib/mustermann/simple_match.rb
|
224
194
|
- lib/mustermann/sinatra.rb
|
195
|
+
- lib/mustermann/string_scanner.rb
|
225
196
|
- lib/mustermann/template.rb
|
226
197
|
- lib/mustermann/to_pattern.rb
|
227
198
|
- lib/mustermann/version.rb
|
228
199
|
- mustermann.gemspec
|
200
|
+
- spec/composite_spec.rb
|
229
201
|
- spec/expander_spec.rb
|
202
|
+
- spec/express_spec.rb
|
230
203
|
- spec/extension_spec.rb
|
204
|
+
- spec/flask_spec.rb
|
205
|
+
- spec/flask_subclass_spec.rb
|
231
206
|
- spec/identity_spec.rb
|
232
207
|
- spec/mapper_spec.rb
|
233
208
|
- spec/mustermann_spec.rb
|
234
209
|
- spec/pattern_spec.rb
|
210
|
+
- spec/pyramid_spec.rb
|
235
211
|
- spec/rails_spec.rb
|
236
212
|
- spec/regexp_based_spec.rb
|
237
213
|
- spec/regular_spec.rb
|
@@ -241,46 +217,53 @@ files:
|
|
241
217
|
- spec/simple_match_spec.rb
|
242
218
|
- spec/simple_spec.rb
|
243
219
|
- spec/sinatra_spec.rb
|
220
|
+
- spec/string_scanner_spec.rb
|
244
221
|
- spec/support.rb
|
245
222
|
- spec/support/coverage.rb
|
246
223
|
- spec/support/env.rb
|
247
224
|
- spec/support/expand_matcher.rb
|
225
|
+
- spec/support/generate_template_matcher.rb
|
248
226
|
- spec/support/match_matcher.rb
|
249
227
|
- spec/support/pattern.rb
|
228
|
+
- spec/support/scan_matcher.rb
|
250
229
|
- spec/template_spec.rb
|
251
230
|
- spec/to_pattern_spec.rb
|
252
231
|
homepage: https://github.com/namusyaka/mustermann
|
253
232
|
licenses:
|
254
233
|
- MIT
|
234
|
+
metadata: {}
|
255
235
|
post_install_message:
|
256
236
|
rdoc_options: []
|
257
237
|
require_paths:
|
258
238
|
- lib
|
259
239
|
required_ruby_version: !ruby/object:Gem::Requirement
|
260
|
-
none: false
|
261
240
|
requirements:
|
262
|
-
- -
|
241
|
+
- - '>='
|
263
242
|
- !ruby/object:Gem::Version
|
264
243
|
version: 1.9.2
|
265
244
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
|
-
none: false
|
267
245
|
requirements:
|
268
|
-
- -
|
246
|
+
- - '>='
|
269
247
|
- !ruby/object:Gem::Version
|
270
248
|
version: '0'
|
271
249
|
requirements: []
|
272
250
|
rubyforge_project:
|
273
|
-
rubygems_version:
|
251
|
+
rubygems_version: 2.0.14
|
274
252
|
signing_key:
|
275
|
-
specification_version:
|
253
|
+
specification_version: 4
|
276
254
|
summary: use patterns like regular expressions
|
277
255
|
test_files:
|
256
|
+
- spec/composite_spec.rb
|
278
257
|
- spec/expander_spec.rb
|
258
|
+
- spec/express_spec.rb
|
279
259
|
- spec/extension_spec.rb
|
260
|
+
- spec/flask_spec.rb
|
261
|
+
- spec/flask_subclass_spec.rb
|
280
262
|
- spec/identity_spec.rb
|
281
263
|
- spec/mapper_spec.rb
|
282
264
|
- spec/mustermann_spec.rb
|
283
265
|
- spec/pattern_spec.rb
|
266
|
+
- spec/pyramid_spec.rb
|
284
267
|
- spec/rails_spec.rb
|
285
268
|
- spec/regexp_based_spec.rb
|
286
269
|
- spec/regular_spec.rb
|
@@ -290,12 +273,15 @@ test_files:
|
|
290
273
|
- spec/simple_match_spec.rb
|
291
274
|
- spec/simple_spec.rb
|
292
275
|
- spec/sinatra_spec.rb
|
276
|
+
- spec/string_scanner_spec.rb
|
293
277
|
- spec/support.rb
|
294
278
|
- spec/support/coverage.rb
|
295
279
|
- spec/support/env.rb
|
296
280
|
- spec/support/expand_matcher.rb
|
281
|
+
- spec/support/generate_template_matcher.rb
|
297
282
|
- spec/support/match_matcher.rb
|
298
283
|
- spec/support/pattern.rb
|
284
|
+
- spec/support/scan_matcher.rb
|
299
285
|
- spec/template_spec.rb
|
300
286
|
- spec/to_pattern_spec.rb
|
301
287
|
has_rdoc:
|
data/internals.md
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
# Internal API
|
2
|
-
|
3
|
-
This document describes how to use [Mustermann](README.md)'s internal API.
|
4
|
-
|
5
|
-
It is a secondary goal to keep the internal API as stable as possible, in a state where it would well be possible to interface with it.
|
6
|
-
However, the internal API is not covered by Semantic Versioning. As a rule of thumb, no backwards incompatible changes should be introduced to the API in minor releases (starting from 1.0.0).
|
7
|
-
|
8
|
-
Should the internal API gain widespread/production use, we might consider moving parts of it over into the public API.
|
9
|
-
|
10
|
-
Here is a quick example of what you can do with this:
|
11
|
-
|
12
|
-
``` ruby
|
13
|
-
require 'mustermann/ast/pattern'
|
14
|
-
|
15
|
-
class MyPattern < Mustermann::AST::Pattern
|
16
|
-
on("~") { |c| node(:capture, buffer[1]) if expect(/\{(\w+)\}/) }
|
17
|
-
on("+") { |c| node(:named_splat, buffer[1]) if expect(/\{(\w+)\}/) }
|
18
|
-
on("?") { |c| node(:optional, node(:capture, buffer[1])) if expect(/\{(\w+)\}/) }
|
19
|
-
end
|
20
|
-
|
21
|
-
pattern = MyPattern.new("/+{prefix}/~{page}/?{optional}")
|
22
|
-
pattern.params("/a/") # => nil
|
23
|
-
pattern.params("/a/b/") # => { "prefix" => "a", "page" => "b", "optional" => nil }
|
24
|
-
pattern.params("/a/b/c") # => { "prefix" => "a", "page" => "b", "optional" => "c" }
|
25
|
-
pattern.params("/a/b/c/") # => { "prefix" => "a/b", "page" => "c", "optional" => nil }
|
26
|
-
|
27
|
-
pattern.expand(prefix: "a", page: "foo") # => "/a/foo/"
|
28
|
-
pattern.expand(prefix: "a/b", page: "c/d") # => "/a/b/c%2Fd/"
|
29
|
-
|
30
|
-
require 'mustermann'
|
31
|
-
Mustermann.register(:my_pattern, MyPattern, load: false)
|
32
|
-
Mustermann.new('/+{prefix}/~{page}/?{optional}', type: :my_pattern) # => #<MyPattern:"/+{prefix}/~{page}/?{optional}">
|
33
|
-
|
34
|
-
require 'sinatra/base'
|
35
|
-
class MyApp < Sinatra::Base
|
36
|
-
register Mustermann
|
37
|
-
set :pattern, type: :my_pattern
|
38
|
-
|
39
|
-
get '/hello/~{name}' do
|
40
|
-
"Hello #{params[:name].capitalize}!"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
require 'mustermann/ast/tree_renderer'
|
45
|
-
ast = MyPattern::Parser.parse(pattern.to_s)
|
46
|
-
puts Mustermann::AST::TreeRenderer.render(ast)
|
47
|
-
|
48
|
-
```
|
49
|
-
|
50
|
-
## Pattern Registration
|
51
|
-
|
52
|
-
...
|
53
|
-
|
54
|
-
## Build Your Own Pattern
|
55
|
-
|
56
|
-
...
|
57
|
-
|
58
|
-
## Patterns Based on Regular Expressions
|
59
|
-
|
60
|
-
...
|
61
|
-
|
62
|
-
## AST-Based Patterns
|
63
|
-
|
64
|
-
...
|