yard 0.8.3 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- data/ChangeLog +197 -38
- data/LICENSE +1 -1
- data/README.md +15 -4
- data/docs/GettingStarted.md +6 -6
- data/docs/WhatsNew.md +5 -0
- data/docs/images/code-objects-class-diagram.png +0 -0
- data/docs/images/handlers-class-diagram.png +0 -0
- data/docs/images/overview-class-diagram.png +0 -0
- data/docs/images/parser-class-diagram.png +0 -0
- data/docs/images/tags-class-diagram.png +0 -0
- data/lib/yard/autoload.rb +2 -0
- data/lib/yard/cli/graph.rb +3 -2
- data/lib/yard/cli/server.rb +3 -0
- data/lib/yard/cli/yardoc.rb +1 -0
- data/lib/yard/code_objects/base.rb +60 -30
- data/lib/yard/code_objects/extra_file_object.rb +1 -1
- data/lib/yard/code_objects/proxy.rb +1 -0
- data/lib/yard/docstring.rb +36 -2
- data/lib/yard/docstring_parser.rb +25 -2
- data/lib/yard/handlers/base.rb +18 -2
- data/lib/yard/handlers/c/handler_methods.rb +1 -1
- data/lib/yard/handlers/processor.rb +3 -0
- data/lib/yard/handlers/ruby/class_handler.rb +1 -2
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +7 -1
- data/lib/yard/handlers/ruby/exception_handler.rb +2 -2
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +4 -3
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +2 -2
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +4 -4
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +4 -4
- data/lib/yard/handlers/ruby/method_handler.rb +6 -6
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +4 -4
- data/lib/yard/handlers/ruby/yield_handler.rb +4 -4
- data/lib/yard/i18n/locale.rb +16 -0
- data/lib/yard/parser/ruby/legacy/statement_list.rb +3 -0
- data/lib/yard/parser/ruby/ruby_parser.rb +9 -4
- data/lib/yard/rubygems/doc_manager.rb +16 -7
- data/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
- data/lib/yard/tags/directives.rb +3 -2
- data/lib/yard/tags/overload_tag.rb +1 -1
- data/lib/yard/templates/helpers/html_helper.rb +5 -2
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +3 -3
- data/lib/yard/version.rb +1 -1
- data/spec/cli/server_spec.rb +18 -0
- data/spec/code_objects/base_spec.rb +32 -1
- data/spec/handlers/base_spec.rb +9 -0
- data/spec/handlers/dsl_handler_spec.rb +12 -1
- data/spec/handlers/examples/dsl_handler_001.rb.txt +16 -1
- data/spec/handlers/examples/visibility_handler_001.rb.txt +5 -0
- data/spec/handlers/method_handler_spec.rb +3 -3
- data/spec/handlers/processor_spec.rb +12 -1
- data/spec/handlers/visibility_handler_spec.rb +5 -0
- data/spec/parser/ruby/ruby_parser_spec.rb +13 -0
- data/spec/parser/source_parser_spec.rb +38 -1
- data/spec/server/doc_server_helper_spec.rb +2 -0
- data/spec/tags/directives_spec.rb +8 -1
- data/spec/tags/overload_tag_spec.rb +1 -1
- data/spec/templates/helpers/html_helper_spec.rb +25 -5
- data/templates/default/class/setup.rb +1 -1
- data/templates/default/module/html/box_info.erb +1 -1
- data/templates/default/tags/html/example.erb +1 -1
- data/templates/default/tags/setup.rb +1 -1
- data/templates/guide/fulldoc/html/css/style.css +12 -5
- data/templates/guide/layout/html/layout.erb +4 -4
- metadata +3 -3
data/lib/yard/handlers/base.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
module YARD
|
2
2
|
module Handlers
|
3
|
+
# Raise this error when a handler should exit before completing.
|
4
|
+
# The exception will be silenced, allowing the next handler(s) in the
|
5
|
+
# queue to be executed.
|
6
|
+
# @since 0.8.4
|
7
|
+
class HandlerAborted < ::RuntimeError; end
|
8
|
+
|
3
9
|
# Raised during processing phase when a handler needs to perform
|
4
10
|
# an operation on an object's namespace but the namespace could
|
5
11
|
# not be resolved.
|
@@ -340,6 +346,15 @@ module YARD
|
|
340
346
|
def globals; parser.globals end
|
341
347
|
def extra_state; parser.extra_state end
|
342
348
|
|
349
|
+
# Aborts a handler by raising {Handlers::HandlerAborted}.
|
350
|
+
# An exception will only be logged in debugging mode for
|
351
|
+
# this kind of handler exit.
|
352
|
+
#
|
353
|
+
# @since 0.8.4
|
354
|
+
def abort!
|
355
|
+
raise Handlers::HandlerAborted
|
356
|
+
end
|
357
|
+
|
343
358
|
# Executes a given block with specific state values for {#owner},
|
344
359
|
# {#namespace} and {#scope}.
|
345
360
|
#
|
@@ -473,7 +488,7 @@ module YARD
|
|
473
488
|
next if object.namespace.is_a?(Proxy)
|
474
489
|
next unless object.namespace.has_tag?(tag)
|
475
490
|
next if object.has_tag?(tag)
|
476
|
-
object.
|
491
|
+
object.add_tag(*object.namespace.tags(tag))
|
477
492
|
end
|
478
493
|
end
|
479
494
|
|
@@ -494,6 +509,7 @@ module YARD
|
|
494
509
|
# @since 0.8.0
|
495
510
|
def register_visibility(object, visibility = self.visibility)
|
496
511
|
return unless object.respond_to?(:visibility=)
|
512
|
+
return if object.is_a?(NamespaceObject)
|
497
513
|
object.visibility = visibility
|
498
514
|
end
|
499
515
|
|
@@ -578,4 +594,4 @@ module YARD
|
|
578
594
|
end
|
579
595
|
end
|
580
596
|
end
|
581
|
-
end
|
597
|
+
end
|
@@ -45,7 +45,7 @@ module YARD
|
|
45
45
|
register MethodObject.new(namespace, name, scope) do |obj|
|
46
46
|
register_visibility(obj, visibility)
|
47
47
|
find_method_body(obj, func_name)
|
48
|
-
obj.
|
48
|
+
obj.add_tag(Tags::Tag.new(:return, '', 'Boolean')) if name =~ /\?$/
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -112,6 +112,9 @@ module YARD
|
|
112
112
|
find_handlers(stmt).each do |handler|
|
113
113
|
begin
|
114
114
|
handler.new(self, stmt).process
|
115
|
+
rescue HandlerAborted => abort
|
116
|
+
log.debug "#{handler.to_s} cancelled from #{caller.last}"
|
117
|
+
log.debug "\tin file '#{file}':#{stmt.line}:\n\n" + stmt.show + "\n"
|
115
118
|
rescue NamespaceMissingError => missingerr
|
116
119
|
log.warn "The #{missingerr.object.type} #{missingerr.object.path} has not yet been recognized."
|
117
120
|
log.warn "If this class/method is part of your source tree, this will affect your documentation results."
|
@@ -5,8 +5,8 @@ class YARD::Handlers::Ruby::ClassHandler < YARD::Handlers::Ruby::Base
|
|
5
5
|
namespace_only
|
6
6
|
|
7
7
|
process do
|
8
|
+
classname = statement[0].source.gsub(/\s/, '')
|
8
9
|
if statement.type == :class
|
9
|
-
classname = statement[0].source
|
10
10
|
superclass = parse_superclass(statement[1])
|
11
11
|
if superclass == "Struct"
|
12
12
|
is_a_struct = true
|
@@ -32,7 +32,6 @@ class YARD::Handlers::Ruby::ClassHandler < YARD::Handlers::Ruby::Base
|
|
32
32
|
if statement[0] == s(:var_ref, s(:kw, "self"))
|
33
33
|
parse_block(statement[1], :namespace => namespace, :scope => :class)
|
34
34
|
else
|
35
|
-
classname = statement[0].source
|
36
35
|
proxy = Proxy.new(namespace, classname)
|
37
36
|
|
38
37
|
# Allow constants to reference class names
|
@@ -14,6 +14,12 @@ module YARD
|
|
14
14
|
|
15
15
|
@docstring = statement.comments || ""
|
16
16
|
@docstring = @docstring.join("\n") if @docstring.is_a?(Array)
|
17
|
+
|
18
|
+
if @docstring =~ /^@!?macro\s+\[[^\]]*attach/
|
19
|
+
register_docstring(nil)
|
20
|
+
@docstring = ""
|
21
|
+
end
|
22
|
+
|
17
23
|
if macro = find_attached_macro
|
18
24
|
@docstring += "\n" +
|
19
25
|
macro.expand([caller_method, *call_params], statement.source)
|
@@ -59,7 +65,7 @@ module YARD
|
|
59
65
|
Registry.all(:macro).each do |macro|
|
60
66
|
next unless macro.method_object
|
61
67
|
next unless macro.method_object.name.to_s == caller_method.to_s
|
62
|
-
(namespace.inheritance_tree + [P('Object')]).each do |obj|
|
68
|
+
(namespace.inheritance_tree(true) + [P('Object')]).each do |obj|
|
63
69
|
return macro if obj == macro.method_object.namespace
|
64
70
|
end
|
65
71
|
end
|
@@ -9,12 +9,13 @@ class YARD::Handlers::Ruby::Legacy::ClassHandler < YARD::Handlers::Ruby::Legacy:
|
|
9
9
|
classname = $1
|
10
10
|
superclass_def = $2
|
11
11
|
superclass = parse_superclass($2)
|
12
|
+
classname = classname.gsub(/\s/, '')
|
12
13
|
if superclass == "Struct"
|
13
14
|
is_a_struct = true
|
14
15
|
superclass = struct_superclass_name(superclass_def)
|
15
16
|
create_struct_superclass(superclass, superclass_def)
|
16
17
|
end
|
17
|
-
undocsuper =
|
18
|
+
undocsuper = superclass_def && superclass.nil?
|
18
19
|
|
19
20
|
klass = register ClassObject.new(namespace, classname) do |o|
|
20
21
|
o.superclass = superclass if superclass
|
@@ -30,8 +31,8 @@ class YARD::Handlers::Ruby::Legacy::ClassHandler < YARD::Handlers::Ruby::Legacy:
|
|
30
31
|
if undocsuper
|
31
32
|
raise YARD::Parser::UndocumentableError, 'superclass (class was added without superclass)'
|
32
33
|
end
|
33
|
-
elsif statement.tokens.to_s =~ /^class\s*<<\s*([\w
|
34
|
-
classname = $1
|
34
|
+
elsif statement.tokens.to_s =~ /^class\s*<<\s*([\w\:\s]+)/
|
35
|
+
classname = $1.gsub(/\s/, '')
|
35
36
|
proxy = Proxy.new(namespace, classname)
|
36
37
|
|
37
38
|
# Allow constants to reference class names
|
@@ -7,6 +7,6 @@ class YARD::Handlers::Ruby::Legacy::ExceptionHandler < YARD::Handlers::Ruby::Leg
|
|
7
7
|
return if owner.has_tag?(:raise)
|
8
8
|
|
9
9
|
klass = statement.tokens.to_s[/^raise[\(\s]*(#{NAMESPACEMATCH})\s*(?:\)|,|\s(?:if|unless|until)|;|(?:(?:\.|\:\:)\s*)?new|$)/, 1]
|
10
|
-
owner.
|
10
|
+
owner.add_tag YARD::Tags::Tag.new(:raise, '', klass) if klass
|
11
11
|
end
|
12
|
-
end
|
12
|
+
end
|
@@ -38,18 +38,18 @@ class YARD::Handlers::Ruby::Legacy::MethodHandler < YARD::Handlers::Ruby::Legacy
|
|
38
38
|
|
39
39
|
if mscope == :instance && meth == "initialize"
|
40
40
|
unless obj.has_tag?(:return)
|
41
|
-
obj.
|
41
|
+
obj.add_tag(YARD::Tags::Tag.new(:return,
|
42
42
|
"a new instance of #{namespace.name}", namespace.name.to_s))
|
43
43
|
end
|
44
44
|
elsif mscope == :class && obj.docstring.blank? && %w(inherited included
|
45
45
|
extended method_added method_removed method_undefined).include?(meth)
|
46
|
-
obj.
|
46
|
+
obj.add_tag(YARD::Tags::Tag.new(:private, nil))
|
47
47
|
elsif meth.to_s =~ /\?$/
|
48
48
|
if obj.tag(:return) && (obj.tag(:return).types || []).empty?
|
49
49
|
obj.tag(:return).types = ['Boolean']
|
50
50
|
elsif obj.tag(:return).nil?
|
51
51
|
unless obj.tags(:overload).any? {|overload| overload.tag(:return) }
|
52
|
-
obj.
|
52
|
+
obj.add_tag(YARD::Tags::Tag.new(:return, "", "Boolean"))
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -60,7 +60,7 @@ class YARD::Handlers::Ruby::Legacy::MethodHandler < YARD::Handlers::Ruby::Legacy
|
|
60
60
|
expected_param = option.name
|
61
61
|
unless obj.tags(:param).find {|x| x.name == expected_param }
|
62
62
|
new_tag = YARD::Tags::Tag.new(:param, "a customizable set of options", "Hash", expected_param)
|
63
|
-
obj.
|
63
|
+
obj.add_tag(new_tag)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
@@ -12,17 +12,17 @@ class YARD::Handlers::Ruby::Legacy::YieldHandler < YARD::Handlers::Ruby::Legacy:
|
|
12
12
|
item = item.inspect unless item.is_a?(String)
|
13
13
|
if item == "self"
|
14
14
|
yieldtag.types << '_self'
|
15
|
-
owner.
|
15
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
16
16
|
"the object that the method was called on", owner.namespace.path, '_self')
|
17
17
|
elsif item == "super"
|
18
18
|
yieldtag.types << '_super'
|
19
|
-
owner.
|
19
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
20
20
|
"the result of the method from the superclass", nil, '_super')
|
21
21
|
else
|
22
22
|
yieldtag.types << item
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
owner.
|
26
|
+
owner.add_tag(yieldtag) unless yieldtag.types.empty?
|
27
27
|
end
|
28
|
-
end
|
28
|
+
end
|
@@ -29,20 +29,20 @@ class YARD::Handlers::Ruby::MethodHandler < YARD::Handlers::Ruby::Base
|
|
29
29
|
nobj.aliases.delete(aobj)
|
30
30
|
end if nobj.is_a?(NamespaceObject)
|
31
31
|
|
32
|
-
if
|
32
|
+
if obj.constructor?
|
33
33
|
unless obj.has_tag?(:return)
|
34
|
-
obj.
|
34
|
+
obj.add_tag(YARD::Tags::Tag.new(:return,
|
35
35
|
"a new instance of #{namespace.name}", namespace.name.to_s))
|
36
36
|
end
|
37
37
|
elsif mscope == :class && obj.docstring.blank? && %w(inherited included
|
38
38
|
extended method_added method_removed method_undefined).include?(meth)
|
39
|
-
obj.
|
39
|
+
obj.add_tag(YARD::Tags::Tag.new(:private, nil))
|
40
40
|
elsif meth.to_s =~ /\?$/
|
41
41
|
if obj.tag(:return) && (obj.tag(:return).types || []).empty?
|
42
42
|
obj.tag(:return).types = ['Boolean']
|
43
43
|
elsif obj.tag(:return).nil?
|
44
44
|
unless obj.tags(:overload).any? {|overload| overload.tag(:return) }
|
45
|
-
obj.
|
45
|
+
obj.add_tag(YARD::Tags::Tag.new(:return, "", "Boolean"))
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -53,7 +53,7 @@ class YARD::Handlers::Ruby::MethodHandler < YARD::Handlers::Ruby::Base
|
|
53
53
|
expected_param = option.name
|
54
54
|
unless obj.tags(:param).find {|x| x.name == expected_param }
|
55
55
|
new_tag = YARD::Tags::Tag.new(:param, "a customizable set of options", "Hash", expected_param)
|
56
|
-
obj.
|
56
|
+
obj.add_tag(new_tag)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
@@ -88,4 +88,4 @@ class YARD::Handlers::Ruby::MethodHandler < YARD::Handlers::Ruby::Base
|
|
88
88
|
"def #{method_name}"
|
89
89
|
end
|
90
90
|
end
|
91
|
-
end
|
91
|
+
end
|
@@ -63,7 +63,7 @@ module YARD::Handlers::Ruby::StructHandlerMethods
|
|
63
63
|
return_type = return_type_from_tag(member_tag)
|
64
64
|
getter_doc_text = member_tag ? member_tag.text : "Returns the value of attribute #{member}"
|
65
65
|
new_method.docstring.replace(getter_doc_text)
|
66
|
-
new_method.
|
66
|
+
new_method.add_tag YARD::Tags::Tag.new(:return, "the current value of #{member}", return_type)
|
67
67
|
end
|
68
68
|
|
69
69
|
# Creates the auto-generated docstring for the setter method of a struct's
|
@@ -78,8 +78,8 @@ module YARD::Handlers::Ruby::StructHandlerMethods
|
|
78
78
|
return_type = return_type_from_tag(member_tag)
|
79
79
|
setter_doc_text = member_tag ? member_tag.text : "Sets the attribute #{member}"
|
80
80
|
new_method.docstring.replace(setter_doc_text)
|
81
|
-
new_method.
|
82
|
-
new_method.
|
81
|
+
new_method.add_tag YARD::Tags::Tag.new(:param, "the value to set the attribute #{member} to.", return_type, "value")
|
82
|
+
new_method.add_tag YARD::Tags::Tag.new(:return, "the newly set value", return_type)
|
83
83
|
end
|
84
84
|
|
85
85
|
# Creates and registers a class object with the given name and superclass name.
|
@@ -138,4 +138,4 @@ module YARD::Handlers::Ruby::StructHandlerMethods
|
|
138
138
|
create_reader klass, member if create_member_method?(klass, member, :read)
|
139
139
|
end
|
140
140
|
end
|
141
|
-
end
|
141
|
+
end
|
@@ -13,11 +13,11 @@ class YARD::Handlers::Ruby::YieldHandler < YARD::Handlers::Ruby::Base
|
|
13
13
|
statement.jump(:list).children.each do |item|
|
14
14
|
if item == s(:var_ref, s(:kw, "self"))
|
15
15
|
yieldtag.types << '_self'
|
16
|
-
owner.
|
16
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
17
17
|
"the object that the method was called on", owner.namespace.path, '_self')
|
18
18
|
elsif item == s(:zsuper)
|
19
19
|
yieldtag.types << '_super'
|
20
|
-
owner.
|
20
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
21
21
|
"the result of the method from the superclass", nil, '_super')
|
22
22
|
else
|
23
23
|
yieldtag.types << item.source
|
@@ -25,6 +25,6 @@ class YARD::Handlers::Ruby::YieldHandler < YARD::Handlers::Ruby::Base
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
owner.
|
28
|
+
owner.add_tag(yieldtag) unless yieldtag.types.empty?
|
29
29
|
end
|
30
|
-
end
|
30
|
+
end
|
data/lib/yard/i18n/locale.rb
CHANGED
@@ -5,6 +5,22 @@ module YARD
|
|
5
5
|
#
|
6
6
|
# @since 0.8.2
|
7
7
|
class Locale
|
8
|
+
class << self
|
9
|
+
# @return [String, nil] the default locale name.
|
10
|
+
# @since 0.8.4
|
11
|
+
attr_accessor :default
|
12
|
+
|
13
|
+
undef default
|
14
|
+
def default
|
15
|
+
@@default ||= nil
|
16
|
+
end
|
17
|
+
|
18
|
+
undef default=
|
19
|
+
def default=(locale)
|
20
|
+
@@default = locale
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
8
24
|
# @return [String] the name of the locale. It used IETF language
|
9
25
|
# tag format +[language[_territory][.codeset][@modifier]]+.
|
10
26
|
# @see http://tools.ietf.org/rfc/bcp/bcp47.txt
|
@@ -301,6 +301,9 @@ module YARD
|
|
301
301
|
# Or we might be at the beginning of an argument list
|
302
302
|
(@current_block == TkDEF && tk.class == TkRPAREN))
|
303
303
|
|
304
|
+
# Continue line ending on . or ::
|
305
|
+
return if @last_tk && [EXPR_DOT].include?(@last_tk.lex_state)
|
306
|
+
|
304
307
|
# Continue a possible existing new statement unless we just finished an expression...
|
305
308
|
return unless (@last_tk && [EXPR_END, EXPR_ARG].include?(@last_tk.lex_state)) ||
|
306
309
|
# Or we've opened a block and are ready to move into the body
|
@@ -217,6 +217,11 @@ module YARD
|
|
217
217
|
lstart, sstart = *(map ? map.pop : [lineno, @ns_charno - 1])
|
218
218
|
node.source_range = Range.new(sstart, @ns_charno - 1)
|
219
219
|
node.line_range = Range.new(lstart, lineno)
|
220
|
+
if node.respond_to?(:block)
|
221
|
+
sr, lr = node.block.source_range, node.block.line_range
|
222
|
+
node.block.source_range = Range.new(sr.first, @tokens.last[2][1])
|
223
|
+
node.block.line_range = Range.new(lr.first, @tokens.last[2][0])
|
224
|
+
end
|
220
225
|
node
|
221
226
|
end
|
222
227
|
|
@@ -241,9 +246,9 @@ module YARD
|
|
241
246
|
|
242
247
|
def add_token(token, data)
|
243
248
|
if @tokens.last && @tokens.last[0] == :symbeg
|
244
|
-
@tokens[-1] = [:symbol, ":" + data]
|
249
|
+
@tokens[-1] = [:symbol, ":" + data, @tokens.last[2]]
|
245
250
|
elsif @heredoc_state == :started
|
246
|
-
@heredoc_tokens << [token, data]
|
251
|
+
@heredoc_tokens << [token, data, [lineno, charno]]
|
247
252
|
|
248
253
|
# fix ripper encoding of heredoc bug
|
249
254
|
# (see http://bugs.ruby-lang.org/issues/6200)
|
@@ -251,12 +256,12 @@ module YARD
|
|
251
256
|
|
252
257
|
@heredoc_state = :ended if token == :heredoc_end
|
253
258
|
elsif (token == :nl || token == :comment) && @heredoc_state == :ended
|
254
|
-
@heredoc_tokens.unshift([token, data])
|
259
|
+
@heredoc_tokens.unshift([token, data, [lineno, charno]])
|
255
260
|
@tokens += @heredoc_tokens
|
256
261
|
@heredoc_tokens = nil
|
257
262
|
@heredoc_state = nil
|
258
263
|
else
|
259
|
-
@tokens << [token, data]
|
264
|
+
@tokens << [token, data, [lineno, charno]]
|
260
265
|
if token == :heredoc_beg
|
261
266
|
@heredoc_state = :started
|
262
267
|
@heredoc_tokens = []
|
@@ -1,5 +1,8 @@
|
|
1
|
-
|
2
|
-
require 'rubygems/
|
1
|
+
begin
|
2
|
+
require 'rubygems/user_interaction'
|
3
|
+
require 'rubygems/doc_manager'
|
4
|
+
rescue LoadError
|
5
|
+
end
|
3
6
|
|
4
7
|
class Gem::DocManager
|
5
8
|
def self.load_yardoc
|
@@ -34,7 +37,7 @@ class Gem::DocManager
|
|
34
37
|
Dir.chdir(old_pwd)
|
35
38
|
end
|
36
39
|
|
37
|
-
undef setup_rdoc
|
40
|
+
begin undef setup_rdoc; rescue NameError; end
|
38
41
|
def setup_rdoc
|
39
42
|
if File.exist?(@doc_dir) && !File.writable?(@doc_dir) then
|
40
43
|
raise Gem::FilePermissionError.new(@doc_dir)
|
@@ -64,8 +67,11 @@ class Gem::DocManager
|
|
64
67
|
say "Building YARD (yri) index for #{@spec.full_name}..."
|
65
68
|
run_yardoc '-c', '-n'
|
66
69
|
end
|
67
|
-
|
68
|
-
|
70
|
+
|
71
|
+
begin
|
72
|
+
alias install_ri_yard_orig install_ri
|
73
|
+
alias install_ri install_ri_yard
|
74
|
+
rescue NameError; end
|
69
75
|
|
70
76
|
def install_rdoc_yard
|
71
77
|
if @spec.has_rdoc?
|
@@ -74,6 +80,9 @@ class Gem::DocManager
|
|
74
80
|
install_yardoc
|
75
81
|
end
|
76
82
|
end
|
77
|
-
|
78
|
-
|
83
|
+
|
84
|
+
begin
|
85
|
+
alias install_rdoc_yard_orig install_rdoc
|
86
|
+
alias install_rdoc install_rdoc_yard
|
87
|
+
rescue NameError; end
|
79
88
|
end
|
Binary file
|
data/lib/yard/tags/directives.rb
CHANGED
@@ -266,8 +266,9 @@ module YARD
|
|
266
266
|
end
|
267
267
|
|
268
268
|
def attach?
|
269
|
-
|
270
|
-
|
269
|
+
new? && # must have data or there is nothing to attach
|
270
|
+
class_method? || # always attach to class methods
|
271
|
+
(tag.types && tag.types.include?('attach'))
|
271
272
|
end
|
272
273
|
|
273
274
|
def class_method?
|
@@ -55,7 +55,7 @@ module YARD
|
|
55
55
|
# FIXME refactor this code to not make use of the Handlers::Base class (tokval_list should be moved)
|
56
56
|
toks = YARD::Parser::Ruby::Legacy::TokenList.new(args)
|
57
57
|
args = YARD::Handlers::Ruby::Legacy::Base.new(nil, nil).send(:tokval_list, toks, :all)
|
58
|
-
args.map! {|a| k, v = *a.split('=', 2); [k.strip.
|
58
|
+
args.map! {|a| k, v = *a.split('=', 2); [k.strip.to_s, (v ? v.strip : nil)] } if args
|
59
59
|
@name = meth.to_sym
|
60
60
|
@parameters = args
|
61
61
|
end
|
@@ -256,6 +256,8 @@ module YARD
|
|
256
256
|
# "CurrentClass.method_name"
|
257
257
|
if obj.is_a?(CodeObjects::MethodObject) && obj.scope == :class && obj.parent == object
|
258
258
|
title = h([object.name, obj.sep, obj.name].join)
|
259
|
+
elsif obj.title != obj.path
|
260
|
+
title = h(obj.title)
|
259
261
|
else
|
260
262
|
title = h(object.relative_path(obj))
|
261
263
|
end
|
@@ -266,7 +268,7 @@ module YARD
|
|
266
268
|
return title if obj.is_a?(CodeObjects::Proxy)
|
267
269
|
|
268
270
|
link = url_for(obj, anchor, relative)
|
269
|
-
link = link ? link_url(link, title, :title => h("#{obj.
|
271
|
+
link = link ? link_url(link, title, :title => h("#{obj.title} (#{obj.type})")) : title
|
270
272
|
"<span class='object_link'>" + link + "</span>"
|
271
273
|
end
|
272
274
|
|
@@ -310,6 +312,7 @@ module YARD
|
|
310
312
|
def url_for(obj, anchor = nil, relative = true)
|
311
313
|
link = nil
|
312
314
|
return link unless serializer
|
315
|
+
return link if obj.is_a?(CodeObjects::Base) && run_verifier([obj]).empty?
|
313
316
|
|
314
317
|
if obj.is_a?(CodeObjects::Base) && !obj.is_a?(CodeObjects::NamespaceObject)
|
315
318
|
# If the obj is not a namespace obj make it the anchor.
|
@@ -582,7 +585,7 @@ module YARD
|
|
582
585
|
string = html_syntax_highlight(CGI.unescapeHTML(string), language)
|
583
586
|
end
|
584
587
|
classes = ['code', language].compact.join(' ')
|
585
|
-
%Q{<pre class="#{classes}"><code>#{string}</code></pre>}
|
588
|
+
%Q{<pre class="#{classes}"><code class="#{language}">#{string}</code></pre>}
|
586
589
|
end
|
587
590
|
end
|
588
591
|
end
|