Sha256: b5d28188358a24e73e393c73915e1c89b9c0e84d34d64fdb7caf1ec31fb7f606

Contents?: true

Size: 1.3 KB

Versions: 140

Compression:

Stored size: 1.3 KB

Contents

module Neo4j
  module ClassArguments
    class << self
      INVALID_CLASS_ARGUMENT_ERROR = 'option must by String, Symbol, false, nil, or an Array of Symbols/Strings'

      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

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

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

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

      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
    end
  end
end

Version data entries

140 entries across 140 versions & 3 rubygems

Version Path
neo4j-8.0.17 lib/neo4j/class_arguments.rb
neo4j-8.0.16 lib/neo4j/class_arguments.rb
neo4j-8.0.15 lib/neo4j/class_arguments.rb
neo4j-8.0.13 lib/neo4j/class_arguments.rb
neo4j-8.0.12 lib/neo4j/class_arguments.rb
neo4j-8.0.11 lib/neo4j/class_arguments.rb
neo4j-8.0.10 lib/neo4j/class_arguments.rb
neo4j-8.0.9 lib/neo4j/class_arguments.rb
neo4j-8.0.8 lib/neo4j/class_arguments.rb
neo4j-8.0.7 lib/neo4j/class_arguments.rb
neo4j-8.0.6 lib/neo4j/class_arguments.rb
neo4j-8.0.5 lib/neo4j/class_arguments.rb
neo4j-8.0.4 lib/neo4j/class_arguments.rb
neo4j-8.0.3 lib/neo4j/class_arguments.rb
neo4j-8.0.2 lib/neo4j/class_arguments.rb
neo4j-8.0.1 lib/neo4j/class_arguments.rb
neo4j-8.0.0 lib/neo4j/class_arguments.rb
neo4j-8.0.0.rc.4 lib/neo4j/class_arguments.rb
neo4j-8.0.0.rc.3 lib/neo4j/class_arguments.rb
neo4j-8.0.0.rc.2 lib/neo4j/class_arguments.rb