class Garb::FilterParameters

Attributes

parameters[RW]

Public Class Methods

new(parameters) click to toggle source
# File lib/garb/filter_parameters.rb, line 5
def initialize(parameters)
  self.parameters = (Array.wrap(parameters) || []).compact
end

Public Instance Methods

to_params() click to toggle source
# File lib/garb/filter_parameters.rb, line 9
def to_params
  value = array_to_params(self.parameters)
  value.empty? ? {} : {'filters' => value}
end

Private Instance Methods

array_to_params(arr) click to toggle source
# File lib/garb/filter_parameters.rb, line 15
def array_to_params(arr)
  arr.map do |param|
    case param
    when Hash  then hash_to_params(param)
    when Array then array_to_params(param)
    end
  end.join(',') # Array OR
end
hash_to_params(hsh) click to toggle source
# File lib/garb/filter_parameters.rb, line 24
def hash_to_params(hsh)
  hsh.map do |k, v|
    next unless k.is_a?(SymbolOperatorMethods)

    escaped_v = v.to_s.gsub(/([,;])/) { |c| '\\' + c }
    "#{URI.encode(k.to_google_analytics, /[=<>]/)}#{CGI::escape(escaped_v)}"
  end.join('%3B') # Hash AND (no duplicate keys), escape char for ';' fixes oauth
end