joshbuddy-usher 0.3.5 → 0.3.6

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.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 5
3
2
  :major: 0
4
3
  :minor: 3
4
+ :patch: 6
data/lib/usher.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  $:.unshift File.dirname(__FILE__)
2
2
 
3
+ require 'cgi'
3
4
  require 'usher/node'
4
5
  require 'usher/route'
5
6
  require 'usher/grapher'
@@ -162,7 +163,8 @@ class Usher
162
163
  def generate_url(route, params = {}, options = {})
163
164
  check_variables = options.key?(:check_variables) ? options.delete(:check_variables) : false
164
165
  delimiter = options.key?(:delimiter) ? options.delete(:delimiter) : @delimiters.first
165
-
166
+ extra_params = options.key?(:extra_params) ? options.delete(:extra_params) : {}
167
+
166
168
  path = case route
167
169
  when Symbol
168
170
  @named_routes[route]
@@ -174,10 +176,10 @@ class Usher
174
176
  route
175
177
  end
176
178
  raise UnrecognizedException.new unless path
177
- params_hash = {}
179
+ params_hash = extra_params
178
180
  param_list = case params
179
181
  when Hash
180
- params_hash = params
182
+ params_hash.merge!(params)
181
183
  path.dynamic_parts.collect{|k| params_hash.delete(k.name) {|el| raise MissingParameterException.new(k.name)} }
182
184
  when Array
183
185
  path.dynamic_parts.size == params.size ? params : raise(MissingParameterException.new("got #{params.size} arguments, expected #{path.dynamic_parts.size}"))
@@ -43,6 +43,11 @@ describe "Usher URL generation" do
43
43
  route_set.generate_url(:sample, {:first => 'maz', :second => 'zoo', :third => 'zanz'}).should == '/sample/maz/zoo?third=zanz'
44
44
  end
45
45
 
46
+ it "should generate append extra hash variables to the end (when the first parts are an array)" do
47
+ route_set.add_named_route(:sample, '/sample/:first/:second', :controller => 'sample')
48
+ ['/sample/maz/zoo?four=jane&third=zanz', '/sample/maz/zoo?third=zanz&four=jane'].include?(route_set.generate_url(:sample, ['maz', 'zoo'], :extra_params => {:third => 'zanz', :four => 'jane'})).should == true
49
+ end
50
+
46
51
  it "should generate append extra hash variables to the end using [] syntax if its an array" do
47
52
  route_set.add_named_route(:sample, '/sample/:first/:second', :controller => 'sample')
48
53
  route_set.generate_url(:sample, {:first => 'maz', :second => 'zoo', :third => ['zanz', 'susie']}).should == '/sample/maz/zoo?third%5B%5D=zanz&third%5B%5D=susie'
@@ -52,7 +52,7 @@ describe "Usher (for rails) route recognition" do
52
52
 
53
53
  it "should raise based upon an invalid route" do
54
54
  route_set.add_named_route(:sample, '/sample', :controller => 'sample', :action => 'test')
55
- proc { route_set.recognize(build_request_mock('/test/asdqwe', :post, {})) }.should raise_error(ActionController::RoutingError)
55
+ proc { route_set.recognize(build_request_mock('/test/asdqwe', :post, {})) }.should raise_error
56
56
  end
57
57
 
58
58
  it "should add /:controller and /:controller/:action if /:controller/:action/:id is added" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joshbuddy-usher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Hull
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-10 00:00:00 -07:00
12
+ date: 2009-04-27 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency