mustermann19 0.3.1 → 0.3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +4 -3
  3. data/README.md +680 -376
  4. data/lib/mustermann/ast/compiler.rb +13 -7
  5. data/lib/mustermann/ast/expander.rb +11 -5
  6. data/lib/mustermann/ast/node.rb +27 -1
  7. data/lib/mustermann/ast/param_scanner.rb +20 -0
  8. data/lib/mustermann/ast/parser.rb +131 -12
  9. data/lib/mustermann/ast/pattern.rb +45 -6
  10. data/lib/mustermann/ast/template_generator.rb +28 -0
  11. data/lib/mustermann/ast/validation.rb +5 -3
  12. data/lib/mustermann/composite.rb +103 -0
  13. data/lib/mustermann/expander.rb +1 -1
  14. data/lib/mustermann/express.rb +34 -0
  15. data/lib/mustermann/flask.rb +204 -0
  16. data/lib/mustermann/identity.rb +54 -0
  17. data/lib/mustermann/pattern.rb +186 -12
  18. data/lib/mustermann/pattern_cache.rb +49 -0
  19. data/lib/mustermann/pyramid.rb +25 -0
  20. data/lib/mustermann/regexp_based.rb +18 -1
  21. data/lib/mustermann/regular.rb +1 -1
  22. data/lib/mustermann/shell.rb +8 -0
  23. data/lib/mustermann/simple.rb +1 -1
  24. data/lib/mustermann/simple_match.rb +5 -0
  25. data/lib/mustermann/sinatra.rb +19 -5
  26. data/lib/mustermann/string_scanner.rb +314 -0
  27. data/lib/mustermann/template.rb +10 -0
  28. data/lib/mustermann/to_pattern.rb +11 -6
  29. data/lib/mustermann/version.rb +1 -1
  30. data/lib/mustermann.rb +52 -3
  31. data/mustermann.gemspec +1 -1
  32. data/spec/composite_spec.rb +147 -0
  33. data/spec/expander_spec.rb +15 -0
  34. data/spec/express_spec.rb +209 -0
  35. data/spec/flask_spec.rb +361 -0
  36. data/spec/flask_subclass_spec.rb +368 -0
  37. data/spec/identity_spec.rb +44 -0
  38. data/spec/mustermann_spec.rb +14 -0
  39. data/spec/pattern_spec.rb +7 -3
  40. data/spec/pyramid_spec.rb +101 -0
  41. data/spec/rails_spec.rb +76 -2
  42. data/spec/regular_spec.rb +25 -0
  43. data/spec/shell_spec.rb +33 -0
  44. data/spec/simple_spec.rb +25 -0
  45. data/spec/sinatra_spec.rb +184 -9
  46. data/spec/string_scanner_spec.rb +271 -0
  47. data/spec/support/expand_matcher.rb +7 -5
  48. data/spec/support/generate_template_matcher.rb +27 -0
  49. data/spec/support/pattern.rb +3 -0
  50. data/spec/support/scan_matcher.rb +63 -0
  51. data/spec/support.rb +2 -1
  52. data/spec/template_spec.rb +22 -0
  53. data/spec/to_pattern_spec.rb +49 -0
  54. metadata +47 -61
  55. 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-09-23 00:00:00.000000000 Z
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: 1.8.23.2
251
+ rubygems_version: 2.0.14
274
252
  signing_key:
275
- specification_version: 3
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
- ...