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(query, field, operator, value, join_character) ⇒ Filter

Returns a new instance of Filter.



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

def initialize(query, field, operator, value, join_character)
  @query = query

  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



62
63
64
65
66
67
# File 'lib/legato/filter.rb', line 62

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



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

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

#google_fieldObject



37
38
39
# File 'lib/legato/filter.rb', line 37

def google_field
  Legato.to_ga_string(field, tracking_scope)
end

#google_operatorObject



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

def google_operator
  OPERATORS[operator]
end

#join_with(param) ⇒ Object



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

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

#to_paramObject



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

def to_param
  [google_field, google_operator, escaped_value].join
end

#tracking_scopeObject



33
34
35
# File 'lib/legato/filter.rb', line 33

def tracking_scope
  @query.tracking_scope
end