laserlemon-search_party 0.1.0 → 0.2.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.
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('search_party', '0.1.0') do |g|
5
+ Echoe.new('search_party', '0.2.0') do |g|
6
6
  g.description = %(Parse your query parameters into more meaningful values)
7
7
  g.url = 'http://github.com/laserlemon/search_party'
8
8
  g.author = 'Steve Richert'
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
- :minor: 1
3
+ :minor: 2
4
4
  :patch: 0
data/lib/search_party.rb CHANGED
@@ -1,39 +1,57 @@
1
1
  module LaserLemon
2
2
  module SearchParty
3
- def self.included(base)
4
- base.class_inheritable_hash :search_parameter_models
5
- base.search_parameter_models = {}
3
+ module Request
4
+ def self.included(base)
5
+ base.cattr_accessor :search_parameter_models
6
+ base.search_parameter_models = {}
7
+
8
+ base.cattr_accessor :search_parameter_patterns
9
+ base.search_parameter_patterns = []
10
+ end
6
11
 
7
- base.class_inheritable_array :search_parameter_patterns
8
- base.search_parameter_patterns = []
9
- end
10
-
11
- def search_parameters
12
- @search_parameters ||= begin
13
- query_parameters.symbolize_keys.inject({}) do |new_parameters, (key, value)|
14
- parsed_value = parse_search_parameter(value)
15
- if search_parameter_model = self.class.search_parameter_models[key]
16
- new_values = [*parsed_value].map{|v| search_parameter_model.respond_to?(:from_param) ? search_parameter_model.from_param(v) : search_parameter_model.find_by_id(v) }
17
- new_value = (parsed_value.is_a?(Array) ? new_values.dup : new_values.first)
18
- else
19
- new_value = parsed_value
12
+ def search_parameters
13
+ @search_parameters ||= begin
14
+ query_parameters.symbolize_keys.inject({}) do |new_parameters, (key, value)|
15
+ parsed_value = parse_search_parameter(value)
16
+ if search_parameter_model = self.class.search_parameter_models[key]
17
+ new_values = [*parsed_value].map{|v| search_parameter_model.respond_to?(:from_param) ? search_parameter_model.from_param(v) : search_parameter_model.find_by_id(v) }
18
+ new_value = (parsed_value.is_a?(Array) ? new_values.dup : new_values.first)
19
+ else
20
+ new_value = parsed_value
21
+ end
22
+ new_value.nil? ? new_parameters : new_parameters.update(key => new_value)
20
23
  end
21
- new_value.nil? ? new_parameters : new_parameters.update(key => new_value)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def parse_search_parameter(value)
30
+ if p = self.class.search_parameter_patterns.detect{|r,v| match = r.match(value) }
31
+ v = p.last
32
+ v.respond_to?(:call) ? v.call(value, $~) : v
33
+ else
34
+ value
22
35
  end
23
36
  end
24
37
  end
25
38
 
26
- private
27
-
28
- def parse_search_parameter(value)
29
- if p = self.class.search_parameter_patterns.detect{|r,v| match = r.match(value) }
30
- v = p.last
31
- v.respond_to?(:call) ? v.call(value, $~) : v
32
- else
33
- value
39
+ module Controller
40
+ def self.included(base)
41
+ base.attr_internal :search_params
42
+
43
+ base.class_eval do
44
+ alias_method_chain :assign_shortcuts, :search_party
45
+ end
46
+ end
47
+
48
+ def assign_shortcuts_with_search_party(request, response)
49
+ @_search_params = request.search_parameters
50
+ assign_shortcuts_without_search_party(request, response)
34
51
  end
35
52
  end
36
53
  end
37
54
  end
38
55
 
39
- ActionController::Request.send(:include, LaserLemon::SearchParty)
56
+ ActionController::Request.send(:include, LaserLemon::SearchParty::Request)
57
+ ActionController::Base.send(:include, LaserLemon::SearchParty::Controller)
data/search_party.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{search_party}
5
- s.version = "0.1.0"
5
+ s.version = "0.2.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Steve Richert"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: laserlemon-search_party
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Richert