mustermann 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,16 +5,36 @@ require 'sinatra/base'
5
5
 
6
6
  describe Mustermann do
7
7
  describe :new do
8
- example { Mustermann.new('') .should be_a(Mustermann::Sinatra) }
9
- example { Mustermann.new('', type: :identity) .should be_a(Mustermann::Identity) }
10
- example { Mustermann.new('', type: :rails) .should be_a(Mustermann::Rails) }
11
- example { Mustermann.new('', type: :shell) .should be_a(Mustermann::Shell) }
12
- example { Mustermann.new('', type: :sinatra) .should be_a(Mustermann::Sinatra) }
13
- example { Mustermann.new('', type: :simple) .should be_a(Mustermann::Simple) }
14
- example { Mustermann.new('', type: :template) .should be_a(Mustermann::Template) }
15
-
16
- example { expect { Mustermann.new('', foo: :bar) }.to raise_error(ArgumentError, "unsupported option :foo for Mustermann::Sinatra") }
17
- example { expect { Mustermann.new('', type: :ast) }.to raise_error(ArgumentError, "unsupported type :ast") }
8
+ context "string argument" do
9
+ example { Mustermann.new('') .should be_a(Mustermann::Sinatra) }
10
+ example { Mustermann.new('', type: :identity) .should be_a(Mustermann::Identity) }
11
+ example { Mustermann.new('', type: :rails) .should be_a(Mustermann::Rails) }
12
+ example { Mustermann.new('', type: :shell) .should be_a(Mustermann::Shell) }
13
+ example { Mustermann.new('', type: :sinatra) .should be_a(Mustermann::Sinatra) }
14
+ example { Mustermann.new('', type: :simple) .should be_a(Mustermann::Simple) }
15
+ example { Mustermann.new('', type: :template) .should be_a(Mustermann::Template) }
16
+
17
+ example { expect { Mustermann.new('', foo: :bar) }.to raise_error(ArgumentError, "unsupported option :foo for Mustermann::Sinatra") }
18
+ example { expect { Mustermann.new('', type: :ast) }.to raise_error(ArgumentError, "unsupported type :ast") }
19
+ end
20
+
21
+ context "pattern argument" do
22
+ subject(:pattern) { Mustermann.new('') }
23
+ example { Mustermann.new(pattern).should be == pattern }
24
+ example { Mustermann.new(pattern, type: :rails).should be_a(Mustermann::Sinatra) }
25
+ end
26
+
27
+ context "regexp argument" do
28
+ example { Mustermann.new(//) .should be_a(Mustermann::Regular) }
29
+ example { Mustermann.new(//, type: :rails) .should be_a(Mustermann::Regular) }
30
+ end
31
+
32
+ context "argument implementing #to_pattern" do
33
+ subject(:pattern) { Class.new { def to_pattern(**o) Mustermann.new('foo', **o) end }.new }
34
+ example { Mustermann.new(pattern) .should be_a(Mustermann::Sinatra) }
35
+ example { Mustermann.new(pattern, type: :rails) .should be_a(Mustermann::Rails) }
36
+ example { Mustermann.new(pattern).to_s.should be == 'foo' }
37
+ end
18
38
  end
19
39
 
20
40
  describe :[] do
@@ -1,26 +1,49 @@
1
1
  require 'support'
2
2
  require 'mustermann/pattern'
3
+ require 'mustermann/sinatra'
4
+ require 'mustermann/rails'
3
5
 
4
6
  describe Mustermann::Pattern do
5
7
  describe :=== do
6
8
  it 'raises a NotImplementedError when used directly' do
7
- expect { described_class.new("") === "" }.to raise_error(NotImplementedError)
9
+ expect { Mustermann::Pattern.new("") === "" }.to raise_error(NotImplementedError)
8
10
  end
9
11
  end
10
12
 
11
13
  describe :initialize do
12
14
  it 'raises an ArgumentError for unknown options' do
13
- expect { described_class.new("", foo: :bar) }.to raise_error(ArgumentError)
15
+ expect { Mustermann::Pattern.new("", foo: :bar) }.to raise_error(ArgumentError)
14
16
  end
15
17
 
16
18
  it 'does not complain about unknown options if ignore_unknown_options is enabled' do
17
- expect { described_class.new("", foo: :bar, ignore_unknown_options: true) }.not_to raise_error
19
+ expect { Mustermann::Pattern.new("", foo: :bar, ignore_unknown_options: true) }.not_to raise_error
18
20
  end
19
21
  end
20
22
 
21
23
  describe :expand do
22
- subject(:pattern) { described_class.new("") }
24
+ subject(:pattern) { Mustermann::Pattern.new("") }
23
25
  it { should_not respond_to(:expand) }
24
26
  it { expect { pattern.expand }.to raise_error(NotImplementedError) }
25
27
  end
28
+
29
+ describe :== do
30
+ example { Mustermann::Pattern.new('/foo') .should be == Mustermann::Pattern.new('/foo') }
31
+ example { Mustermann::Pattern.new('/foo') .should_not be == Mustermann::Pattern.new('/bar') }
32
+ example { Mustermann::Sinatra.new('/foo') .should be == Mustermann::Sinatra.new('/foo') }
33
+ example { Mustermann::Rails.new('/foo') .should_not be == Mustermann::Sinatra.new('/foo') }
34
+ end
35
+
36
+ describe :eql? do
37
+ example { Mustermann::Pattern.new('/foo') .should be_eql Mustermann::Pattern.new('/foo') }
38
+ example { Mustermann::Pattern.new('/foo') .should_not be_eql Mustermann::Pattern.new('/bar') }
39
+ example { Mustermann::Sinatra.new('/foo') .should be_eql Mustermann::Sinatra.new('/foo') }
40
+ example { Mustermann::Rails.new('/foo') .should_not be_eql Mustermann::Sinatra.new('/foo') }
41
+ end
42
+
43
+ describe :equal? do
44
+ example { Mustermann::Pattern.new('/foo') .should be_equal Mustermann::Pattern.new('/foo') }
45
+ example { Mustermann::Pattern.new('/foo') .should_not be_equal Mustermann::Pattern.new('/bar') }
46
+ example { Mustermann::Sinatra.new('/foo') .should be_equal Mustermann::Sinatra.new('/foo') }
47
+ example { Mustermann::Rails.new('/foo') .should_not be_equal Mustermann::Sinatra.new('/foo') }
48
+ end
26
49
  end
@@ -3,6 +3,6 @@ require 'mustermann/regexp_based'
3
3
 
4
4
  describe Mustermann::RegexpBased do
5
5
  it 'raises a NotImplementedError when used directly' do
6
- expect { described_class.new("") === "" }.to raise_error(NotImplementedError)
6
+ expect { Mustermann::RegexpBased.new("") === "" }.to raise_error(NotImplementedError)
7
7
  end
8
8
  end
@@ -0,0 +1,36 @@
1
+ require 'support'
2
+ require 'mustermann/regular'
3
+
4
+ describe Mustermann::Regular do
5
+ extend Support::Pattern
6
+
7
+ pattern '' do
8
+ it { should match('') }
9
+ it { should_not match('/') }
10
+ end
11
+
12
+ pattern '/' do
13
+ it { should match('/') }
14
+ it { should_not match('/foo') }
15
+ end
16
+
17
+ pattern '/foo' do
18
+ it { should match('/foo') }
19
+ it { should_not match('/bar') }
20
+ it { should_not match('/foo.bar') }
21
+ end
22
+
23
+ pattern '/foo/bar' do
24
+ it { should match('/foo/bar') }
25
+ it { should_not match('/foo%2Fbar') }
26
+ it { should_not match('/foo%2fbar') }
27
+ end
28
+
29
+ pattern '/(?<foo>.*)' do
30
+ it { should match('/foo') .capturing foo: 'foo' }
31
+ it { should match('/bar') .capturing foo: 'bar' }
32
+ it { should match('/foo.bar') .capturing foo: 'foo.bar' }
33
+ it { should match('/%0Afoo') .capturing foo: '%0Afoo' }
34
+ it { should match('/foo%2Fbar') .capturing foo: 'foo%2Fbar' }
35
+ end
36
+ end
@@ -2,7 +2,7 @@ require 'mustermann/router/rack'
2
2
 
3
3
  describe Mustermann::Router::Rack do
4
4
  include Rack::Test::Methods
5
- subject(:app) { described_class.new }
5
+ subject(:app) { Mustermann::Router::Rack.new }
6
6
 
7
7
  context 'matching' do
8
8
  before { app.on('/foo') { [418, {'Content-Type' => 'text/plain'}, 'bar'] } }
@@ -3,28 +3,30 @@ require 'mustermann/router/simple'
3
3
  describe Mustermann::Router::Simple do
4
4
  describe :initialize do
5
5
  context "with implicit receiver" do
6
- subject(:router) { described_class.new { on('/foo') { 'bar' } } }
6
+ subject(:router) { Mustermann::Router::Simple.new { on('/foo') { 'bar' } } }
7
7
  example { router.call('/foo').should be == 'bar' }
8
8
  end
9
9
 
10
10
  context "with explicit receiver" do
11
- subject(:router) { described_class.new { |r| r.on('/foo') { 'bar' } } }
11
+ subject(:router) { Mustermann::Router::Simple.new { |r| r.on('/foo') { 'bar' } } }
12
12
  example { router.call('/foo').should be == 'bar' }
13
13
  end
14
14
 
15
15
  context "with default" do
16
- subject(:router) { described_class.new(default: 'bar') }
16
+ subject(:router) { Mustermann::Router::Simple.new(default: 'bar') }
17
17
  example { router.call('/foo').should be == 'bar' }
18
18
  end
19
19
  end
20
20
 
21
21
  describe :[]= do
22
- before { subject['/:name'] = proc { |*a| a } }
23
- example { subject.call('/foo').should be == ['/foo', "name" => 'foo'] }
22
+ subject(:router) { Mustermann::Router::Simple.new }
23
+ before { router['/:name'] = proc { |*a| a } }
24
+ example { router.call('/foo').should be == ['/foo', "name" => 'foo'] }
24
25
  end
25
26
 
26
27
  describe :[] do
27
- before { subject.on('/x') { 42 } }
28
- example { subject['/x'].call.should be == 42 }
28
+ subject(:router) { Mustermann::Router::Simple.new }
29
+ before { router.on('/x') { 42 } }
30
+ example { router['/x'].call.should be == 42 }
29
31
  end
30
32
  end
@@ -103,6 +103,6 @@ describe Mustermann::Shell do
103
103
  end
104
104
 
105
105
  describe :=~ do
106
- example { '/foo'.should be =~ described_class.new('/foo') }
106
+ example { '/foo'.should be =~ Mustermann::Shell.new('/foo') }
107
107
  end
108
108
  end
@@ -2,7 +2,7 @@ require 'support'
2
2
  require 'mustermann/simple_match'
3
3
 
4
4
  describe Mustermann::SimpleMatch do
5
- subject { described_class.new('example') }
5
+ subject { Mustermann::SimpleMatch.new('example') }
6
6
  its(:to_s) { should be == 'example' }
7
7
  its(:names) { should be == [] }
8
8
  its(:captures) { should be == [] }
@@ -94,6 +94,19 @@ describe Mustermann::Sinatra do
94
94
  example { pattern.params('/foo').should be == {"splat" => ["foo"]} }
95
95
  end
96
96
 
97
+ pattern '/*foo' do
98
+ it { should match('/') .capturing foo: '' }
99
+ it { should match('/foo') .capturing foo: 'foo' }
100
+ it { should match('/foo/bar') .capturing foo: 'foo/bar' }
101
+
102
+ example { pattern.params('/foo') .should be == {"foo" => "foo" } }
103
+ example { pattern.params('/foo/bar') .should be == {"foo" => "foo/bar" } }
104
+ end
105
+
106
+ pattern '/*foo/*bar' do
107
+ it { should match('/foo/bar') .capturing foo: 'foo', bar: 'bar' }
108
+ end
109
+
97
110
  pattern '/:foo/*' do
98
111
  it { should match("/foo/bar/baz") .capturing foo: 'foo', splat: 'bar/baz' }
99
112
  it { should match("/foo/") .capturing foo: 'foo', splat: '' }
@@ -3,4 +3,14 @@ if RUBY_VERSION < '2.0.0'
3
3
  exit 1
4
4
  end
5
5
 
6
- ENV['RACK_ENV'] = 'test'
6
+ ENV['RACK_ENV'] = 'test'
7
+
8
+ require 'tool/warning_filter'
9
+ require 'rspec'
10
+ require 'rspec/its'
11
+
12
+ RSpec.configure do |config|
13
+ config.expect_with :rspec do |c|
14
+ c.syntax = [:should, :expect]
15
+ end
16
+ end
@@ -14,14 +14,14 @@ RSpec::Matchers.define :expand do |values = {}|
14
14
  @string = string
15
15
  end
16
16
 
17
- failure_message_for_should do |pattern|
17
+ failure_message do |pattern|
18
18
  message = "expected %p to be expandable with %p" % [pattern, values]
19
19
  expanded = pattern.expand(values)
20
20
  message << " and result in %p, but got %p" % [@string, expanded] if @string
21
21
  message
22
22
  end
23
23
 
24
- failure_message_for_should_not do |pattern|
24
+ failure_message_when_negated do |pattern|
25
25
  "expected %p not to be expandable with %p" % [pattern, values]
26
26
  end
27
27
  end
@@ -10,7 +10,7 @@ RSpec::Matchers.define :match do |expected|
10
10
  @captures = captures
11
11
  end
12
12
 
13
- failure_message_for_should do |actual|
13
+ failure_message do |actual|
14
14
  require 'pp'
15
15
  match = actual.match(expected)
16
16
  if match
@@ -31,7 +31,7 @@ RSpec::Matchers.define :match do |expected|
31
31
  end
32
32
  end
33
33
 
34
- failure_message_for_should_not do |actual|
34
+ failure_message_when_negated do |actual|
35
35
  "expected %p not to match %p" % [
36
36
  actual.to_s, expected
37
37
  ]
@@ -1,7 +1,9 @@
1
+ require 'timeout'
2
+
1
3
  module Support
2
4
  module Pattern
3
5
  def pattern(pattern, options = nil, &block)
4
- description = "pattern %p" % pattern
6
+ description = "pattern %p" % pattern
5
7
 
6
8
  if options
7
9
  description << " with options %p" % [options]
@@ -26,8 +28,10 @@ module Support
26
28
  end
27
29
 
28
30
  def subject_for(pattern, *args)
29
- instance = described_class.new(pattern, *args)
31
+ instance = Timeout.timeout(1) { described_class.new(pattern, *args) }
30
32
  proc { instance }
33
+ rescue Timeout::Error => error
34
+ proc { raise Timeout::Error, "could not compile #{pattern.inspect} in time", error.backtrace }
31
35
  rescue Exception => error
32
36
  proc { raise error }
33
37
  end
@@ -0,0 +1,20 @@
1
+ require 'support'
2
+ require 'mustermann/to_pattern'
3
+
4
+ describe Mustermann::ToPattern do
5
+ context String do
6
+ example { "".to_pattern .should be_a(Mustermann::Sinatra) }
7
+ example { "".to_pattern(type: :rails) .should be_a(Mustermann::Rails) }
8
+ end
9
+
10
+ context Regexp do
11
+ example { //.to_pattern .should be_a(Mustermann::Regular) }
12
+ example { //.to_pattern(type: :rails) .should be_a(Mustermann::Regular) }
13
+ end
14
+
15
+ context Mustermann::Pattern do
16
+ subject(:pattern) { Mustermann.new('') }
17
+ example { pattern.to_pattern.should be == pattern }
18
+ example { pattern.to_pattern(type: :rails).should be_a(Mustermann::Sinatra) }
19
+ end
20
+ end
metadata CHANGED
@@ -1,139 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mustermann
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-23 00:00:00.000000000 Z
11
+ date: 2014-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: tool
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.2'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - '>='
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-its
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
18
46
  - !ruby/object:Gem::Version
19
47
  version: '0'
20
48
  type: :development
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
- - - '>='
52
+ - - ">="
25
53
  - !ruby/object:Gem::Version
26
54
  version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: addressable
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
- - - '>='
59
+ - - ">="
32
60
  - !ruby/object:Gem::Version
33
61
  version: '0'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
- - - '>='
66
+ - - ">="
39
67
  - !ruby/object:Gem::Version
40
68
  version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: sinatra
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - ~>
73
+ - - "~>"
46
74
  - !ruby/object:Gem::Version
47
75
  version: '1.4'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - ~>
80
+ - - "~>"
53
81
  - !ruby/object:Gem::Version
54
82
  version: '1.4'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rack-test
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - '>='
87
+ - - ">="
60
88
  - !ruby/object:Gem::Version
61
89
  version: '0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - '>='
94
+ - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: rake
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - '>='
101
+ - - ">="
74
102
  - !ruby/object:Gem::Version
75
103
  version: '0'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - '>='
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: yard
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - '>='
115
+ - - ">="
88
116
  - !ruby/object:Gem::Version
89
117
  version: '0'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - '>='
122
+ - - ">="
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: redcarpet
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - '>='
129
+ - - ">="
102
130
  - !ruby/object:Gem::Version
103
131
  version: '0'
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
- - - '>='
136
+ - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: simplecov
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - '>='
143
+ - - ">="
116
144
  - !ruby/object:Gem::Version
117
145
  version: '0'
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
- - - '>='
150
+ - - ">="
123
151
  - !ruby/object:Gem::Version
124
152
  version: '0'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: coveralls
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
- - - '>='
157
+ - - ">="
130
158
  - !ruby/object:Gem::Version
131
159
  version: '0'
132
160
  type: :development
133
161
  prerelease: false
134
162
  version_requirements: !ruby/object:Gem::Requirement
135
163
  requirements:
136
- - - '>='
164
+ - - ">="
137
165
  - !ruby/object:Gem::Version
138
166
  version: '0'
139
167
  description: library implementing patterns that behave like regular expressions
@@ -144,10 +172,10 @@ extra_rdoc_files:
144
172
  - README.md
145
173
  - internals.md
146
174
  files:
147
- - .gitignore
148
- - .rspec
149
- - .travis.yml
150
- - .yardopts
175
+ - ".gitignore"
176
+ - ".rspec"
177
+ - ".travis.yml"
178
+ - ".yardopts"
151
179
  - Gemfile
152
180
  - LICENSE
153
181
  - README.md
@@ -168,14 +196,15 @@ files:
168
196
  - lib/mustermann/ast/tree_renderer.rb
169
197
  - lib/mustermann/ast/validation.rb
170
198
  - lib/mustermann/caster.rb
171
- - lib/mustermann/equality_map.rb
172
199
  - lib/mustermann/error.rb
173
200
  - lib/mustermann/expander.rb
174
201
  - lib/mustermann/extension.rb
175
202
  - lib/mustermann/identity.rb
203
+ - lib/mustermann/mapper.rb
176
204
  - lib/mustermann/pattern.rb
177
205
  - lib/mustermann/rails.rb
178
206
  - lib/mustermann/regexp_based.rb
207
+ - lib/mustermann/regular.rb
179
208
  - lib/mustermann/router.rb
180
209
  - lib/mustermann/router/rack.rb
181
210
  - lib/mustermann/router/simple.rb
@@ -184,15 +213,18 @@ files:
184
213
  - lib/mustermann/simple_match.rb
185
214
  - lib/mustermann/sinatra.rb
186
215
  - lib/mustermann/template.rb
216
+ - lib/mustermann/to_pattern.rb
187
217
  - lib/mustermann/version.rb
188
218
  - mustermann.gemspec
189
219
  - spec/expander_spec.rb
190
220
  - spec/extension_spec.rb
191
221
  - spec/identity_spec.rb
222
+ - spec/mapper_spec.rb
192
223
  - spec/mustermann_spec.rb
193
224
  - spec/pattern_spec.rb
194
225
  - spec/rails_spec.rb
195
226
  - spec/regexp_based_spec.rb
227
+ - spec/regular_spec.rb
196
228
  - spec/router/rack_spec.rb
197
229
  - spec/router/simple_spec.rb
198
230
  - spec/shell_spec.rb
@@ -206,6 +238,7 @@ files:
206
238
  - spec/support/match_matcher.rb
207
239
  - spec/support/pattern.rb
208
240
  - spec/template_spec.rb
241
+ - spec/to_pattern_spec.rb
209
242
  homepage: https://github.com/rkh/mustermann
210
243
  licenses:
211
244
  - MIT
@@ -216,17 +249,17 @@ require_paths:
216
249
  - lib
217
250
  required_ruby_version: !ruby/object:Gem::Requirement
218
251
  requirements:
219
- - - '>='
252
+ - - ">="
220
253
  - !ruby/object:Gem::Version
221
254
  version: 2.0.0
222
255
  required_rubygems_version: !ruby/object:Gem::Requirement
223
256
  requirements:
224
- - - '>='
257
+ - - ">="
225
258
  - !ruby/object:Gem::Version
226
259
  version: '0'
227
260
  requirements: []
228
261
  rubyforge_project:
229
- rubygems_version: 2.0.5
262
+ rubygems_version: 2.2.2
230
263
  signing_key:
231
264
  specification_version: 4
232
265
  summary: use patterns like regular expressions
@@ -234,10 +267,12 @@ test_files:
234
267
  - spec/expander_spec.rb
235
268
  - spec/extension_spec.rb
236
269
  - spec/identity_spec.rb
270
+ - spec/mapper_spec.rb
237
271
  - spec/mustermann_spec.rb
238
272
  - spec/pattern_spec.rb
239
273
  - spec/rails_spec.rb
240
274
  - spec/regexp_based_spec.rb
275
+ - spec/regular_spec.rb
241
276
  - spec/router/rack_spec.rb
242
277
  - spec/router/simple_spec.rb
243
278
  - spec/shell_spec.rb
@@ -251,4 +286,5 @@ test_files:
251
286
  - spec/support/match_matcher.rb
252
287
  - spec/support/pattern.rb
253
288
  - spec/template_spec.rb
289
+ - spec/to_pattern_spec.rb
254
290
  has_rdoc: