laserlemon-search_party 0.2.2 → 0.3.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.2.2') do |g|
5
+ Echoe.new('search_party', '0.3.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: 2
4
- :patch: 2
3
+ :minor: 3
4
+ :patch: 0
data/lib/search_party.rb CHANGED
@@ -5,6 +5,10 @@ module LaserLemon
5
5
  base.cattr_accessor :search_parameter_models
6
6
  base.search_parameter_models = {}
7
7
 
8
+ base.cattr_accessor :search_parameter_finders
9
+ base.search_parameter_finders = {}
10
+ base.search_parameter_finders.default = :find_by_id
11
+
8
12
  base.cattr_accessor :search_parameter_patterns
9
13
  base.search_parameter_patterns = []
10
14
  end
@@ -13,8 +17,9 @@ module LaserLemon
13
17
  @search_parameters ||= begin
14
18
  query_parameters.symbolize_keys.inject({}) do |new_parameters, (key, value)|
15
19
  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) }
20
+ if model = self.class.search_parameter_models[key]
21
+ finder = self.class.search_parameter_finders[key]
22
+ new_values = [*parsed_value].map{|v| model.send(finder, v) }
18
23
  new_value = (parsed_value.is_a?(Array) ? new_values.dup : new_values.first)
19
24
  else
20
25
  new_value = parsed_value
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.2.2"
5
+ s.version = "0.3.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.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Richert