Sha256: 5defaea1ce97c4fbaacc0e17604e79670337f8afc53055da2d843c6221e5871b
Contents?: true
Size: 1.4 KB
Versions: 3
Compression:
Stored size: 1.4 KB
Contents
# frozen_string_literal: true require "delegate" module Dry module Core class Container # @api private class NamespaceDSL < ::SimpleDelegator # DSL for defining namespaces # # @param [Dry::Core::Container::Mixin] container # The container # @param [String] namespace # The namespace (name) # @param [String] namespace_separator # The namespace separator # @yield # The block to evaluate to define the namespace # # @return [Mixed] # # @api private def initialize(container, namespace, namespace_separator, &block) @namespace = namespace @namespace_separator = namespace_separator super(container) if block.arity.zero? instance_eval(&block) else yield self end end def register(key, *args, &block) super(namespaced(key), *args, &block) end def namespace(namespace, &block) super(namespaced(namespace), &block) end def import(namespace) namespace(namespace.name, &namespace.block) self end def resolve(key) super(namespaced(key)) end private def namespaced(key) [@namespace, key].join(@namespace_separator) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-core-1.0.2 | lib/dry/core/container/namespace_dsl.rb |
dry-core-1.0.1 | lib/dry/core/container/namespace_dsl.rb |
dry-core-1.0.0 | lib/dry/core/container/namespace_dsl.rb |