class CloudSesame::Query::AST::Literal
Constants
- ESCAPE_QUOTE
- SINGLE_QUOTE
Attributes
field[R]
options[R]
value[R]
Public Class Methods
new(field, value, options = {})
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 11 def initialize(field, value, options = {}) @field = field @options = options || default_options @value = parse_value(value) if value end
Public Instance Methods
actual_field_name()
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 17 def actual_field_name @options[:as] || @field end
applied(included)
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 21 def applied(included) { field: @field, value: @value, included: included } if @value end
compile(detailed = false)
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 25 def compile(detailed = false) (detailed ? detailed_format : standard_format) if @value end
is_for(field, options)
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 29 def is_for(field, options) @field = field @options.merge! options if options end
Private Instance Methods
default_options()
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 52 def default_options { type: Value } end
detailed_format()
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 40 def detailed_format "field=#{ escape actual_field_name.to_s } #{ @value.compile }" end
escape(data)
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 44 def escape(data) "'#{ data.gsub(SINGLE_QUOTE) { ESCAPE_QUOTE } }'" end
parse_value(value)
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 48 def parse_value(value) LazyObject.new { (@options[:type] || Value).parse(value) } end
standard_format()
click to toggle source
# File lib/cloud_sesame/query/ast/literal.rb, line 36 def standard_format "#{ actual_field_name }:#{ @value.compile }" end