solargraph 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/solargraph.rb +3 -5
- data/lib/solargraph/api_map.rb +20 -6
- data/lib/solargraph/code_map.rb +7 -0
- data/lib/solargraph/node_methods.rb +7 -2
- data/lib/solargraph/server.rb +3 -0
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/yard_map.rb +29 -8
- data/lib/yard-solargraph.rb +27 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d9772edc47881d8e944c68b737e4b065fb2fb30
|
4
|
+
data.tar.gz: 1f2dbd2d6ec31e1d94c485a87e8a247b4ed49fe0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4d94536db05855102ea393348a8a6d589ad76f119d2205aecbb0f4f666e654fc748c1c6890037b44edf028050c6a46faac90c2dcbe6187702498dcb9d34f16e
|
7
|
+
data.tar.gz: 57223756d8581d876d77026e14397e50ab3d08913a2b15515081d05b2ec1ecf092741bd933078e22a106b4067c0745da14227f9b0ce0bed0e7bf4d1e8ecf61db
|
data/lib/solargraph.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'solargraph/version'
|
2
2
|
require 'rubygems/package'
|
3
|
-
require 'yard'
|
3
|
+
require 'yard-solargraph'
|
4
4
|
|
5
5
|
module Solargraph
|
6
6
|
autoload :Analyzer, 'solargraph/analyzer'
|
@@ -15,7 +15,8 @@ module Solargraph
|
|
15
15
|
autoload :Server, 'solargraph/server'
|
16
16
|
autoload :YardMap, 'solargraph/yard_map'
|
17
17
|
|
18
|
-
YARDOC_PATH = File.realpath(File.dirname(__FILE__)
|
18
|
+
YARDOC_PATH = File.join(File.realpath(File.dirname(__FILE__)), '..', 'yardoc')
|
19
|
+
YARD_EXTENSION_FILE = File.join(File.realpath(File.dirname(__FILE__)), 'yard-solargraph.rb')
|
19
20
|
end
|
20
21
|
|
21
22
|
# Make sure the core and stdlib documentation is available
|
@@ -39,6 +40,3 @@ unless File.exist?(version_dir)
|
|
39
40
|
tar_extract.close
|
40
41
|
#FileUtils.rm File.join(cache_dir, '2.0.0.tar.gz')
|
41
42
|
end
|
42
|
-
|
43
|
-
# Define a @type tag to be used for documenting variables
|
44
|
-
YARD::Tags::Library.define_tag("Type", :type, :with_types_and_name)
|
data/lib/solargraph/api_map.rb
CHANGED
@@ -14,9 +14,8 @@ module Solargraph
|
|
14
14
|
]
|
15
15
|
|
16
16
|
MAPPABLE_METHODS = [
|
17
|
-
:include, :extend, :require, :autoload, :attr_reader, :attr_writer, :attr_accessor, :private, :public, :protected
|
18
|
-
|
19
|
-
]
|
17
|
+
:include, :extend, :require, :autoload, :attr_reader, :attr_writer, :attr_accessor, :private, :public, :protected
|
18
|
+
] # @todo Not including solargraph_include_public_methods (an experimental thing)
|
20
19
|
|
21
20
|
include NodeMethods
|
22
21
|
|
@@ -463,6 +462,21 @@ module Solargraph
|
|
463
462
|
arr
|
464
463
|
end
|
465
464
|
|
465
|
+
def update_yardoc
|
466
|
+
if workspace.nil?
|
467
|
+
STDERR.puts "No workspace specified for yardoc update."
|
468
|
+
else
|
469
|
+
Dir.chdir(workspace) do
|
470
|
+
#YARD::Registry.load(yard_options[:include] - yard_options[:exclude], true)
|
471
|
+
#YARD::Registry.save
|
472
|
+
`yardoc -e #{Solargraph::YARD_EXTENSION_FILE} #{yard_options[:all]}`
|
473
|
+
unless $?.success?
|
474
|
+
STDERR.puts "There was an error processing the workspace yardoc."
|
475
|
+
end
|
476
|
+
end
|
477
|
+
end
|
478
|
+
end
|
479
|
+
|
466
480
|
private
|
467
481
|
|
468
482
|
def inner_get_methods(namespace, root = '', skip = [])
|
@@ -501,9 +515,9 @@ module Solargraph
|
|
501
515
|
# from an include, or only from an extend?
|
502
516
|
i = unpack_name(c.children[2])
|
503
517
|
meths += inner_get_methods(i, root, skip) unless i == 'Kernel'
|
504
|
-
elsif c.type == :send and c.children[1] == :solargraph_include_public_methods
|
505
|
-
|
506
|
-
|
518
|
+
#elsif c.type == :send and c.children[1] == :solargraph_include_public_methods
|
519
|
+
# i = unpack_name(c.children[2])
|
520
|
+
# meths += get_instance_methods(i, root, visibility: [:public])
|
507
521
|
else
|
508
522
|
meths += inner_get_methods_from_node(c, root, skip)
|
509
523
|
end
|
data/lib/solargraph/code_map.rb
CHANGED
@@ -15,6 +15,7 @@ module Solargraph
|
|
15
15
|
filename = filename.gsub(File::ALT_SEPARATOR, File::SEPARATOR) unless File::ALT_SEPARATOR.nil?
|
16
16
|
workspace = CodeMap.find_workspace(filename)
|
17
17
|
end
|
18
|
+
@filename = filename
|
18
19
|
@api_map = api_map
|
19
20
|
if @api_map.nil?
|
20
21
|
@api_map = ApiMap.new(workspace)
|
@@ -200,6 +201,12 @@ module Solargraph
|
|
200
201
|
end
|
201
202
|
result += @api_map.namespaces_in('')
|
202
203
|
result += @api_map.get_instance_methods('Kernel')
|
204
|
+
unless @filename.nil? or @api_map.yardoc_has_file?(@filename)
|
205
|
+
m = @code.match(/# +@bind \[([a-z0-9_:]*)/i)
|
206
|
+
unless m.nil?
|
207
|
+
@api_map.get_instance_methods(m[1])
|
208
|
+
end
|
209
|
+
end
|
203
210
|
end
|
204
211
|
result = reduce_starting_with(result, word_at(index)) if filtered
|
205
212
|
result.uniq{|s| s.path}
|
@@ -67,7 +67,9 @@ module Solargraph
|
|
67
67
|
if @yard_options.nil?
|
68
68
|
@yard_options = {
|
69
69
|
include: [],
|
70
|
-
exclude: []
|
70
|
+
exclude: [],
|
71
|
+
flags: [],
|
72
|
+
all: []
|
71
73
|
}
|
72
74
|
unless workspace.nil?
|
73
75
|
yardopts_file = File.join(workspace, '.yardopts')
|
@@ -75,7 +77,10 @@ module Solargraph
|
|
75
77
|
yardopts = File.read(yardopts_file)
|
76
78
|
yardopts.lines.each { |line|
|
77
79
|
arg = line.strip
|
78
|
-
|
80
|
+
@yard_options[:all].push arg
|
81
|
+
if arg.start_with?('-')
|
82
|
+
@yard_options[:flags].push arg
|
83
|
+
else
|
79
84
|
@yard_options[:include].push arg
|
80
85
|
end
|
81
86
|
}
|
data/lib/solargraph/server.rb
CHANGED
data/lib/solargraph/version.rb
CHANGED
data/lib/solargraph/yard_map.rb
CHANGED
@@ -11,6 +11,8 @@ module Solargraph
|
|
11
11
|
unless workspace.nil?
|
12
12
|
wsy = File.join(workspace, '.yardoc')
|
13
13
|
yardocs.push wsy if File.exist?(wsy)
|
14
|
+
#wsy = Dir[File.join workspace, '**/*.rb']
|
15
|
+
#yardocs.push(wsy)
|
14
16
|
end
|
15
17
|
used = []
|
16
18
|
required.each { |r|
|
@@ -41,10 +43,18 @@ module Solargraph
|
|
41
43
|
@yardocs ||= []
|
42
44
|
end
|
43
45
|
|
46
|
+
def load_yardoc y
|
47
|
+
if y.kind_of?(Array)
|
48
|
+
YARD::Registry.load y, true
|
49
|
+
else
|
50
|
+
YARD::Registry.load! y
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
44
54
|
def search query
|
45
55
|
found = []
|
46
56
|
yardocs.each { |y|
|
47
|
-
yard =
|
57
|
+
yard = load_yardoc(y)
|
48
58
|
unless yard.nil?
|
49
59
|
yard.paths.each { |p|
|
50
60
|
found.push p if p.downcase.include?(query.downcase)
|
@@ -57,7 +67,7 @@ module Solargraph
|
|
57
67
|
def document query
|
58
68
|
found = []
|
59
69
|
yardocs.each { |y|
|
60
|
-
yard =
|
70
|
+
yard = load_yardoc(y)
|
61
71
|
unless yard.nil?
|
62
72
|
obj = yard.at query
|
63
73
|
found.push obj unless obj.nil?
|
@@ -73,8 +83,19 @@ module Solargraph
|
|
73
83
|
consts = []
|
74
84
|
result = []
|
75
85
|
yardocs.each { |y|
|
76
|
-
yard =
|
86
|
+
yard = load_yardoc(y)
|
77
87
|
unless yard.nil?
|
88
|
+
if namespace == '' and scope == ''
|
89
|
+
# Check for a bind tag in the yardoc root. If it exists, treat
|
90
|
+
# workspace code as a DSL that uses public instance methods in the
|
91
|
+
# specified namespaces.
|
92
|
+
b = yard.root.tag(:bind)
|
93
|
+
unless b.nil?
|
94
|
+
b.types.each { |t|
|
95
|
+
consts += get_instance_methods(t, '', visibility: :public)
|
96
|
+
}
|
97
|
+
end
|
98
|
+
end
|
78
99
|
ns = nil
|
79
100
|
if scope == ''
|
80
101
|
ns = yard.at(namespace)
|
@@ -102,7 +123,7 @@ module Solargraph
|
|
102
123
|
|
103
124
|
def at signature
|
104
125
|
yardocs.each { |y|
|
105
|
-
yard =
|
126
|
+
yard = load_yardoc(y)
|
106
127
|
unless yard.nil?
|
107
128
|
obj = yard.at(signature)
|
108
129
|
return obj unless obj.nil?
|
@@ -113,7 +134,7 @@ module Solargraph
|
|
113
134
|
|
114
135
|
def resolve signature, scope
|
115
136
|
yardocs.each { |y|
|
116
|
-
yard =
|
137
|
+
yard = load_yardoc(y)
|
117
138
|
unless yard.nil?
|
118
139
|
obj = yard.resolve(P(scope), signature)
|
119
140
|
return obj unless obj.nil?
|
@@ -128,7 +149,7 @@ module Solargraph
|
|
128
149
|
return cached unless cached.nil?
|
129
150
|
meths = []
|
130
151
|
yardocs.each { |y|
|
131
|
-
yard =
|
152
|
+
yard = load_yardoc(y)
|
132
153
|
unless yard.nil?
|
133
154
|
ns = nil
|
134
155
|
ns = find_first_resolved_namespace(yard, namespace, scope)
|
@@ -160,7 +181,7 @@ module Solargraph
|
|
160
181
|
return cached unless cached.nil?
|
161
182
|
meths = []
|
162
183
|
yardocs.each { |y|
|
163
|
-
yard =
|
184
|
+
yard = load_yardoc(y)
|
164
185
|
unless yard.nil?
|
165
186
|
ns = nil
|
166
187
|
ns = find_first_resolved_namespace(yard, namespace, scope)
|
@@ -190,7 +211,7 @@ module Solargraph
|
|
190
211
|
|
191
212
|
def find_fully_qualified_namespace namespace, scope
|
192
213
|
yardocs.each { |y|
|
193
|
-
yard =
|
214
|
+
yard = load_yardoc(y)
|
194
215
|
unless yard.nil?
|
195
216
|
obj = find_first_resolved_namespace(yard, namespace, scope)
|
196
217
|
return obj.path unless obj.nil? or !obj.kind_of?(YARD::CodeObjects::NamespaceObject)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'yard'
|
2
|
+
require 'yard/handlers/ruby/base'
|
3
|
+
|
4
|
+
class YardHandlerExtension < YARD::Handlers::Ruby::HandlesExtension
|
5
|
+
def matches? node
|
6
|
+
if node.docstring and node.docstring.include?(name)
|
7
|
+
true
|
8
|
+
else
|
9
|
+
false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class MyHandler < YARD::Handlers::Ruby::CommentHandler
|
15
|
+
handles YardHandlerExtension.new("@bind")
|
16
|
+
|
17
|
+
process do
|
18
|
+
if owner.type == :root
|
19
|
+
d = YARD::Docstring.new(statement.docstring)
|
20
|
+
owner.add_tag d.tag(:bind)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Define a @type tag to be used for documenting variables
|
26
|
+
YARD::Tags::Library.define_tag("Type", :type, :with_types_and_name)
|
27
|
+
YARD::Tags::Library.define_tag("Bind", :bind, :with_types)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solargraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- lib/solargraph/views/search.erb
|
151
151
|
- lib/solargraph/yard_map.rb
|
152
152
|
- lib/solargraph/yard_map/cache.rb
|
153
|
+
- lib/yard-solargraph.rb
|
153
154
|
- yardoc/2.0.0.tar.gz
|
154
155
|
homepage: http://castwide.com
|
155
156
|
licenses:
|