class Clearly::Query::Cleaner

Cleans a filter hash so it is ready to be built using the Composer.

Public Class Methods

new() click to toggle source

Create a cleaner for a filter hash. @return [Clearly::Query::Cleaner]

# File lib/clearly/query/cleaner.rb, line 9
def initialize
  self
end

Public Instance Methods

do(hash) click to toggle source

Get the cleaned filter hash. @param [Hash] hash @return [Hash]

# File lib/clearly/query/cleaner.rb, line 16
def do(hash)
  clean(hash)
end

Private Instance Methods

clean(value) click to toggle source

Clean an object. @param [Object] value @return [Object]

# File lib/clearly/query/cleaner.rb, line 25
def clean(value)
  if value.is_a?(Hash)
    clean_hash(value)
  elsif value.is_a?(Array)
    clean_array(value)
  else
    value
  end
end
clean_array(array) click to toggle source

Clean an array. @param [Array] array @return [Array]

# File lib/clearly/query/cleaner.rb, line 50
def clean_array(array)
  array.map { |item| clean(item) }
end
clean_hash(hash) click to toggle source

Clean a hash. @param [Hash] hash @return [Hash] Cleaned hash

# File lib/clearly/query/cleaner.rb, line 38
def clean_hash(hash)
  cleaned_hash = Hash.new
  hash.each do |key, value|
    new_key = clean_value(key)
    cleaned_hash[new_key] = clean(value)
  end
  cleaned_hash
end
clean_value(value) click to toggle source

Convert to a snake case symbol @param [Object] value @return [Symbol]

# File lib/clearly/query/cleaner.rb, line 57
def clean_value(value)
  value.to_s.underscore.to_sym
end