Class: CloudSesame::Query::AST::Abstract::Value

Inherits:
Object
  • Object
show all
Defined in:
lib/cloud_sesame/query/ast/abstract/value.rb

Direct Known Subclasses

NumericValue, RangeValue, StringValue

Constant Summary collapse

RANGE_FORMAT =

CONSTANTS

Regexp.new(/\A(\[|{)(.*),(.*)(\}|\])\z/).freeze
DIGIT_FORMAT =
Regexp.new(/\A\d+(.\d+)?\z/).freeze
DATETIME_FORMAT =
Regexp.new(/\d+{4}-\d+{2}-\d+{2}T\d+{2}:\d+{2}:\d+{2}/).freeze
TIME_FORMAT =
Regexp.new(/\d+{4}-\d+{2}-\d+{2} \d+{2}:\d+{2}:\d+{2}/).freeze
DATE_FORMAT =
Regexp.new(/\d+{4}-\d+{2}-\d+{2}/).freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, type = nil) ⇒ Value

INSTANCE METHODS



57
58
59
60
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 57

def initialize(value, type = nil)
  self.value = value
  @type = type
end

Instance Attribute Details

#changedObject (readonly)

Returns the value of attribute changed.



17
18
19
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 17

def changed
  @changed
end

#compiledObject (readonly)

Returns the value of attribute compiled.



17
18
19
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 17

def compiled
  @compiled
end

#valueObject

Returns the value of attribute value.



17
18
19
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 17

def value
  @value
end

Class Method Details

.datetime?(value) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 38

def self.datetime?(value)
  value.kind_of?(::Date) || value.kind_of?(::Time)
end

.numeric?(value) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 30

def self.numeric?(value)
  value.is_a?(::Numeric)
end

.range?(value) ⇒ Boolean

CLASS METHODS

Returns:

  • (Boolean)


22
23
24
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 22

def self.range?(value)
  value.kind_of?(Range)
end

.string_date?(value) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 50

def self.string_date?(value)
  value.is_a?(String) && DATE_FORMAT =~ value
end

.string_datetime?(value) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 42

def self.string_datetime?(value)
  value.is_a?(::String) && DATETIME_FORMAT =~ value
end

.string_numeric?(value) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 34

def self.string_numeric?(value)
  value.is_a?(::String) && !!(DIGIT_FORMAT =~ value)
end

.string_range?(value) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 26

def self.string_range?(value)
  value.is_a?(::String) && !!(RANGE_FORMAT =~ strip(value))
end

.string_time?(value) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 46

def self.string_time?(value)
  value.is_a?(::String) && TIME_FORMAT =~ value
end

Instance Method Details

#==(value) ⇒ Object



77
78
79
80
81
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 77

def ==(value)
  (value.respond_to?(:compile) && compile == value.compile) ||
  @value == value ||
  compile == value
end

#compileObject



69
70
71
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 69

def compile
  changed ? recompile(value) : @compiled
end

#to_sObject



73
74
75
# File 'lib/cloud_sesame/query/ast/abstract/value.rb', line 73

def to_s
  value.to_s
end