Class: Solargraph::YardMap
- Inherits:
-
Object
- Object
- Solargraph::YardMap
show all
- Includes:
- ApiMap::BundlerMethods
- Defined in:
- lib/solargraph/yard_map.rb,
lib/solargraph/yard_map/cache.rb,
lib/solargraph/yard_map/mapper.rb,
lib/solargraph/yard_map/helpers.rb,
lib/solargraph/yard_map/core_gen.rb,
lib/solargraph/yard_map/core_docs.rb,
lib/solargraph/yard_map/to_method.rb,
lib/solargraph/yard_map/core_fills.rb,
lib/solargraph/yard_map/rdoc_to_yard.rb,
lib/solargraph/yard_map/stdlib_fills.rb,
lib/solargraph/yard_map/mapper/to_method.rb,
lib/solargraph/yard_map/mapper/to_constant.rb,
lib/solargraph/yard_map/mapper/to_namespace.rb
Overview
The YardMap provides access to YARD documentation for the Ruby core, the stdlib, and gems.
Defined Under Namespace
Modules: CoreDocs, CoreFills, CoreGen, Helpers, RdocToYard, StdlibFills
Classes: Cache, Mapper, NoYardocError, ToMethod
Instance Attribute Summary collapse
Instance Method Summary
collapse
require_from_bundle
Constructor Details
#initialize(required: [], directory: '', source_gems: [], with_dependencies: true) ⇒ YardMap
Returns a new instance of YardMap.
51
52
53
54
|
# File 'lib/solargraph/yard_map.rb', line 51
def initialize(required: [], directory: '', source_gems: [], with_dependencies: true)
@with_dependencies = with_dependencies
change required.to_set, directory, source_gems.to_set
end
|
Instance Attribute Details
#with_dependencies=(value) ⇒ Boolean
45
46
47
|
# File 'lib/solargraph/yard_map.rb', line 45
def with_dependencies=(value)
@with_dependencies = value
end
|
Instance Method Details
#base_required ⇒ Object
157
158
159
|
# File 'lib/solargraph/yard_map.rb', line 157
def base_required
@base_required ||= Set.new
end
|
#change(new_requires, new_directory, new_source_gems) ⇒ Boolean
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/solargraph/yard_map.rb', line 70
def change new_requires, new_directory, new_source_gems
return false if new_requires == base_required && new_directory == @directory && new_source_gems == @source_gems
@gem_paths = {}
base_required.replace new_requires
required.replace new_requires
required.add 'psych' if new_requires.include?('yaml')
@source_gems = new_source_gems
@directory = new_directory
process_requires
@rebindable_method_names = nil
@pin_class_hash = nil
@pin_select_cache = {}
true
end
|
125
126
127
128
|
# File 'lib/solargraph/yard_map.rb', line 125
def core_pins
@@core_pins ||= load_core_pins
end
|
#directory ⇒ Object
161
162
163
|
# File 'lib/solargraph/yard_map.rb', line 161
def directory
@directory ||= ''
end
|
#load_yardoc(y) ⇒ YARD::Registry
112
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/solargraph/yard_map.rb', line 112
def load_yardoc y
if y.is_a?(Array)
YARD::Registry.load y, true
else
YARD::Registry.load! y
end
rescue StandardError => e
Solargraph::Logging.logger.warn "Error loading yardoc '#{y}' #{e.class} #{e.message}"
yardocs.delete y
nil
end
|
132
133
134
|
# File 'lib/solargraph/yard_map.rb', line 132
def path_pin path
pins.select { |p| p.path == path }.first
end
|
57
58
59
|
# File 'lib/solargraph/yard_map.rb', line 57
def pins
@pins ||= []
end
|
#rebindable_method_names ⇒ Set<String>
87
88
89
90
91
92
93
|
# File 'lib/solargraph/yard_map.rb', line 87
def rebindable_method_names
@rebindable_method_names ||= pins_by_class(Pin::Method)
.select { |pin| pin. && pin..include?('@yieldself') }
.map(&:name)
.concat(['instance_eval', 'instance_exec', 'class_eval', 'class_exec', 'module_eval', 'module_exec', 'define_method'])
.to_set
end
|
#require_reference(path) ⇒ Location
Get the location of a file referenced by a require path.
140
141
142
143
144
145
146
147
148
149
150
151
|
# File 'lib/solargraph/yard_map.rb', line 140
def require_reference path
spec = spec_for_require(path)
spec.full_require_paths.each do |rp|
file = File.join(rp, "#{path}.rb")
next unless File.file?(file)
return Solargraph::Location.new(file, Solargraph::Range.from_to(0, 0, 0, 0))
end
nil
rescue Gem::LoadError
nil
end
|
#required ⇒ Set<String>
101
102
103
|
# File 'lib/solargraph/yard_map.rb', line 101
def required
@required ||= Set.new
end
|
#stdlib_paths ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/solargraph/yard_map.rb', line 29
def stdlib_paths
@@stdlib_paths ||= begin
result = {}
YARD::Registry.load! CoreDocs.yardoc_stdlib_file
YARD::Registry.all.each do |co|
next if co.file.nil?
path = co.file.sub(/^(ext|lib)\//, '').sub(/\.(rb|c)$/, '')
base = path.split('/').first
result[base] ||= []
result[base].push co
end
result
end
end
|
#stdlib_pins ⇒ Object
153
154
155
|
# File 'lib/solargraph/yard_map.rb', line 153
def stdlib_pins
@stdlib_pins ||= []
end
|
#unresolved_requires ⇒ Array<String>
106
107
108
|
# File 'lib/solargraph/yard_map.rb', line 106
def unresolved_requires
@unresolved_requires ||= []
end
|
#with_dependencies? ⇒ Boolean
61
62
63
64
|
# File 'lib/solargraph/yard_map.rb', line 61
def with_dependencies?
@with_dependencies ||= true unless @with_dependencies == false
@with_dependencies
end
|
#yardocs ⇒ Array<String>
96
97
98
|
# File 'lib/solargraph/yard_map.rb', line 96
def yardocs
@yardocs ||= []
end
|