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