ClassArguments

Constants

  • INVALID_CLASS_ARGUMENT_ERROR

Methods

.active_node_model?

def active_node_model?(class_constant)
  class_constant.included_modules.include?(Neo4j::ActiveNode)
end

.constantize_argument

def constantize_argument(class_argument)
  case class_argument
  when 'any', :any, false, nil
    nil
  when Array
    class_argument.map(&method(:constantize_argument))
  else
    class_argument.to_s.constantize.tap do |class_constant|
      if !active_node_model?(class_constant)
        fail ArgumentError, "#{class_constant} is not an ActiveNode model"
      end
    end
  end
rescue NameError
  raise ArgumentError, "Could not find class: #{class_argument}"
end

.valid_argument?

def valid_argument?(class_argument)
  [NilClass, String, Symbol, FalseClass].include?(class_argument.class) ||
    (class_argument.is_a?(Array) && class_argument.all? { |c| [Symbol, String].include?(c.class) })
end

.validate_argument!

def validate_argument!(class_argument, context)
  return if valid_argument?(class_argument)

  fail ArgumentError, "#{context} #{INVALID_CLASS_ARGUMENT_ERROR} (was #{class_argument.inspect})"
end