class Glug::Condition
—– Condition
represents a GL filter of the form [operator, key, value] (etc.) can be merged with other conditions via the & and | operators
Constants
- DOT_METHODS
GL operators that make sense to use as suffixed dot methods
- SUBSTITUTIONS
GL operators we can’t use verbatim (mostly Ruby reserved words)
Attributes
operator[RW]
values[RW]
Public Class Methods
new()
click to toggle source
# File lib/glug/condition.rb, line 59 def initialize @values=[] end
Public Instance Methods
!=(*args)
click to toggle source
# File lib/glug/condition.rb, line 44 def !=(*args); Condition.new.from_key(:!=, self, args) end
%(*args)
click to toggle source
# File lib/glug/condition.rb, line 49 def %(*args); Condition.new.from_key(:% , self, args) end
&(cond)
click to toggle source
# File lib/glug/condition.rb, line 78 def &(cond); merge(:all,cond) end
*(*args)
click to toggle source
# File lib/glug/condition.rb, line 52 def *(*args); Condition.new.from_key(:* , self, args) end
**(*args)
click to toggle source
# File lib/glug/condition.rb, line 54 def **(*args); Condition.new.from_key(:^ , self, args) end
+(*args)
click to toggle source
# File lib/glug/condition.rb, line 50 def +(*args); Condition.new.from_key(:+ , self, args) end
-(*args)
click to toggle source
# File lib/glug/condition.rb, line 51 def -(*args); Condition.new.from_key(:- , self, args) end
/(*args)
click to toggle source
# File lib/glug/condition.rb, line 53 def /(*args); Condition.new.from_key(:/ , self, args) end
<(*args)
click to toggle source
# File lib/glug/condition.rb, line 45 def <(*args); Condition.new.from_key(:< , self, args) end
<<(cond)
click to toggle source
# File lib/glug/condition.rb, line 91 def <<(cond); @values << cond.encode; self end
<=(*args)
click to toggle source
# File lib/glug/condition.rb, line 47 def <=(*args); Condition.new.from_key(:<=, self, args) end
==(*args)
click to toggle source
# File lib/glug/condition.rb, line 43 def ==(*args); Condition.new.from_key(:==, self, args) end
>(*args)
click to toggle source
# File lib/glug/condition.rb, line 46 def >(*args); Condition.new.from_key(:> , self, args) end
>=(*args)
click to toggle source
# File lib/glug/condition.rb, line 48 def >=(*args); Condition.new.from_key(:>=, self, args) end
[](*args)
click to toggle source
# File lib/glug/condition.rb, line 56 def [](*args); Condition.new.from_key(:at, args[0], [self]) end
coerce(other)
click to toggle source
# File lib/glug/condition.rb, line 57 def coerce(other); [Condition.new.just_value(other), self] end
encode()
click to toggle source
Encode into an array for GL JSON (recursive)
# File lib/glug/condition.rb, line 103 def encode transform_underscores values = @values.map { |v| v.is_a?(Condition) ? v.encode : v } @operator.nil? ? values[0] : [@operator.to_s, *values] end
from_key(operator, key, list)
click to toggle source
# File lib/glug/condition.rb, line 62 def from_key(operator, key, list) @operator = SUBSTITUTIONS[operator] || operator.to_s.gsub('_','-') @values = [key].concat(list) self end
from_list(operator, list)
click to toggle source
# File lib/glug/condition.rb, line 67 def from_list(operator, list) @operator = SUBSTITUTIONS[operator] || operator.to_s.gsub('_','-') @values = list self end
in(*args)
click to toggle source
# File lib/glug/condition.rb, line 55 def in(*args); Condition.new.from_key(:in, self, [[:literal,args.flatten]]) end
is(*args)
click to toggle source
# File lib/glug/condition.rb, line 42 def is(*args); Condition.new.from_key(:==, self, args) end
just_value(val)
click to toggle source
# File lib/glug/condition.rb, line 72 def just_value(val) @operator = nil @values = [val] self end
merge(op,cond)
click to toggle source
# File lib/glug/condition.rb, line 80 def merge(op,cond) if cond.nil? self elsif @operator==op Condition.new.from_list(op, @values + [cond]) elsif cond.operator==op Condition.new.from_list(op, [self] + cond.values) else Condition.new.from_list(op, [self, cond]) end end
method_missing(method_sym, *args)
click to toggle source
Support dot access for most methods
Calls superclass method
# File lib/glug/condition.rb, line 94 def method_missing(method_sym, *args) if DOT_METHODS.include?(method_sym) Condition.new.from_key(method_sym, self, args) else super end end
to_json(opts)
click to toggle source
# File lib/glug/condition.rb, line 108 def to_json(opts) encode.to_json(opts) end
to_s()
click to toggle source
# File lib/glug/condition.rb, line 111 def to_s "<Condition #{@operator} #{@values}>" end
transform_underscores()
click to toggle source
Transform nested { font_scale: 0.8 } to { “font-scale”=>0.8 }
# File lib/glug/condition.rb, line 116 def transform_underscores @values.map! do |v| if v.is_a?(Hash) new_hash = {} v.each { |hk,hv| new_hash[hk.is_a?(Symbol) ? hk.to_s.gsub('_','-') : hk] = hv } new_hash else v end end end
|(cond)
click to toggle source
# File lib/glug/condition.rb, line 79 def |(cond); merge(:any,cond) end