Sha256: 8172dad179a8247f0f7aebd8c09925b8667d0b1fe0db89a976341885d3536c44

Contents?: true

Size: 1.09 KB

Versions: 7

Compression:

Stored size: 1.09 KB

Contents

module Yoda
  module Store
    module Query
      module Associators
        class AssociateMethods
          # @return [Registry]
          attr_reader :registry

          # @param registry [Registry]
          def initialize(registry)
            @registry = registry
          end

          # @param obj [Object::Base]
          def associate(obj)
            if obj.is_a?(Objects::NamespaceObject)
              AssociateMethods.new(registry).associate(obj)
              obj.methods = Enumerator.new do |yielder|
                name_set = Set.new

                obj.ancestors.each do |ancestor|
                  ancestor.instance_method_addresses.each do |method_address|
                    method_name = Objects::MethodObject.name_of_path(method_address)
                    next name_set.has_key?(method_name)
                    name_set.add(method_name)
                    if el = registry.find(method_address)
                      yielder << el
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
yoda-language-server-0.7.1 lib/yoda/store/query/associators/associate_methods.rb
yoda-language-server-0.7.0 lib/yoda/store/query/associators/associate_methods.rb
yoda-language-server-0.6.2 lib/yoda/store/query/associators/associate_methods.rb
yoda-language-server-0.6.1 lib/yoda/store/query/associators/associate_methods.rb
yoda-language-server-0.6.0 lib/yoda/store/query/associators/associate_methods.rb
yoda-language-server-0.5.0 lib/yoda/store/query/associators/associate_methods.rb
yoda-language-server-0.4.0 lib/yoda/store/query/associators/associate_methods.rb