Class: Legato::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/legato/filter.rb

Constant Summary collapse

OPERATORS =
{
  # metrics
  :eql => '==',
  :not_eql => '!=',
  :gt => '>',
  :gte => '>=',
  :lt => '<',
  :lte => '<=',
  # dimensions
  :matches => '==',
  :does_not_match => '!=',
  :substring => '=@',
  :not_substring => '!@',
  :contains => '=~', # regex
  :does_not_contain => '!~' # regex
  # :desc => '-',
  # :descending => '-'
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(field, operator, value, join_character) ⇒ Filter

Returns a new instance of Filter.



24
25
26
27
28
29
# File 'lib/legato/filter.rb', line 24

def initialize(field, operator, value, join_character)
  self.field = field
  self.operator = operator
  self.value = value
  self.join_character = join_character # if nil, will be overridden by Query#apply_filter
end

Instance Attribute Details

#fieldObject

Returns the value of attribute field.



3
4
5
# File 'lib/legato/filter.rb', line 3

def field
  @field
end

#join_characterObject

Returns the value of attribute join_character.



3
4
5
# File 'lib/legato/filter.rb', line 3

def join_character
  @join_character
end

#operatorObject

Returns the value of attribute operator.



3
4
5
# File 'lib/legato/filter.rb', line 3

def operator
  @operator
end

#valueObject

Returns the value of attribute value.



3
4
5
# File 'lib/legato/filter.rb', line 3

def value
  @value
end

Instance Method Details

#==(other) ⇒ Object



56
57
58
59
60
61
# File 'lib/legato/filter.rb', line 56

def ==(other)
  field == other.field &&
  operator == other.operator &&
  value == other.value &&
  join_character == other.join_character
end

#escaped_valueObject

escape comma and semicolon in value to differentiate from those used as join characters for OR/AND



41
42
43
44
45
# File 'lib/legato/filter.rb', line 41

def escaped_value
  # backslash is escaped in strings
  # oauth will cgi/uri escape for us
  value.to_s.gsub(/([,;])/) {|c| '\\'+c}
end

#google_fieldObject



31
32
33
# File 'lib/legato/filter.rb', line 31

def google_field
  Legato.to_ga_string(field)
end

#google_operatorObject



35
36
37
# File 'lib/legato/filter.rb', line 35

def google_operator
  OPERATORS[operator]
end

#join_with(param) ⇒ Object



51
52
53
54
# File 'lib/legato/filter.rb', line 51

def join_with(param)
  param << join_character unless param.nil?
  param.nil? ? to_param : (param << to_param)
end

#to_paramObject



47
48
49
# File 'lib/legato/filter.rb', line 47

def to_param
  "#{google_field}#{google_operator}#{escaped_value}"
end