Sha256: 8bc0df0f97e31c1e8e27138348939c205cac3084578f8b35c40ca01120af68ae

Contents?: true

Size: 1.12 KB

Versions: 4

Compression:

Stored size: 1.12 KB

Contents

require 'forwardable'

module Yoda
  module Model
    module Values
      class InstanceValue < Base
        extend Forwardable

        # @return [Environment::AccessorInterface]
        attr_reader :class_accessor

        delegate [:select_constant_type, :select_constant_paths, :select_method] => :class_accessor_members

        # @param class_accessor [Environment::AccessorInterface]
        def initialize(class_accessor)
          @class_accessor = class_accessor
        end

        def referred_objects
          [class_accessor.class_object].compact
        end

        # @return [InstanceValue]
        def singleton_class_value
          InstanceValue.new(class_accessor.singleton_accessor)
        end

        # @return [InstanceValue, EmptyValue]
        def instance_value
          if class_accessor.instance_accessor
            InstanceValue.new(class_accessor.instance_accessor)
          else
            EmptyValue.new
          end
        end

        private

        # @return [Environment::NamespaceMembers]
        def class_accessor_members
          class_accessor.members
        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/model/values/instance_value.rb
yoda-language-server-0.10.0 lib/yoda/model/values/instance_value.rb
yoda-language-server-0.9.0 lib/yoda/model/values/instance_value.rb
yoda-language-server-0.8.0 lib/yoda/model/values/instance_value.rb