pendragon 0.4.0 → 0.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34a16924c1d2032821eab7f8e670a9823cfe9e6e
4
- data.tar.gz: f28901a7ae7bb3dd844b31fd09e65140ab40f700
3
+ metadata.gz: 96b558eec1e2524045fcd153be5bca8bb159ffdd
4
+ data.tar.gz: b2411809a3ccb47d6d9a46c162c9611b9bddffbf
5
5
  SHA512:
6
- metadata.gz: 69305896d92e425a2901eb8670b644a55d1a22ddab91c33058889fcf7dae1bdcf6c288e0831cc98967cbe65838f182047e825f67cee641b631a39f92c74cf941
7
- data.tar.gz: 6be88a0862cdcabe0206bdf3612869b4eb13f890478c4d16336bd2da4cf21c1132f8c561e0bc865d5ec8518b0cc2107d89f498cbc94ecf384bf47d28c8981d9a
6
+ metadata.gz: 7152a62fffeb920032d0ee6699183c662e18aa138567e638506fd8d6158d53aa47884b9b971c3ceadaa693380204c5b9f8c3d037891be37cdf01c5a4801f47bb
7
+ data.tar.gz: 8a7dcf1502c0b4b9febec24efd7f96aff8f0f644d492a44f0883cd7b0da562014ccf6c089f07d5f351c67b98dc4cb1267d9f96c37d672801a66ce5df5f9c7158
data/Gemfile.lock CHANGED
@@ -1,31 +1,30 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pendragon (0.3.0)
4
+ pendragon (0.4.0)
5
5
  mustermann (= 0.2.0)
6
6
  rack (>= 1.3.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (4.0.3)
12
- i18n (~> 0.6, >= 0.6.4)
13
- minitest (~> 4.2)
14
- multi_json (~> 1.3)
11
+ activesupport (4.1.1)
12
+ i18n (~> 0.6, >= 0.6.9)
13
+ json (~> 1.7, >= 1.7.7)
14
+ minitest (~> 5.1)
15
15
  thread_safe (~> 0.1)
16
- tzinfo (~> 0.3.37)
17
- atomic (1.1.14)
16
+ tzinfo (~> 1.1)
18
17
  haml (4.0.5)
19
18
  tilt
20
19
  http_router (0.11.1)
21
20
  rack (>= 1.0.0)
22
21
  url_mount (~> 0.2.1)
23
22
  i18n (0.6.9)
23
+ json (1.8.1)
24
24
  metaclass (0.0.4)
25
- minitest (4.7.5)
26
- mocha (1.0.0)
25
+ minitest (5.3.4)
26
+ mocha (1.1.0)
27
27
  metaclass (~> 0.0.1)
28
- multi_json (1.8.4)
29
28
  mustermann (0.2.0)
30
29
  padrino-core (0.12.0.rc3)
31
30
  activesupport (>= 3.1)
@@ -35,20 +34,20 @@ GEM
35
34
  thor (~> 0.17.0)
36
35
  tilt (~> 1.4.1)
37
36
  rack (1.5.2)
38
- rack-protection (1.5.2)
37
+ rack-protection (1.5.3)
39
38
  rack
40
39
  rack-test (0.6.2)
41
40
  rack (>= 1.0)
42
- rake (10.1.1)
43
- sinatra (1.4.4)
41
+ rake (10.3.2)
42
+ sinatra (1.4.5)
44
43
  rack (~> 1.4)
45
44
  rack-protection (~> 1.4)
46
45
  tilt (~> 1.3, >= 1.3.4)
47
46
  thor (0.17.0)
48
- thread_safe (0.1.3)
49
- atomic
47
+ thread_safe (0.3.3)
50
48
  tilt (1.4.1)
51
- tzinfo (0.3.38)
49
+ tzinfo (1.1.0)
50
+ thread_safe (~> 0.1)
52
51
  url_mount (0.2.1)
53
52
  rack
54
53
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Pendragon
2
2
 
3
- [![Build Status](https://travis-ci.org/namusyaka/pendragon.png)](https://travis-ci.org/namusyaka/pendragon) [![Gem Version](https://badge.fury.io/rb/pendragon.png)](http://badge.fury.io/rb/pendragon)
3
+ [![Build Status](https://travis-ci.org/namusyaka/pendragon.svg?branch=master)](https://travis-ci.org/namusyaka/pendragon) [![Gem Version](https://badge.fury.io/rb/pendragon.svg)](http://badge.fury.io/rb/pendragon)
4
4
 
5
5
  Pendragon provides an HTTP router for use in Rack and Padrino.
6
6
  As a Rack application, it makes it easy to define complicated routing.
@@ -37,7 +37,7 @@ Depends on [rack](https://github.com/rack/rack) and [mustermann](https://github.
37
37
 
38
38
  ```ruby
39
39
  # Performance will be improved!
40
- Pendragon.configure do |config|
40
+ Pendragon.new do |config|
41
41
  config.enable_compiler = true
42
42
  end
43
43
  ```
@@ -52,12 +52,24 @@ Pendragon.new do
52
52
  get("/"){ "hey" }
53
53
  end
54
54
 
55
- Pendragon.configure do |config|
55
+ pendragon = Pendragon.new do |config|
56
56
  config.auto_rack_format = false
57
57
  end
58
58
  # Disable the param
59
- Pendragon.new do
60
- get("/"){ [200, {"Content-Type" => "text/html;charset=utf-8"}, ["hey"]] }
59
+ pendragon.get("/"){ [200, {"Content-Type" => "text/html;charset=utf-8"}, ["hey"]] }
60
+ ```
61
+
62
+ #### Deprecated
63
+
64
+ ```ruby
65
+ # Global configuration style is deprecated since 0.5.0
66
+ Pendragon.configure do |config|
67
+ config.enable_compiler = true
68
+ end
69
+
70
+ # Please use new syntax.
71
+ pendragon = Pendragon.new do |config|
72
+ config.enable_compiler = true
61
73
  end
62
74
  ```
63
75
 
@@ -225,12 +237,9 @@ require 'pendragon/padrino'
225
237
 
226
238
  class App < Padrino::Application
227
239
  register Pendragon::Padrino
228
-
229
- ##
240
+
230
241
  # Also, your app's performance will be improved by using compiler mode.
231
- # Pendragon.configure do |config|
232
- # config.enable_compiler = true
233
- # end
242
+ set :pendragon, enable_compiler: true
234
243
 
235
244
  get :index do
236
245
  "hello pendragon!"
@@ -1,6 +1,24 @@
1
+ require 'pendragon/engine/recognizer'
1
2
 
2
3
  module Pendragon
3
- module CompileHelpers
4
+ class Compiler < Recognizer
5
+ def initialize(routes)
6
+ @routes = routes
7
+ end
8
+
9
+ def call(request)
10
+ compile! unless compiled?
11
+ pattern, verb, params = parse_request(request)
12
+ raise_exception(400) unless valid_verb?(verb)
13
+ candidacies = match_with(pattern)
14
+ raise_exception(404) if candidacies.empty?
15
+ candidacies, allows = candidacies.partition{|route| route.verb == verb }
16
+ raise_exception(405, verbs: allows.map(&:verb)) if candidacies.empty?
17
+ candidacies.map{|route| [route, params_for(route, pattern, params)]}
18
+ end
19
+
20
+ private
21
+
4
22
  def compile!
5
23
  return if compiled?
6
24
  @regexps = @routes.map.with_index do |route, index|
@@ -23,16 +41,6 @@ module Pendragon
23
41
  !!@regexps
24
42
  end
25
43
 
26
- def recognize_by_compiling_regexp(request)
27
- prepare! unless prepared?
28
- pattern, verb, params = parse_request(request)
29
- candidacies = match_with(pattern)
30
- raise_exception(404) if candidacies.empty?
31
- candidacies, allows = candidacies.partition{|route| route.verb == verb }
32
- raise_exception(405, verbs: allows.map(&:verb)) if candidacies.empty?
33
- candidacies.map{|route| [route, params_for(route, pattern, params)]}
34
- end
35
-
36
44
  def match_with(pattern)
37
45
  offset = 0
38
46
  conditions = [pattern]
@@ -0,0 +1,65 @@
1
+ module Pendragon
2
+ class Recognizer
3
+ def initialize(routes)
4
+ @routes = routes
5
+ end
6
+
7
+ def call(request)
8
+ pattern, verb, params = parse_request(request)
9
+ raise_exception(400) unless valid_verb?(verb)
10
+ fetch(pattern, verb){|route| [route, params_for(route, pattern, params)] }
11
+ end
12
+
13
+ private
14
+
15
+ # @!visibility private
16
+ def params_for(route, pattern, params)
17
+ route.params(pattern, params)
18
+ end
19
+
20
+ # @!visibility private
21
+ def valid_verb?(verb)
22
+ Pendragon::HTTP_VERBS.include?(verb.downcase.to_sym)
23
+ end
24
+
25
+ # @!visibility private
26
+ def fetch(pattern, verb)
27
+ _routes = @routes.select{|route| route.match(pattern) }
28
+ raise_exception(404) if _routes.empty?
29
+ result = _routes.map{|route| yield(route) if verb == route.verb }.compact
30
+ raise_exception(405, :verbs => _routes.map(&:verb)) if result.empty?
31
+ result
32
+ end
33
+
34
+ # @!visibility private
35
+ def parse_request(request)
36
+ if request.is_a?(Hash)
37
+ [request['PATH_INFO'], request['REQUEST_METHOD'].downcase.to_sym, {}]
38
+ else
39
+ [request.path_info, request.request_method.downcase.to_sym, parse_request_params(request.params)]
40
+ end
41
+ end
42
+
43
+ # @!visibility private
44
+ def parse_request_params(params)
45
+ params.inject({}) do |result, entry|
46
+ result[entry[0].to_sym] = entry[1]
47
+ result
48
+ end
49
+ end
50
+
51
+ # @!visibility private
52
+ def raise_exception(error_code, options = {})
53
+ raise ->(error_code) {
54
+ case error_code
55
+ when 400
56
+ BadRequest
57
+ when 404
58
+ NotFound
59
+ when 405
60
+ MethodNotAllowed.new(options[:verbs])
61
+ end
62
+ }.(error_code)
63
+ end
64
+ end
65
+ end
@@ -5,7 +5,15 @@ module Pendragon
5
5
  ROUTE_PRIORITY = {:high => 0, :normal => 1, :low => 2} unless defined?(ROUTE_PRIORITY)
6
6
 
7
7
  def router
8
- @router ||= ::Pendragon::Padrino::Router.new
8
+ unless @router
9
+ @router = ::Pendragon::Padrino::Router.new
10
+ @router.configuration = Pendragon::Configuration.new
11
+ if settings.respond_to?(:pendragon) && settings.pendragon.instance_of?(Hash)
12
+ settings.pendragon.each_pair do |key, value|
13
+ @router.configuration.send("#{key}=", value)
14
+ end
15
+ end
16
+ end
9
17
  block_given? ? yield(@router) : @router
10
18
  end
11
19
 
@@ -3,6 +3,8 @@ require 'pendragon' unless defined?(Pendragon::Router)
3
3
  module Pendragon
4
4
  module Padrino
5
5
  class Router < Pendragon::Router
6
+ attr_accessor :configuration
7
+
6
8
  def add(verb, path, options = {}, &block)
7
9
  route = Route.new(path, verb, options, &block)
8
10
  route.path_for_generation = options[:path_for_generation] if options[:path_for_generation]
@@ -13,7 +15,6 @@ module Pendragon
13
15
 
14
16
  def call(env)
15
17
  request = Rack::Request.new(env)
16
- raise_exception(400) unless valid_verb?(request.request_method)
17
18
  [200, {}, recognize(request)]
18
19
  rescue BadRequest, NotFound, MethodNotAllowed
19
20
  $!.call
@@ -24,6 +25,10 @@ module Pendragon
24
25
  matcher.mustermann? ? matcher.expand(params) : route.path_for_generation
25
26
  end
26
27
  end
28
+
29
+ def configuration
30
+ @configuration || Pendragon::Configuration.new
31
+ end
27
32
  end
28
33
  end
29
34
  end
@@ -1,8 +1,8 @@
1
1
  require 'pendragon/route'
2
2
  require 'pendragon/matcher'
3
3
  require 'pendragon/error_handler'
4
- require 'pendragon/compile_helpers'
5
4
  require 'pendragon/configuration'
5
+ require 'pendragon/engine/compiler'
6
6
  require 'rack'
7
7
 
8
8
  module Pendragon
@@ -15,9 +15,9 @@ module Pendragon
15
15
  # Possible to pass the block
16
16
  #
17
17
  # @example with a block
18
- # app = Pendragon::Router.new do
19
- # get("/"){ "hello!" }
20
- # post("/"){ "hello post!" }
18
+ # app = Pendragon::Router.new do |config|
19
+ # config.enable_compiler = true
20
+ # config.auto_rack_format = false
21
21
  # end
22
22
  #
23
23
  # @example with base style
@@ -26,14 +26,20 @@ module Pendragon
26
26
  # app.post("/"){ "hello post!" }
27
27
  def initialize(&block)
28
28
  reset!
29
- instance_eval(&block) if block_given?
29
+ if block_given?
30
+ if block.arity.zero?
31
+ instance_eval(&block)
32
+ else
33
+ @configuration = Configuration.new
34
+ block.call(configuration)
35
+ end
36
+ end
30
37
  end
31
38
 
32
39
  # Finds the routes if request method is valid
33
40
  # @return the Rack style response
34
41
  def call(env)
35
42
  request = Rack::Request.new(env)
36
- raise_exception(400) unless valid_verb?(request.request_method)
37
43
  recognize(request).each do |route, params|
38
44
  catch(:pass){ return invoke(route, params) }
39
45
  end
@@ -43,7 +49,7 @@ module Pendragon
43
49
 
44
50
  def invoke(route, params)
45
51
  response = route.arity != 0 ? route.call(params) : route.call
46
- return response unless Pendragon.configuration.auto_rack_format?
52
+ return response unless configuration.auto_rack_format?
47
53
  status = route.options[:status] || 200
48
54
  header = {'Content-Type' => 'text/html;charset=utf-8'}.merge(route.options[:header] || {})
49
55
  [status, header, Array(response)]
@@ -78,16 +84,7 @@ module Pendragon
78
84
  def prepare!
79
85
  @prepared = true
80
86
  @routes.sort_by!(&:order)
81
- self.class.setup_compiler! && compile! if Pendragon.configuration.enable_compiler?
82
- end
83
-
84
- # Setups the compiler by using CompileHelpers
85
- # @see Pendragon::CompileHelpers
86
- def self.setup_compiler!
87
- include CompileHelpers
88
- alias_method :old_recognize, :recognize
89
- alias_method :recognize, :recognize_by_compiling_regexp
90
- true
87
+ @engine = (configuration.enable_compiler? ? Compiler : Recognizer).new(routes)
91
88
  end
92
89
 
93
90
  # @return [Boolean] the router is already prepared?
@@ -105,8 +102,7 @@ module Pendragon
105
102
  # @return [Array]
106
103
  def recognize(request)
107
104
  prepare! unless prepared?
108
- pattern, verb, params = parse_request(request)
109
- fetch(pattern, verb){|route| [route, params_for(route, pattern, params)] }
105
+ @engine.call(request)
110
106
  end
111
107
 
112
108
  # Recognizes a given path
@@ -130,43 +126,11 @@ module Pendragon
130
126
  end
131
127
  end
132
128
 
133
- private
134
-
135
- # @!visibility private
136
- def valid_verb?(verb)
137
- Pendragon::HTTP_VERBS.include?(verb.downcase.to_sym)
138
- end
139
-
140
- # @!visibility private
141
- def fetch(pattern, verb)
142
- _routes = routes.select{|route| route.match(pattern) }
143
- raise_exception(404) if _routes.empty?
144
- result = _routes.map{|route| yield(route) if verb == route.verb }.compact
145
- raise_exception(405, :verbs => _routes.map(&:verb)) if result.empty?
146
- result
147
- end
148
-
149
- # @!visibility private
150
- def parse_request(request)
151
- if request.is_a?(Hash)
152
- [request['PATH_INFO'], request['REQUEST_METHOD'].downcase.to_sym, {}]
153
- else
154
- [request.path_info, request.request_method.downcase.to_sym, parse_request_params(request.params)]
155
- end
156
- end
157
-
158
- # @!visibility private
159
- def parse_request_params(params)
160
- params.inject({}) do |result, entry|
161
- result[entry[0].to_sym] = entry[1]
162
- result
163
- end
129
+ def configuration
130
+ @configuration || Pendragon.configuration
164
131
  end
165
132
 
166
- # @!visibility private
167
- def params_for(route, pattern, params)
168
- route.params(pattern, params)
169
- end
133
+ private
170
134
 
171
135
  # @!visibility private
172
136
  # @example
@@ -192,19 +156,5 @@ module Pendragon
192
156
  end
193
157
  raise InvalidRouteException
194
158
  end
195
-
196
- # @!visibility private
197
- def raise_exception(error_code, options = {})
198
- raise ->(error_code) {
199
- case error_code
200
- when 400
201
- BadRequest
202
- when 404
203
- NotFound
204
- when 405
205
- MethodNotAllowed.new(options[:verbs])
206
- end
207
- }.(error_code)
208
- end
209
159
  end
210
160
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Pendragon
3
- VERSION = '0.4.0'
3
+ VERSION = '0.5.0'
4
4
  end
data/lib/pendragon.rb CHANGED
@@ -12,6 +12,7 @@ module Pendragon
12
12
  Router.new(&block)
13
13
  end
14
14
 
15
+ # @deprecated
15
16
  # Yields Pendragon configuration block
16
17
  # @example
17
18
  # Pendragon.configure do |config|
@@ -19,18 +20,35 @@ module Pendragon
19
20
  # end
20
21
  # @see Pendragon::Configuration
21
22
  def configure(&block)
23
+ configuration_warning(:configure)
22
24
  block.call(configuration) if block_given?
23
25
  configuration
24
26
  end
25
27
 
28
+ # @deprecated
26
29
  # Returns Pendragon configuration
27
30
  def configuration
31
+ configuration_warning(:configuration)
28
32
  @configuration ||= Configuration.new
29
33
  end
30
34
 
35
+ # @deprecated
31
36
  # Resets Pendragon configuration
32
37
  def reset_configuration!
33
38
  @configuration = nil
34
39
  end
40
+
41
+ private
42
+
43
+ def configuration_warning(method)
44
+ warn <<-WARN
45
+ Pendragon.#{method} is deprecated because it isn't thread-safe.
46
+ Please use new syntax.
47
+ Pendragon.new do |config|
48
+ config.auto_rack_format = false
49
+ config.enable_compiler = true
50
+ end
51
+ WARN
52
+ end
35
53
  end
36
54
  end
@@ -1,5 +1,3 @@
1
1
  require 'pendragon'
2
2
 
3
- Pendragon.configure do |config|
4
- config.enable_compiler = true
5
- end
3
+ ENABLE_COMPILER = true
data/test/helper.rb CHANGED
@@ -3,7 +3,6 @@ ENV['PADRINO_ENV'] = 'test'
3
3
  PADRINO_ROOT = File.dirname(__FILE__) unless defined?(PADRINO_ROOT)
4
4
  require File.expand_path('../../lib/pendragon', __FILE__)
5
5
 
6
- require 'minitest/unit'
7
6
  require 'minitest/autorun'
8
7
  require 'minitest/spec'
9
8
  require 'mocha/setup'
@@ -22,16 +21,18 @@ end
22
21
  class MiniTest::Spec
23
22
  include Rack::Test::Methods
24
23
 
25
- def pendragon
26
- @app = Pendragon.new
27
- end
28
-
29
- def enable_compiler?
30
- Pendragon.configuration.enable_compiler?
24
+ def pendragon(&block)
25
+ if !block_given? && defined?(ENABLE_COMPILER)
26
+ block = Proc.new do |config|
27
+ config.enable_compiler = true
28
+ end
29
+ end
30
+ @app = Pendragon.new(&block)
31
31
  end
32
32
 
33
33
  def mock_app(base = nil, &block)
34
34
  @app = Sinatra.new(base || ::Padrino::Application, &block)
35
+ @app.class_eval{ set :pendragon, :enable_compiler => defined?(ENABLE_COMPILER) }
35
36
  end
36
37
 
37
38
  def app
@@ -64,24 +65,27 @@ class MiniTest::Spec
64
65
  end
65
66
 
66
67
 
67
- class ColoredIO
68
- def initialize(io)
69
- @io = io
70
- end
71
-
72
- def print(o)
73
- case o
74
- when "." then @io.send(:print, o.colorize(:green))
75
- when "E" then @io.send(:print, o.colorize(:red))
76
- when "F" then @io.send(:print, o.colorize(:yellow))
77
- when "S" then @io.send(:print, o.colorize(:magenta))
78
- else @io.send(:print, o)
68
+ if defined?(MiniTest::Unit.output)
69
+ class ColoredIO
70
+ def initialize(io)
71
+ @io = io
72
+ end
73
+
74
+ def print(o)
75
+ case o
76
+ when "." then @io.send(:print, o.colorize(:green))
77
+ when "E" then @io.send(:print, o.colorize(:red))
78
+ when "F" then @io.send(:print, o.colorize(:yellow))
79
+ when "S" then @io.send(:print, o.colorize(:magenta))
80
+ else @io.send(:print, o)
81
+ end
82
+ end
83
+
84
+ def puts(*o)
85
+ super
79
86
  end
80
87
  end
81
-
82
- def puts(*o)
83
- super
84
- end
88
+ MiniTest::Unit.output = ColoredIO.new($stdout)
89
+ else
90
+ require 'minitest/pride'
85
91
  end
86
-
87
- MiniTest::Unit.output = ColoredIO.new($stdout)
@@ -3,19 +3,20 @@ $:.unshift(File.dirname(__FILE__))
3
3
  require 'helper'
4
4
 
5
5
  describe Pendragon::Configuration do
6
- setup{ @pendragon = pendragon }
7
- teardown{ Pendragon.reset_configuration! }
6
+ setup do
7
+ @pendragon = pendragon{|config| }
8
+ end
8
9
 
9
10
  describe "auto_rack_format" do
10
11
  should "set `true` as default value" do
11
12
  @pendragon.get("/"){ "hey" }
12
13
  get "/"
13
14
  assert_equal "hey", body
14
- assert_equal true, Pendragon.configuration.auto_rack_format?
15
+ assert_equal true, @pendragon.configuration.auto_rack_format?
15
16
  end
16
17
 
17
18
  should "not serialize for rack format if `auto_rack_format` is false" do
18
- Pendragon.configure do |config|
19
+ @pendragon = pendragon do |config|
19
20
  config.auto_rack_format = false
20
21
  end
21
22
 
@@ -25,7 +26,7 @@ describe Pendragon::Configuration do
25
26
  @pendragon.post("/"){ [200, {'Content-Type' => 'text/html;charset=utf-8'}, ["hey"]] }
26
27
  post "/"
27
28
  assert_equal "hey", body
28
- assert_equal false, Pendragon.configuration.auto_rack_format?
29
+ assert_equal false, @pendragon.configuration.auto_rack_format?
29
30
  end
30
31
  end
31
32
  end
@@ -3,7 +3,7 @@ $:.unshift(File.dirname(__FILE__))
3
3
  require 'helper'
4
4
 
5
5
  describe Pendragon do
6
- setup{ @pendragon = pendragon }
6
+ setup{ @pendragon = pendragon{|config| config.enable_compiler = defined?(ENABLE_COMPILER) } }
7
7
 
8
8
  describe "normal routing" do
9
9
  before(:each){ @pendragon.reset! }
@@ -185,10 +185,8 @@ describe Pendragon do
185
185
 
186
186
  describe "#new allows block" do
187
187
  should "#new support for block." do
188
- @app = Pendragon.new do
189
- foo = add(:get, "/", :name => :foo){"foo"}
190
- bar = add(:post, "/", :name => :bar){"bar"}
191
- end
188
+ foo = @pendragon.add(:get, "/", :name => :foo){"foo"}
189
+ bar = @pendragon.add(:post, "/", :name => :bar){"bar"}
192
190
  get("/")
193
191
  assert_equal "foo", body
194
192
  post("/")
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pendragon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - namusyaka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-08 00:00:00.000000000 Z
11
+ date: 2014-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.3.0
27
27
  - !ruby/object:Gem::Dependency
@@ -42,56 +42,56 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.8.7
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.8.7
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rack-test
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.5.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.5.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.10.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.10.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: haml
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
@@ -114,15 +114,16 @@ executables: []
114
114
  extensions: []
115
115
  extra_rdoc_files: []
116
116
  files:
117
- - ".travis.yml"
117
+ - .travis.yml
118
118
  - Gemfile
119
119
  - Gemfile.lock
120
120
  - README.md
121
121
  - Rakefile
122
122
  - config.ru
123
123
  - lib/pendragon.rb
124
- - lib/pendragon/compile_helpers.rb
125
124
  - lib/pendragon/configuration.rb
125
+ - lib/pendragon/engine/compiler.rb
126
+ - lib/pendragon/engine/recognizer.rb
126
127
  - lib/pendragon/error_handler.rb
127
128
  - lib/pendragon/matcher.rb
128
129
  - lib/pendragon/padrino.rb
@@ -149,17 +150,17 @@ require_paths:
149
150
  - lib
150
151
  required_ruby_version: !ruby/object:Gem::Requirement
151
152
  requirements:
152
- - - ">="
153
+ - - '>='
153
154
  - !ruby/object:Gem::Version
154
155
  version: '0'
155
156
  required_rubygems_version: !ruby/object:Gem::Requirement
156
157
  requirements:
157
- - - ">="
158
+ - - '>='
158
159
  - !ruby/object:Gem::Version
159
160
  version: '0'
160
161
  requirements: []
161
162
  rubyforge_project:
162
- rubygems_version: 2.2.2
163
+ rubygems_version: 2.0.14
163
164
  signing_key:
164
165
  specification_version: 4
165
166
  summary: Provides an HTTP router for use in Rack and Padrino.