class DataFilter::TruthyFilter
Used to filter a data item by whether it is truthy/falsey
@example
object = MyModel.new(is_alive: 'false') filter = DataFilter::TruthyFilter.new(:is_alive) filter.call(object) # => nil
Public Class Methods
new(field_sym, invert: false)
click to toggle source
@param field_sym [Symbol] the name of the field to filter by @param invert [Boolean] (default: false) set to true if you
would rather match when the field is falsey instead of when it is truthy
# File lib/data_filter/truthy_filter.rb, line 14 def initialize(field_sym, invert: false) @field_sym = field_sym @invert = invert end
Public Instance Methods
call(item)
click to toggle source
Filters the item
@param item [Object] the item we want to filter @return [Object, nil] the original data item
# File lib/data_filter/truthy_filter.rb, line 23 def call(item) if item.respond_to?(@field_sym) val = item.public_send(@field_sym) is_falsey = is_falsey?(val) is_match = (@invert ? is_falsey : !is_falsey) if is_match item end end end
Private Instance Methods
is_falsey?(val)
click to toggle source
@private
# File lib/data_filter/truthy_filter.rb, line 37 def is_falsey?(val) [false, 'false', 0, nil].include?(val) end