Sha256: 6d3e4d2f24a591a5c4b6be23e85dcbf6c0924e44b075f0fc6d4d4f86e8278324
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
module Yoda module Store class Registry::Composer # @return [Symbol] attr_reader :id # @return [Hash{Symbol => Registry}] attr_reader :registries def initialize(id:, registries: []) @id = id @registries = registries.map { |registry| [registry.id.to_sym, registry] }.to_h end def add_registry(registry) registries[registry.id.to_sym] = registry end def remove_registry(registry) registries.delete(registry.id.to_sym) end def get(address, registry_ids: nil) registry_mask = IdMask.build(registry_ids) target_registries = registry_mask.any? ? all_registries : registry_mask.covering_ids.map { |id| get_registry(id) }.compact objects_in_registry = target_registries.map { |registry| registry.get(address, registry_ids: registry_mask.nesting_mask(registry.id)) }.compact objects_in_registry.empty? ? nil : Objects::Merger.new(objects_in_registry).merged_instance end # @return [Set] def keys registries.values.map(&:keys).reduce(Set.new) { |memo, keys| memo + keys } end def get_registry(key) registries[key.to_sym] end def has_registry(key) registries.has_key?(key.to_sym) end def all_registries registries.values.compact end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
yoda-language-server-0.10.1 | lib/yoda/store/registry/composer.rb |
yoda-language-server-0.10.0 | lib/yoda/store/registry/composer.rb |