class Apiphobic::Resource::Processors::Filtering
Attributes
parameters[RW]
resource[RW]
Public Class Methods
meta(*_attrs)
click to toggle source
# File lib/apiphobic/resource/processors/filtering.rb, line 23 def self.meta(*_attrs) {} end
new(resource, parameters = {})
click to toggle source
rubocop:disable Style/OptionHash
# File lib/apiphobic/resource/processors/filtering.rb, line 13 def initialize(resource, parameters = {}) self.resource = resource self.parameters = Parameters::Filter.new(parameters['filter'] || {}) end
processed(*attrs)
click to toggle source
rubocop:enable Style/OptionHash
# File lib/apiphobic/resource/processors/filtering.rb, line 19 def self.processed(*attrs) new(*attrs).processed end
Public Instance Methods
processed()
click to toggle source
# File lib/apiphobic/resource/processors/filtering.rb, line 27 def processed parameters.each_with_object(resource) do |(name, value), filtered_resource| filter_method = filter_method_for(name) if !filter_method filtered_resource elsif filter_method.arity.zero? filtered_resource.public_send(filter_method.name) else filtered_resource.public_send(filter_method.name, value) end end end
Private Instance Methods
filter_method_for(filter_item)
click to toggle source
# File lib/apiphobic/resource/processors/filtering.rb, line 43 def filter_method_for(filter_item) filter_method_name = filter_method_name_for(filter_item) resource_class.method(filter_method_name) if filter_method_name end
filter_method_name_for(filter_item)
click to toggle source
# File lib/apiphobic/resource/processors/filtering.rb, line 49 def filter_method_name_for(filter_item) if resource_class.respond_to? "for_#{filter_item}" "for_#{filter_item}" elsif resource_class.respond_to? filter_item filter_item end end
resource_class()
click to toggle source
# File lib/apiphobic/resource/processors/filtering.rb, line 57 def resource_class @resource_class ||= if resource.respond_to? :klass resource.klass else resource end end