hobby 0.0.9 → 0.0.10

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: 2a3c9210b9735f56e28762ceeb49fa621b5a5f0b
4
- data.tar.gz: 8969c233002b7d0d334adb1a2457b420d07d2bb1
3
+ metadata.gz: 39a8b0ef69f89a30fb7a7874d6c3a607d874bf35
4
+ data.tar.gz: 35a6b8e0c5429b648243eb6b2c17834aa216292a
5
5
  SHA512:
6
- metadata.gz: 6e751d77257376799bcd4fc942294612056e259225a56b45ab24e1923d8deb744ea0539eb15568e468c9d82ba4f58d7ad9169aefd1d019d4a499332943d3d51e
7
- data.tar.gz: 4c5dd14d04d1a91ddfc8e030abf63e9d8a2cae6798ac8d2e2a8260d9c9e494d52daa9167f4d0afbf948d27ca189c41b5b6bd189fee9b9d477e34068b77634807
6
+ metadata.gz: c4cd9d81e9db2ff98e0386bb4ae6803ab616edd637275ee957d95302b09d13ac4a415f56e849720d2d006625a79176875601053afa31cf8d02d551f93889e772
7
+ data.tar.gz: 7feec3a54880470f1a511a5817168780990c78a6129367dbdb506a03caac7a2ab7d0f853a0107b847430a8cb7b3d9a7d9b8505588e990fdaf78147040957ccf5
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'hobby'
7
- spec.version = '0.0.9'
7
+ spec.version = '0.0.10'
8
8
  spec.authors = ['Anatoly Chernow']
9
9
  spec.email = ['chertoly@gmail.com']
10
10
  spec.summary = %q{A minimal DSL over rack}
@@ -7,7 +7,7 @@ class Hobby::Router
7
7
 
8
8
  def []= key, route
9
9
  if key.include? ?:
10
- string = key.gsub(/(:\w+)/) { "(?<#{$1[1..-1]}>[^/?#]+)" }
10
+ string = key.gsub(/(:\w+)/) { "(?<#{$1[1..-1]}>[^/?#.]+)" }
11
11
  @patterns[/^#{string}$/] = route
12
12
  else
13
13
  super and super "#{key}/", route
@@ -166,6 +166,8 @@ When an incoming request matches a route,
166
166
  the action is executed and a response is sent back to the client.
167
167
  The return value of the action will be the `body` of the response.
168
168
 
169
+ === Default route
170
+
169
171
  If a path was omitted
170
172
  [source,ruby]
171
173
  ----
@@ -184,6 +186,22 @@ end
184
186
 
185
187
  were called.
186
188
 
189
+ === Route params
190
+
191
+ Can be accessed with `route.params` (or a shortcut `my`):
192
+
193
+ [source,ruby]
194
+ ----
195
+ # will match '/index', '/hobby', '/purpose', etc.
196
+ get '/:name' do
197
+ route.params[:name]
198
+ end
199
+
200
+ # will match '/index.css', '/index.js', etc.
201
+ get '/:name.:ext' do
202
+ "The name is #{my[:name]} and the ext is #{my[:ext]}."
203
+ end
204
+ ----
187
205
 
188
206
  [[default-methods]]
189
207
  == Default methods
@@ -194,23 +212,9 @@ The following methods are predefined:
194
212
  * `request`: a http://www.rubydoc.info/gems/rack/Rack/Request[`Rack::Request`].
195
213
  * `response`: a http://www.rubydoc.info/gems/rack/Rack/Response[`Rack::Response`].
196
214
  * `route`: a `Hobby::Router::Route`, the currently executing route.
197
- * `route.params`, or a shortcut `my`: a `Hash` which stores route params. See <<routes-params>> for a usage example.
215
+ * `route.params`, or a shortcut `my`: a `Hash` which stores route params. See <<route-params>> for a usage example.
198
216
  * `halt`: returns the `response` immediately. See <<halting>> for a usage example.
199
217
 
200
- [[routes-params]]
201
- === Routes with params
202
-
203
- [source,ruby]
204
- ----
205
- class App
206
- include Hobby
207
- # matches both /hi/hobbit and /hi/patricio
208
- get '/hi/:name' do
209
- "Hello #{my[:name]}"
210
- end
211
- end
212
- ----
213
-
214
218
  [[halting]]
215
219
  === Halting
216
220
 
@@ -11,6 +11,8 @@ describe Hobby::Router do
11
11
  /say/:something/to/:someone
12
12
  /route/:id.json
13
13
  /existent/only/for/GET
14
+ /js/:name.js
15
+ /dot/:first.:second
14
16
  !
15
17
 
16
18
  before { add_routes *routes }
@@ -31,6 +33,12 @@ describe Hobby::Router do
31
33
  and_set_params(something: 'nothing', someone: 'no_one')
32
34
  end
33
35
 
36
+ it { should find_route('/js/with-js.js').and_set_params(name: 'with-js') }
37
+ it do
38
+ should find_route('/dot/aa.wtf').
39
+ and_set_params(first: 'aa', second: 'wtf')
40
+ end
41
+
34
42
 
35
43
  it 'memoizes requests with params' do
36
44
  subject.route_for env_for '/hello/ololo'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hobby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anatoly Chernow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-22 00:00:00.000000000 Z
11
+ date: 2017-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack