class MixpanelMagicLamp::InstanceMethods::ExpressionBuilder
Attributes
expression[R]
Public Class Methods
new(*args)
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 17 def initialize(*args) @expression = '' equals(*args) if args.any? end
Public Instance Methods
and()
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 26 def and @expression += ' and ' if @expression.present? and not @expression =~ /(and|or)\s*$/ self end
contains(args = {}, union = 'and')
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 46 def contains(args = {}, union = 'and') @expression += join(args, union, "\":value\" in (properties[\":name\"])") self end
does_not_contain(args = {}, union = 'and')
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 51 def does_not_contain(args = {}, union = 'and') @expression += join(args, union, "not \":value\" in (properties[\":name\"])") self end
does_not_equal(args = {}, union = 'and')
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 41 def does_not_equal(args = {}, union = 'and') @expression += join(args, union, "properties[\":name\"] != \":value\"") self end
equals(args = {}, union = 'and')
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 36 def equals(args = {}, union = 'and') @expression += join(args, union, "properties[\":name\"] == \":value\"") self end
is_not_set(args = [], union = 'and')
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 61 def is_not_set(args = [], union = 'and') @expression += join(args, union, "not defined (properties[\":name\"])") self end
is_set(args = [], union = 'and')
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 56 def is_set(args = [], union = 'and') @expression += join(args, union, "defined (properties[\":name\"])") self end
or()
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 31 def or @expression += ' or ' if @expression.present? and not @expression =~ /(and|or)\s*$/ self end
to_s()
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 22 def to_s @expression end
Private Instance Methods
join(args, union, exp)
click to toggle source
# File lib/mixpanel_magic_lamp/expression_builder.rb, line 67 def join(args, union, exp) args = [args] unless args.is_a? Array or args.is_a? Hash (args.is_a? Array) ? args.compact! : args.reject! {|k,v| v.nil?} built_in = '(' + args.map do |name, values| if values.nil? exp.gsub(':name', name) else values = [values] unless values.is_a? Array values.map do |value| exp.gsub(':name', name.to_s).gsub(':value', value.to_s) end end end.flatten.join(" #{union} ") + ')' built_in == '()' ? '' : built_in end