module JMESPath::Nodes::TypeChecker

def get_type(value)

def get_type(value)
  if value.respond_to?(:to_str)
    STRING_TYPE
  elsif value == true || value == false
    BOOLEAN_TYPE
  elsif value.nil?
    NULL_TYPE
  elsif value.is_a?(Numeric)
    NUMBER_TYPE
  elsif value.respond_to?(:to_hash) || value.is_a?(Struct)
    OBJECT_TYPE
  elsif value.respond_to?(:to_ary)
    ARRAY_TYPE
  elsif value.is_a?(Expression)
    EXPRESSION_TYPE
  end
end