class Drillbit::Parameters::Filter

Constants

DATE_RANGE
ISO8601
NUMERICAL
NUMERICAL_RANGE

Attributes

raw_parameters[RW]

Public Class Methods

new(raw_parameters) click to toggle source
# File lib/drillbit/parameters/filter.rb, line 13
def initialize(raw_parameters)
  self.raw_parameters = raw_parameters || {}
end

Public Instance Methods

each_with_object(memoized) { |name, format_value(value), memoized| ... } click to toggle source
# File lib/drillbit/parameters/filter.rb, line 21
def each_with_object(memoized)
  compacted_parameters.each do |name, value|
    memoized = yield name, format_value(value), memoized
  end

  memoized
end
present?() click to toggle source
# File lib/drillbit/parameters/filter.rb, line 17
def present?
  compacted_parameters.any?
end

Private Instance Methods

compacted_parameters() click to toggle source
# File lib/drillbit/parameters/filter.rb, line 31
def compacted_parameters
  @compacted_parameters ||= raw_parameters.reject do |name, value|
    name == 'query' ||
    value == '' ||
    value.nil?
  end
end
format_value(value) click to toggle source

rubocop:disable Lint/AssignmentInCondition

# File lib/drillbit/parameters/filter.rb, line 40
def format_value(value)
  return value unless value.is_a?(String)

  if range_points  = value.match(DATE_RANGE)
    exclusive      = value.include? '...'
    starting_point = Time.iso8601(range_points[1])
    ending_point   = Time.iso8601(range_points[2])

    Range.new(starting_point, ending_point, exclusive)
  elsif range_points = value.match(NUMERICAL_RANGE)
    exclusive        = value.include? '...'
    starting_point   = range_points[1].to_f
    ending_point     = if range_points[2] == 'Infinity'
                         9_999_999
                       else
                         range_points[2].to_f
                       end

    Range.new(starting_point, ending_point, exclusive)
  else
    value
  end
end