Sha256: 99344312b2e94f5192e8c42fa5982db9e44bf28bbd4f47be3189dc1a3606e776

Contents?: true

Size: 979 Bytes

Versions: 4

Compression:

Stored size: 979 Bytes

Contents

module Yoda
  module Store
    module Objects
      class ValueObject < Base
        class Connected < Base::Connected
          delegate_to_object :value
        end

        # @return [String]
        attr_reader :value

        # @return [Array<Symbol>]
        def self.attr_names
          super + %i(value)
        end

        # @param path [String]
        # @param value [String]
        def initialize(value: nil, **kwargs)
          super(**kwargs)
          @value = value
        end

        # @return [String]
        def name
          @name ||= path.match(MODULE_TAIL_PATTERN) { |md| md[1] || md[2] }
        end

        def kind
          :value
        end

        def to_h
          super.merge(value: value)
        end

        private

        # @param another [self]
        # @return [Hash]
        def merge_attributes(another)
          super.merge(
            value: another.value || self.value,
          )
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/store/objects/value_object.rb
yoda-language-server-0.10.0 lib/yoda/store/objects/value_object.rb
yoda-language-server-0.9.0 lib/yoda/store/objects/value_object.rb
yoda-language-server-0.8.0 lib/yoda/store/objects/value_object.rb