17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/solargraph/api_map/source_to_yard.rb', line 17
def rake_yard store
code_object_map.clear
store.namespace_pins.each do |pin|
next if pin.path.nil? or pin.path.empty?
if pin.type == :class
code_object_map[pin.path] ||= YARD::CodeObjects::ClassObject.new(root_code_object, pin.path)
else
code_object_map[pin.path] ||= YARD::CodeObjects::ModuleObject.new(root_code_object, pin.path)
end
code_object_map[pin.path].docstring = pin.docstring
code_object_map[pin.path].files.push pin.location.filename unless pin.location.nil?
end
store.namespace_pins.each do |pin|
store.get_includes(pin.path).each do |ref|
code_object_map[pin.path].instance_mixins.push code_object_map[ref] unless code_object_map[ref].nil? or code_object_map[pin.path].nil?
end
end
store.method_pins.each do |pin|
code_object_map[pin.path] ||= YARD::CodeObjects::MethodObject.new(code_object_at(pin.namespace), pin.name, pin.scope)
code_object_map[pin.path].docstring = pin.docstring
code_object_map[pin.path].visibility = pin.visibility || :public
code_object_map[pin.path].files.push pin.location.filename unless pin.location.nil?
code_object_map[pin.path].parameters = pin.parameters.map do |p|
n = p.match(/^[a-z0-9_]*:?/i)[0]
v = nil
if p.length > n.length
v = p[n.length..-1].gsub(/^ = /, '')
end
[n, v]
end
end
end
|