Sha256: cdac78de9c5770440c54166f343b322afa0ce55d2f7de3f7d14318d3f82ffdcc

Contents?: true

Size: 1.12 KB

Versions: 52

Compression:

Stored size: 1.12 KB

Contents

require 'dry/core/constants'
require 'dry-equalizer'
require 'dry-container'
require 'dry-types'

Dry::Types.load_extensions(:maybe)

module Types
  include Dry::Types.module
  include Dry::Core::Constants

  class << self

    # @param key [String, Symbol]
    # @return [Class]
    def [](key)
      Dry::Types[key]
    end

    # @param key [String, Symbol]
    # @return [Class]
    def key?(key)
      Dry::Types.container.key?(key)
    end

    # Container used to store validation types and domain entities
    #
    # @return Dry::Container
    def container
      Dry::Types.container
    end

    # Register a dependency that can be used for injection
    #
    # @param key [String, Symbol]
    # @param klass [Class]
    # @return
    def register(key, klass)
      container.register(key, klass)
    end

    def register_domain(klass, opts = {})
      unless klass.respond_to?(:domain_name)
        fail "Domain must be a Appfuel::Entity or respond to :domain_name"
      end
      name = opts.key?(:as) ? opt[:as] : klass.domain_name
      return if key?(name) && self[name] == klass

      register(name, klass)
    end
  end
end

Version data entries

52 entries across 52 versions & 1 rubygems

Version Path
appfuel-0.7.0 lib/appfuel/types.rb
appfuel-0.6.16 lib/appfuel/types.rb
appfuel-0.6.15 lib/appfuel/types.rb
appfuel-0.6.14 lib/appfuel/types.rb
appfuel-0.6.13 lib/appfuel/types.rb
appfuel-0.6.12 lib/appfuel/types.rb
appfuel-0.6.11 lib/appfuel/types.rb
appfuel-0.6.10 lib/appfuel/types.rb
appfuel-0.6.9 lib/appfuel/types.rb
appfuel-0.6.8 lib/appfuel/types.rb
appfuel-0.6.7 lib/appfuel/types.rb
appfuel-0.6.6 lib/appfuel/types.rb
appfuel-0.6.5 lib/appfuel/types.rb
appfuel-0.6.4 lib/appfuel/types.rb
appfuel-0.6.3 lib/appfuel/types.rb
appfuel-0.6.1 lib/appfuel/types.rb
appfuel-0.5.16 lib/appfuel/types.rb
appfuel-0.5.15 lib/appfuel/types.rb
appfuel-0.5.14 lib/appfuel/types.rb
appfuel-0.5.13 lib/appfuel/types.rb