Class: Solargraph::DocMap

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/solargraph/doc_map.rb

Overview

A collection of pins generated from required gems.

Constant Summary

Constants included from Logging

Logging::DEFAULT_LOG_LEVEL, Logging::LOG_LEVELS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logging

logger

Constructor Details

#initialize(requires, preferences, rbs_path = nil) ⇒ DocMap

Returns a new instance of DocMap.

Parameters:

  • requires (Array<String>)
  • preferences (Array<Gem::Specification>)
  • rbs_path (String, Pathname, nil) (defaults to: nil)


24
25
26
27
28
29
# File 'lib/solargraph/doc_map.rb', line 24

def initialize(requires, preferences, rbs_path = nil)
  @requires = requires.compact
  @preferences = preferences.compact
  @rbs_path = rbs_path
  generate
end

Instance Attribute Details

#pinsArray<Pin::Base> (readonly)

Returns:



16
17
18
# File 'lib/solargraph/doc_map.rb', line 16

def pins
  @pins
end

#preferencesArray<Gem::Specification> (readonly)

Returns:

  • (Array<Gem::Specification>)


13
14
15
# File 'lib/solargraph/doc_map.rb', line 13

def preferences
  @preferences
end

#requiresArray<String> (readonly)

Returns:

  • (Array<String>)


10
11
12
# File 'lib/solargraph/doc_map.rb', line 10

def requires
  @requires
end

#uncached_gemspecsArray<Gem::Specification> (readonly)

Returns:

  • (Array<Gem::Specification>)


19
20
21
# File 'lib/solargraph/doc_map.rb', line 19

def uncached_gemspecs
  @uncached_gemspecs
end

Class Method Details

.gems_in_memoryHash{Gem::Specification => Array[Pin::Base]}

Returns:

  • (Hash{Gem::Specification => Array[Pin::Base]})


42
43
44
# File 'lib/solargraph/doc_map.rb', line 42

def self.gems_in_memory
  @gems_in_memory ||= {}
end

Instance Method Details

#dependenciesSet<Gem::Specification>

Returns:

  • (Set<Gem::Specification>)


47
48
49
# File 'lib/solargraph/doc_map.rb', line 47

def dependencies
  @dependencies ||= (gemspecs.flat_map { |spec| fetch_dependencies(spec) } - gemspecs).to_set
end

#gemspecsArray<Gem::Specification>

Returns:

  • (Array<Gem::Specification>)


32
33
34
# File 'lib/solargraph/doc_map.rb', line 32

def gemspecs
  @gemspecs ||= required_gems_map.values.compact.flatten
end

#unresolved_requiresArray<String>

Returns:

  • (Array<String>)


37
38
39
# File 'lib/solargraph/doc_map.rb', line 37

def unresolved_requires
  @unresolved_requires ||= required_gems_map.select { |_, gemspecs| gemspecs.nil? }.keys
end