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-9.6.2 lib/neo4j/class_arguments.rb
activegraph-10.0.0.pre.alpha.11 lib/neo4j/class_arguments.rb
activegraph-10.0.0.pre.alpha.10 lib/neo4j/class_arguments.rb
activegraph-10.0.0.pre.alpha.9 lib/neo4j/class_arguments.rb
activegraph-10.0.0.pre.alpha.8 lib/neo4j/class_arguments.rb
activegraph-10.0.0.pre.alpha.7 lib/neo4j/class_arguments.rb
activegraph-10.0.0.pre.alpha.6 lib/neo4j/class_arguments.rb
neo4j-10.0.0.pre.alpha.5 lib/neo4j/class_arguments.rb
neo4j-10.0.0.pre.alpha.4 lib/neo4j/class_arguments.rb
neo4j-10.0.0.pre.alpha.3 lib/neo4j/class_arguments.rb
neo4j-10.0.0.pre.alpha.2 lib/neo4j/class_arguments.rb
neo4j-10.0.0.pre.alpha.1 lib/neo4j/class_arguments.rb
neo4j-9.6.1 lib/neo4j/class_arguments.rb
neo4j-9.6.0 lib/neo4j/class_arguments.rb
neo4j-9.5.3 lib/neo4j/class_arguments.rb
neo4j-9.5.2 lib/neo4j/class_arguments.rb
neo4j-9.5.0 lib/neo4j/class_arguments.rb
neo4j-9.4.0 lib/neo4j/class_arguments.rb
neo4j-9.3.0 lib/neo4j/class_arguments.rb
neo4j-9.2.4 lib/neo4j/class_arguments.rb