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