viva-resource_controller 0.6.5 → 0.6.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -45,54 +45,59 @@ module ResourceController
45
45
  symbol = type.blank? ? nil : type.gsub(/_/, '').to_sym
46
46
 
47
47
  define_method("#{type}object_url") do |*alternate_object|
48
- smart_url *object_url_options(symbol, alternate_object.first)
48
+ smart_url *object_url_options(symbol, alternate_object.first).push(extract_params(*alternate_object))
49
49
  end
50
50
 
51
51
  define_method("#{type}object_path") do |*alternate_object|
52
- smart_path *object_url_options(symbol, alternate_object.first)
52
+ smart_path *object_url_options(symbol, alternate_object.first).push(extract_params(*alternate_object))
53
53
  end
54
54
 
55
55
  define_method("hash_for_#{type}object_url") do |*alternate_object|
56
- hash_for_smart_url *object_url_options(symbol, alternate_object.first)
56
+ hash_for_smart_url *object_url_options(symbol, alternate_object.first).push(extract_params(*alternate_object))
57
57
  end
58
58
 
59
59
  define_method("hash_for_#{type}object_path") do |*alternate_object|
60
- hash_for_smart_path *object_url_options(symbol, alternate_object.first)
60
+ hash_for_smart_path *object_url_options(symbol, alternate_object.first).push(extract_params(*alternate_object))
61
61
  end
62
62
  end
63
63
 
64
- def new_object_url
65
- smart_url *new_object_url_options
64
+ def new_object_url(*args)
65
+ smart_url *new_object_url_options.push(extract_params(*args))
66
66
  end
67
67
 
68
- def new_object_path
69
- smart_path *new_object_url_options
68
+ def new_object_path(*args)
69
+ smart_path *new_object_url_options.push(extract_params(*args))
70
70
  end
71
71
 
72
- def hash_for_new_object_url
73
- hash_for_smart_url *new_object_url_options
72
+ def hash_for_new_object_url(*args)
73
+ hash_for_smart_url *new_object_url_options.push(extract_params(*args))
74
74
  end
75
75
 
76
- def hash_for_new_object_path
77
- hash_for_smart_path *new_object_url_options
76
+ def hash_for_new_object_path(*args)
77
+ hash_for_smart_path *new_object_url_options.push(extract_params(*args))
78
78
  end
79
79
 
80
- def collection_url
81
- smart_url *collection_url_options
80
+ def collection_url(*args)
81
+ smart_url *collection_url_options.push(extract_params(*args))
82
82
  end
83
83
 
84
- def collection_path
85
- smart_path *collection_url_options
84
+ def collection_path(*args)
85
+ smart_path *collection_url_options.push(extract_params(*args))
86
86
  end
87
87
 
88
- def hash_for_collection_url
89
- hash_for_smart_url *collection_url_options
88
+ def hash_for_collection_url(*args)
89
+ hash_for_smart_url *collection_url_options.push(extract_params(*args))
90
90
  end
91
91
 
92
- def hash_for_collection_path
93
- hash_for_smart_path *collection_url_options
92
+ def hash_for_collection_path(*args)
93
+ hash_for_smart_path *collection_url_options.push(extract_params(*args))
94
94
  end
95
95
 
96
+ def extract_params(*args)
97
+ params = {}
98
+ params.merge!(args.last) if args.last.is_a?(Hash)
99
+ end
100
+
96
101
  # Used internally to provide the options to smart_url from Urligence.
97
102
  #
98
103
  def collection_url_options
data/lib/urligence.rb CHANGED
@@ -1,23 +1,30 @@
1
1
  module Urligence
2
2
  def smart_url(*objects)
3
- urligence(*objects.push(:url))
3
+ urligence *attach_params(:nil, :url, *objects)
4
4
  end
5
5
 
6
6
  def smart_path(*objects)
7
- urligence(*objects.push(:path))
7
+ urligence *attach_params(nil, :path, *objects)
8
8
  end
9
9
 
10
10
  def hash_for_smart_url(*objects)
11
- urligence(*objects.unshift(:hash_for).push(:url).push({:type => :hash}))
11
+ urligence *attach_params(:hash_for, :url, *objects)
12
12
  end
13
13
 
14
14
  def hash_for_smart_path(*objects)
15
- urligence(*objects.unshift(:hash_for).push(:path).push({:type => :hash}))
15
+ urligence *attach_params(:hash_for, :path, *objects)
16
+ end
17
+
18
+ # Attaches prefix and suffix and appends params
19
+ def attach_params(prefix, suffix, *objects)
20
+ params = objects.pop if objects.last.is_a?(Hash)
21
+ objects.unshift(prefix).push(suffix).push(params)
16
22
  end
17
23
 
18
24
  def urligence(*objects)
19
- config = {}
20
- config.merge!(objects.pop) if objects.last.is_a?(Hash)
25
+ only_hash = objects.first == :hash_for
26
+ params = {}
27
+ params.merge!(objects.pop) if objects.last.is_a?(Hash)
21
28
 
22
29
  objects.reject! { |object| object.nil? }
23
30
 
@@ -31,10 +38,9 @@ module Urligence
31
38
  end
32
39
  end
33
40
 
34
- unless config[:type] == :hash
35
- send url_fragments.join("_"), *objects.flatten.select { |obj| !obj.is_a? Symbol }
41
+ unless only_hash
42
+ send url_fragments.join("_"), *objects.flatten.select { |obj| !obj.is_a? Symbol }.push(params)
36
43
  else
37
- params = {}
38
44
  unparsed_params = objects.select { |obj| !obj.is_a? Symbol }
39
45
  unparsed_params.each_with_index do |obj, i|
40
46
  unless i == (unparsed_params.length-1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: viva-resource_controller
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.6.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Golick
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-31 00:00:00 -07:00
12
+ date: 2009-10-01 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15