class Toller::Retriever
Attributes
collection[R]
filter_params[R]
retrievals[R]
sort_params[R]
Public Class Methods
filter(collection, filter_params, sort_params, retrievals)
click to toggle source
# File lib/toller/retriever.rb, line 10 def self.filter(collection, filter_params, sort_params, retrievals) new(collection, filter_params, sort_params, retrievals).filter end
new(collection, filter_params, sort_params, retrievals)
click to toggle source
# File lib/toller/retriever.rb, line 14 def initialize(collection, filter_params, sort_params, retrievals) @collection = collection @filter_params = filter_params @sort_params = sort_params @retrievals = retrievals end
Public Instance Methods
filter()
click to toggle source
# File lib/toller/retriever.rb, line 21 def filter active_retrievals.reduce(collection) do |items, retrieval| param_value = if retrieval.is_a?(Filter) filter_params.fetch(retrieval.parameter, nil) else sort_params.include?("-#{retrieval.parameter}") ? :desc : :asc end retrieval.apply!(items, param_value) end end
Private Instance Methods
active_retrievals()
click to toggle source
# File lib/toller/retriever.rb, line 35 def active_retrievals retrievals.select do |retrieval| retrieval.is_a?(Filter) ? filtering_activated?(retrieval) : sorting_activated?(retrieval) end end
filtering_activated?(retrieval)
click to toggle source
# File lib/toller/retriever.rb, line 41 def filtering_activated?(retrieval) return true if filter_params.blank? && retrieval.default filter_params.fetch(retrieval.parameter, nil).present? end
sorting_activated?(retrieval)
click to toggle source
# File lib/toller/retriever.rb, line 47 def sorting_activated?(retrieval) return true if sort_params.blank? && retrieval.default string_parameter = retrieval.parameter.to_s sort_params.include?(string_parameter) || sort_params.include?("-#{string_parameter}") end