class ChewyQuery::Builder::Nodes::Field
Public Class Methods
new(name, *args)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 5 def initialize(name, *args) @name = name.to_s @args = args end
Public Instance Methods
!()
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 10 def ! Nodes::Missing.new(@name) end
!=(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 55 def !=(value) case value when nil Nodes::Exists.new(@name) else Nodes::Not.new(self == value) end end
!~(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 73 def !~(value) Not.new(self =~ value) end
<(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 23 def <(value) Nodes::Range.new(@name, *__options_merge__(lt: value)) end
<=(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 31 def <=(value) Nodes::Range.new(@name, *__options_merge__(lt: value, right_closed: true)) end
==(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 35 def ==(value) case value when nil Nodes::Missing.new(@name, existence: false, null_value: true) when ::Regexp Nodes::Regexp.new(@name, value, *@args) when ::Range Nodes::Range.new(@name, *__options_merge__(gt: value.first, lt: value.last)) else if value.is_a?(Array) && value.first.is_a?(::Range) Nodes::Range.new(@name, *__options_merge__( gt: value.first.first, lt: value.first.last, left_closed: true, right_closed: true )) else Nodes::Equal.new(@name, value, *@args) end end end
=~(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 64 def =~(value) case value when ::Regexp Nodes::Regexp.new(@name, value, *@args) else Nodes::Prefix.new(@name, value, @args.extract_options!) end end
>(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 19 def >(value) Nodes::Range.new(@name, *__options_merge__(gt: value)) end
>=(value)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 27 def >=(value) Nodes::Range.new(@name, *__options_merge__(gt: value, left_closed: true)) end
method_missing(method, *args, &block)
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 77 def method_missing(method, *args, &block) method = method.to_s if method =~ /\?\Z/ Nodes::Exists.new([@name, method.gsub(/\?\Z/, '')].join(?.)) else self.class.new([@name, method].join(?.), *args) end end
to_ary()
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 86 def to_ary nil end
~()
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 14 def ~ __options_merge__!(cache: true) self end
Private Instance Methods
__options_merge__(additional = {})
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 98 def __options_merge__(additional = {}) options = @args.extract_options! options = options.merge(additional) @args + [options] end
__options_merge__!(additional = {})
click to toggle source
# File lib/chewy_query/builder/nodes/field.rb, line 92 def __options_merge__!(additional = {}) options = @args.extract_options! options = options.merge(additional) @args.push(options) end