Sha256: beb09ca66b4268d8782f1af88a07f03967c52de74206f8a6492ff5f46616dcb8

Contents?: true

Size: 1.19 KB

Versions: 2

Compression:

Stored size: 1.19 KB

Contents

module Yoda
  module Store
    module Objects
      class Patch
        # @param id [String]
        attr_reader :id

        # @param registry [Hash{ Symbol => Addressable }]
        attr_reader :registry

        # @param id [String]
        # @param  [Array[Addressable], nil]
        def initialize(id, contents = nil)
          @id = id
          @registry = (contents || []).map { |content| [content.address.to_sym, content] }.to_h
        end

        # @param addressable [Addressable]
        # @return [void]
        def register(addressable)
          if el = @registry[addressable.address.to_sym]
            @registry[addressable.address.to_sym] = el.merge(addressable)
          else
            @registry[addressable.address.to_sym] = addressable
          end
        end

        # @param address [String, Symbol]
        # @return [Addressable, nil]
        def find(address)
          @registry[address.to_sym]
        end

        # @param address [String, Symbol]
        # @return [true, false]
        def has_key?(address)
          @registry.has_key?(address.to_sym)
        end

        # @return [Array<Symbol>]
        def keys
          @registry.keys
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yoda-language-server-0.7.2 lib/yoda/store/objects/patch.rb
yoda-language-server-0.7.1 lib/yoda/store/objects/patch.rb