Sha256: e8080fbefd7e4b656f4e78be3f8e7c29b3d14b9d3d5cdeca6a7131dfeb8c3b2d
Contents?: true
Size: 1.37 KB
Versions: 1
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true module FunRuby class Container # @private class Resolve private_class_method :new # @private def self.build(aliases: [], container: FunRuby.container) formatted = aliases.each_with_object({}) do |key, namespace| if key.is_a?(::Hash) namespace.merge!(key.map { |k, v| [k, v].map(&:to_s) }.to_h) else namespace[key.to_s] = nil end end new(aliases: formatted.to_a.reverse.to_h, container: container) end # @private def initialize(aliases:, container:) @aliases = aliases @container = container end # @private def call(key) key = key.to_s aliases.each do |(namespace, shortcut)| full_key = build_full_key(namespace, shortcut, key) begin return container.fetch(full_key) rescue KeyError next end end container.fetch(key) do raise KeyError, "key #{key.inspect} has not been registered" end end private def build_full_key(namespace, shortcut, key) if shortcut.nil? [namespace, key].join(NAMESPACE_SEPARATOR) else key.gsub(/(?<=\A|\.)#{shortcut}(?=\z|\.)/, namespace) end end attr_reader :aliases, :container end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fun-ruby-0.0.1 | lib/fun_ruby/container/resolve.rb |