class Filterparams::ParamExtractor

Constants

FILTER_MATCHES

Public Class Methods

new(params) click to toggle source
# File lib/filterparams/param_extractor.rb, line 8
def initialize(params)
  @params = params
end

Public Instance Methods

params() click to toggle source
# File lib/filterparams/param_extractor.rb, line 12
def params
  match_hashes.map { |map| generate_param map }
end
params_hash() click to toggle source
# File lib/filterparams/param_extractor.rb, line 16
def params_hash
  filter_args = params.map do |parameter|
    [parameter.identification, parameter]
  end.flatten
  Hash[*filter_args]
end

Private Instance Methods

create_match_lookup(map) click to toggle source
# File lib/filterparams/param_extractor.rb, line 50
def create_match_lookup(map)
  match = map[:match]
  {
    name: match['name'],
    value: map[:value],
    filter: match['filter'],
    alias: match['alias']
  }
end
generate_param(param_hash) click to toggle source
# File lib/filterparams/param_extractor.rb, line 25
def generate_param(param_hash)
  Filterparams::Parameter.new(param_hash[:name], param_hash)
end
match_hashes() click to toggle source
# File lib/filterparams/param_extractor.rb, line 29
def match_hashes
  matches = @params.map do |key, value|
    if value.is_a? Array
      value = if value.size > 0
                value[0]
              else
                nil
              end
    end

    {
      match: FILTER_MATCHES.match(key),
      value: value
    }
  end
  matches = matches.reject { |map| map[:match].nil? }
  matches.map do |map|
    create_match_lookup(map)
  end
end