class Querly::Pattern::Expr::Literal
Attributes
type[R]
values[R]
Public Class Methods
new(type:, values: nil)
click to toggle source
# File lib/querly/pattern/expr.rb, line 86 def initialize(type:, values: nil) @type = type @values = values ? Array(values) : nil end
Public Instance Methods
test_node(node)
click to toggle source
# File lib/querly/pattern/expr.rb, line 103 def test_node(node) case node&.type when :int return false unless type == :int || type == :number test_value(node.children.first) when :float return false unless type == :float || type == :number test_value(node.children.first) when :true type == :bool && (values == nil || values == [true]) when :false type == :bool && (values == nil || values == [false]) when :str return false unless type == :string test_value(node.children.first.scrub) when :sym return false unless type == :symbol test_value(node.children.first) when :regexp return false unless type == :regexp test_value(node.children.first) end end
test_value(object)
click to toggle source
# File lib/querly/pattern/expr.rb, line 95 def test_value(object) if values values.any? {|value| value === object } else true end end
with_values(values)
click to toggle source
# File lib/querly/pattern/expr.rb, line 91 def with_values(values) self.class.new(type: type, values: values) end