class CloudSesame::Query::AST::RangeValue

Constants

STRING_NUMBER

Public Class Methods

new(value = nil, type = nil) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 8
def initialize(value = nil, type = nil)
  self.value =  RangeValue.range?(value) ? build_from_range(value) :
                RangeValue.string_range?(value) ? build_from_string(value) :
                initialize_value
  self.parse type
end

Public Instance Methods

==(object) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 64
def ==(object)
  value == (object.is_a?(RangeValue) ? object : RangeValue.new(object, Value)).value
end
begin() click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 24
def begin
  value[1]
end
end() click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 28
def end
  value[2]
end
gt(value) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 40
def gt(value)
  set_begin(value) if value
  return self
end
gte(value) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 45
def gte(value)
  set_begin(value, '[') if value
  return self
end
lower_bound() click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 32
def lower_bound
  value[0]
end
lt(value) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 50
def lt(value)
  set_end(value) if value
  return self
end
lte(value) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 55
def lte(value)
  set_end(value, ']') if value
  return self
end
parse(type) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 15
def parse(type)
  if type && type.respond_to?(:parse)
    @changed = true
    value[1] = type.parse(self.begin) unless self.begin.to_s.empty?
    value[2] = type.parse(self.end) unless self.end.to_s.empty?
  end
  return self
end
to_s() click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 60
def to_s
  compile
end
upper_bound() click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 36
def upper_bound
  value[3]
end

Private Instance Methods

build_from_range(range) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 84
def build_from_range(range)
  initialize_value('[', range.begin, range.end, range.exclude_end? ? '}' : ']')
end
build_from_string(string) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 88
def build_from_string(string)
  matches = RANGE_FORMAT.match(string.strip).captures
  matches[1,2] = matches[1,2].map { |i| i unless i.empty? }
  initialize_value(*matches)
end
initialize_value(lb = '{', bv = nil, ev = nil, up = '}') click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 94
def initialize_value(lb = '{', bv = nil, ev = nil, up = '}')
  [lb, bv, ev, up]
end
recompile(value) click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 70
def recompile(value)
  super "#{ value[0] }#{ value[1] },#{ value[2] }#{ value[3] }"
end
set_begin(value, included = '{') click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 74
def set_begin(value, included = '{')
  @changed = true
  self.value[0, 2] = [included, value]
end
set_end(value, included = '}') click to toggle source
# File lib/cloud_sesame/query/ast/range_value.rb, line 79
def set_end(value, included = '}')
  @changed = true
  self.value[2, 2] = [value, included]
end