Sha256: 50f728ca457d36148e503cd275b17fc29367b94f35f83c0d27d5d737fd04b8b7
Contents?: true
Size: 1.34 KB
Versions: 3
Compression:
Stored size: 1.34 KB
Contents
module CloudSesame module Query module AST class Literal SINGLE_QUATE = /\'/ ESCAPE_QUATE = "\\'" attr_accessor :field attr_reader :options, :value def initialize(field = nil, value = nil, options = {}, &block) @field = field @value = Value.parse value if value @value = Value.parse ValueEvaluator.new.instance_exec &block if block_given? @options = options || {} applied[@value] = true end def is_for(field, options) @field = field @options = options.merge @options end def is_excluded applied[value] = applied[value] == false ? true : false end def as_field options[:as] || field end def compile(detailed = false) detailed ? detailed_format : standard_format end private def applied options[:applied] ||= {} end def standard_format "#{ as_field }:#{ value.compile }" end def detailed_format "field=#{ escape as_field.to_s } #{ value.compile }" end def escape(data) "'#{ data.gsub(SINGLE_QUATE) { ESCAPE_QUATE } }'" end class ValueEvaluator include DSL::RangeMethods end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
CloudSesame-0.4.2 | lib/cloud_sesame/query/ast/literal.rb |
CloudSesame-0.4.1 | lib/cloud_sesame/query/ast/literal.rb |
CloudSesame-0.4.0 | lib/cloud_sesame/query/ast/literal.rb |