polyfox/moon-data_model

View on GitHub
lib/data_model/validators.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'data_model/validators/base'

module Moon
  module DataModel
    # Various Validators usable by {Field}
    module Validators
      # @return [Hash<Symbol, Validator::Base<>>]
      @registry = {}

      # Registers a Validator
      #
      # @param [Symbol] key
      # @param [Validator::Base] validator
      def self.register(key, validator)
        @registry[key] = validator
      end

      # Returns whether or not there is a registered validator for the key.
      #
      # @param [Symbol] key
      # @return [Boolean]
      def self.registered?(key)
        @registry.key?(key)
      end

      # Fecthes a validator by key
      #
      # @param [Symbol] key
      # @return [Validator::Base] the validator
      def self.fetch(key)
        @registry.fetch(key) do
          raise NoSuchValidator, "could not a find a validator for key: #{key}"
        end
      end

      # Returns the validators registry
      #
      # @return [Hash] the current registry
      def self.entries
        @registry
      end
    end
  end
end

require 'data_model/validators/type'