gitlab-rdoc 6.3.2
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 +7 -0
- data/CONTRIBUTING.rdoc +220 -0
- data/CVE-2013-0256.rdoc +49 -0
- data/ExampleMarkdown.md +37 -0
- data/ExampleRDoc.rdoc +208 -0
- data/Gemfile +12 -0
- data/History.rdoc +1666 -0
- data/LEGAL.rdoc +50 -0
- data/LICENSE.rdoc +57 -0
- data/README.rdoc +133 -0
- data/RI.rdoc +57 -0
- data/Rakefile +101 -0
- data/TODO.rdoc +59 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/exe/rdoc +44 -0
- data/exe/ri +12 -0
- data/lib/rdoc/alias.rb +112 -0
- data/lib/rdoc/anon_class.rb +11 -0
- data/lib/rdoc/any_method.rb +361 -0
- data/lib/rdoc/attr.rb +176 -0
- data/lib/rdoc/class_module.rb +802 -0
- data/lib/rdoc/code_object.rb +421 -0
- data/lib/rdoc/code_objects.rb +6 -0
- data/lib/rdoc/comment.rb +250 -0
- data/lib/rdoc/constant.rb +187 -0
- data/lib/rdoc/context/section.rb +232 -0
- data/lib/rdoc/context.rb +1266 -0
- data/lib/rdoc/cross_reference.rb +202 -0
- data/lib/rdoc/encoding.rb +136 -0
- data/lib/rdoc/erb_partial.rb +19 -0
- data/lib/rdoc/erbio.rb +42 -0
- data/lib/rdoc/extend.rb +10 -0
- data/lib/rdoc/generator/darkfish.rb +790 -0
- data/lib/rdoc/generator/json_index.rb +300 -0
- data/lib/rdoc/generator/markup.rb +160 -0
- data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
- data/lib/rdoc/generator/pot/po.rb +84 -0
- data/lib/rdoc/generator/pot/po_entry.rb +141 -0
- data/lib/rdoc/generator/pot.rb +98 -0
- data/lib/rdoc/generator/ri.rb +31 -0
- data/lib/rdoc/generator/template/darkfish/.document +0 -0
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
- data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bug.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif +0 -0
- data/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +22 -0
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +84 -0
- data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
- data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
- data/lib/rdoc/generator/template/json_index/.document +1 -0
- data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
- data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
- data/lib/rdoc/generator.rb +51 -0
- data/lib/rdoc/ghost_method.rb +7 -0
- data/lib/rdoc/i18n/locale.rb +102 -0
- data/lib/rdoc/i18n/text.rb +126 -0
- data/lib/rdoc/i18n.rb +10 -0
- data/lib/rdoc/include.rb +10 -0
- data/lib/rdoc/known_classes.rb +73 -0
- data/lib/rdoc/markdown/entities.rb +2132 -0
- data/lib/rdoc/markdown/literals.kpeg +23 -0
- data/lib/rdoc/markdown/literals.rb +417 -0
- data/lib/rdoc/markdown.kpeg +1237 -0
- data/lib/rdoc/markdown.rb +16685 -0
- data/lib/rdoc/markup/attr_changer.rb +23 -0
- data/lib/rdoc/markup/attr_span.rb +36 -0
- data/lib/rdoc/markup/attribute_manager.rb +409 -0
- data/lib/rdoc/markup/attributes.rb +71 -0
- data/lib/rdoc/markup/blank_line.rb +28 -0
- data/lib/rdoc/markup/block_quote.rb +15 -0
- data/lib/rdoc/markup/document.rb +165 -0
- data/lib/rdoc/markup/formatter.rb +266 -0
- data/lib/rdoc/markup/hard_break.rb +32 -0
- data/lib/rdoc/markup/heading.rb +79 -0
- data/lib/rdoc/markup/include.rb +43 -0
- data/lib/rdoc/markup/indented_paragraph.rb +48 -0
- data/lib/rdoc/markup/list.rb +102 -0
- data/lib/rdoc/markup/list_item.rb +100 -0
- data/lib/rdoc/markup/paragraph.rb +29 -0
- data/lib/rdoc/markup/parser.rb +575 -0
- data/lib/rdoc/markup/pre_process.rb +296 -0
- data/lib/rdoc/markup/raw.rb +70 -0
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +21 -0
- data/lib/rdoc/markup/table.rb +47 -0
- data/lib/rdoc/markup/to_ansi.rb +94 -0
- data/lib/rdoc/markup/to_bs.rb +77 -0
- data/lib/rdoc/markup/to_html.rb +444 -0
- data/lib/rdoc/markup/to_html_crossref.rb +176 -0
- data/lib/rdoc/markup/to_html_snippet.rb +285 -0
- data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
- data/lib/rdoc/markup/to_label.rb +75 -0
- data/lib/rdoc/markup/to_markdown.rb +192 -0
- data/lib/rdoc/markup/to_rdoc.rb +362 -0
- data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
- data/lib/rdoc/markup/to_test.rb +70 -0
- data/lib/rdoc/markup/to_tt_only.rb +121 -0
- data/lib/rdoc/markup/verbatim.rb +84 -0
- data/lib/rdoc/markup.rb +867 -0
- data/lib/rdoc/meta_method.rb +7 -0
- data/lib/rdoc/method_attr.rb +419 -0
- data/lib/rdoc/mixin.rb +121 -0
- data/lib/rdoc/normal_class.rb +93 -0
- data/lib/rdoc/normal_module.rb +74 -0
- data/lib/rdoc/options.rb +1285 -0
- data/lib/rdoc/parser/c.rb +1225 -0
- data/lib/rdoc/parser/changelog.rb +335 -0
- data/lib/rdoc/parser/markdown.rb +24 -0
- data/lib/rdoc/parser/rd.rb +23 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
- data/lib/rdoc/parser/ruby.rb +2327 -0
- data/lib/rdoc/parser/ruby_tools.rb +167 -0
- data/lib/rdoc/parser/simple.rb +61 -0
- data/lib/rdoc/parser/text.rb +12 -0
- data/lib/rdoc/parser.rb +277 -0
- data/lib/rdoc/rd/block_parser.rb +1056 -0
- data/lib/rdoc/rd/block_parser.ry +639 -0
- data/lib/rdoc/rd/inline.rb +72 -0
- data/lib/rdoc/rd/inline_parser.rb +1208 -0
- data/lib/rdoc/rd/inline_parser.ry +593 -0
- data/lib/rdoc/rd.rb +100 -0
- data/lib/rdoc/rdoc.rb +579 -0
- data/lib/rdoc/require.rb +52 -0
- data/lib/rdoc/ri/driver.rb +1572 -0
- data/lib/rdoc/ri/formatter.rb +6 -0
- data/lib/rdoc/ri/paths.rb +171 -0
- data/lib/rdoc/ri/store.rb +7 -0
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +21 -0
- data/lib/rdoc/rubygems_hook.rb +246 -0
- data/lib/rdoc/servlet.rb +451 -0
- data/lib/rdoc/single_class.rb +26 -0
- data/lib/rdoc/stats/normal.rb +58 -0
- data/lib/rdoc/stats/quiet.rb +60 -0
- data/lib/rdoc/stats/verbose.rb +46 -0
- data/lib/rdoc/stats.rb +462 -0
- data/lib/rdoc/store.rb +979 -0
- data/lib/rdoc/task.rb +329 -0
- data/lib/rdoc/text.rb +304 -0
- data/lib/rdoc/token_stream.rb +119 -0
- data/lib/rdoc/tom_doc.rb +263 -0
- data/lib/rdoc/top_level.rb +289 -0
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +201 -0
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +249 -0
- metadata +279 -0
data/bin/console
ADDED
data/bin/setup
ADDED
data/exe/rdoc
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# RDoc: Documentation tool for source code
|
|
4
|
+
# (see lib/rdoc/rdoc.rb for more information)
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2003 Dave Thomas
|
|
7
|
+
# Released under the same terms as Ruby
|
|
8
|
+
|
|
9
|
+
begin
|
|
10
|
+
gem 'rdoc'
|
|
11
|
+
rescue NameError => e # --disable-gems
|
|
12
|
+
raise unless e.name == :gem
|
|
13
|
+
rescue Gem::LoadError
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
require 'rdoc/rdoc'
|
|
17
|
+
|
|
18
|
+
begin
|
|
19
|
+
r = RDoc::RDoc.new
|
|
20
|
+
r.document ARGV
|
|
21
|
+
rescue Errno::ENOSPC
|
|
22
|
+
$stderr.puts 'Ran out of space creating documentation'
|
|
23
|
+
$stderr.puts
|
|
24
|
+
$stderr.puts 'Please free up some space and try again'
|
|
25
|
+
rescue SystemExit
|
|
26
|
+
raise
|
|
27
|
+
rescue Exception => e
|
|
28
|
+
if $DEBUG_RDOC then
|
|
29
|
+
$stderr.puts e.message
|
|
30
|
+
$stderr.puts "#{e.backtrace.join "\n\t"}"
|
|
31
|
+
$stderr.puts
|
|
32
|
+
elsif Interrupt === e then
|
|
33
|
+
$stderr.puts
|
|
34
|
+
$stderr.puts 'Interrupted'
|
|
35
|
+
else
|
|
36
|
+
$stderr.puts "uh-oh! RDoc had a problem:"
|
|
37
|
+
$stderr.puts e.message
|
|
38
|
+
$stderr.puts
|
|
39
|
+
$stderr.puts "run with --debug for full backtrace"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
exit 1
|
|
43
|
+
end
|
|
44
|
+
|
data/exe/ri
ADDED
data/lib/rdoc/alias.rb
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
##
|
|
3
|
+
# Represent an alias, which is an old_name/new_name pair associated with a
|
|
4
|
+
# particular context
|
|
5
|
+
#--
|
|
6
|
+
# TODO implement Alias as a proxy to a method/attribute, inheriting from
|
|
7
|
+
# MethodAttr
|
|
8
|
+
|
|
9
|
+
class RDoc::Alias < RDoc::CodeObject
|
|
10
|
+
|
|
11
|
+
##
|
|
12
|
+
# Aliased method's name
|
|
13
|
+
|
|
14
|
+
attr_reader :new_name
|
|
15
|
+
|
|
16
|
+
alias name new_name
|
|
17
|
+
|
|
18
|
+
##
|
|
19
|
+
# Aliasee method's name
|
|
20
|
+
|
|
21
|
+
attr_reader :old_name
|
|
22
|
+
|
|
23
|
+
##
|
|
24
|
+
# Is this an alias declared in a singleton context?
|
|
25
|
+
|
|
26
|
+
attr_accessor :singleton
|
|
27
|
+
|
|
28
|
+
##
|
|
29
|
+
# Source file token stream
|
|
30
|
+
|
|
31
|
+
attr_reader :text
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# Creates a new Alias with a token stream of +text+ that aliases +old_name+
|
|
35
|
+
# to +new_name+, has +comment+ and is a +singleton+ context.
|
|
36
|
+
|
|
37
|
+
def initialize(text, old_name, new_name, comment, singleton = false)
|
|
38
|
+
super()
|
|
39
|
+
|
|
40
|
+
@text = text
|
|
41
|
+
@singleton = singleton
|
|
42
|
+
@old_name = old_name
|
|
43
|
+
@new_name = new_name
|
|
44
|
+
self.comment = comment
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
##
|
|
48
|
+
# Order by #singleton then #new_name
|
|
49
|
+
|
|
50
|
+
def <=>(other)
|
|
51
|
+
[@singleton ? 0 : 1, new_name] <=> [other.singleton ? 0 : 1, other.new_name]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
##
|
|
55
|
+
# HTML fragment reference for this alias
|
|
56
|
+
|
|
57
|
+
def aref
|
|
58
|
+
type = singleton ? 'c' : 'i'
|
|
59
|
+
"#alias-#{type}-#{html_name}"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
##
|
|
63
|
+
# Full old name including namespace
|
|
64
|
+
|
|
65
|
+
def full_old_name
|
|
66
|
+
@full_name || "#{parent.name}#{pretty_old_name}"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
##
|
|
70
|
+
# HTML id-friendly version of +#new_name+.
|
|
71
|
+
|
|
72
|
+
def html_name
|
|
73
|
+
CGI.escape(@new_name.gsub('-', '-2D')).gsub('%','-').sub(/^-/, '')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def inspect # :nodoc:
|
|
77
|
+
parent_name = parent ? parent.name : '(unknown)'
|
|
78
|
+
"#<%s:0x%x %s.alias_method %s, %s>" % [
|
|
79
|
+
self.class, object_id,
|
|
80
|
+
parent_name, @old_name, @new_name,
|
|
81
|
+
]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
##
|
|
85
|
+
# '::' for the alias of a singleton method/attribute, '#' for instance-level.
|
|
86
|
+
|
|
87
|
+
def name_prefix
|
|
88
|
+
singleton ? '::' : '#'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
##
|
|
92
|
+
# Old name with prefix '::' or '#'.
|
|
93
|
+
|
|
94
|
+
def pretty_old_name
|
|
95
|
+
"#{singleton ? '::' : '#'}#{@old_name}"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
##
|
|
99
|
+
# New name with prefix '::' or '#'.
|
|
100
|
+
|
|
101
|
+
def pretty_new_name
|
|
102
|
+
"#{singleton ? '::' : '#'}#{@new_name}"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
alias pretty_name pretty_new_name
|
|
106
|
+
|
|
107
|
+
def to_s # :nodoc:
|
|
108
|
+
"alias: #{self.new_name} -> #{self.pretty_old_name} in: #{parent}"
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
##
|
|
3
|
+
# AnyMethod is the base class for objects representing methods
|
|
4
|
+
|
|
5
|
+
class RDoc::AnyMethod < RDoc::MethodAttr
|
|
6
|
+
|
|
7
|
+
##
|
|
8
|
+
# 2::
|
|
9
|
+
# RDoc 4
|
|
10
|
+
# Added calls_super
|
|
11
|
+
# Added parent name and class
|
|
12
|
+
# Added section title
|
|
13
|
+
# 3::
|
|
14
|
+
# RDoc 4.1
|
|
15
|
+
# Added is_alias_for
|
|
16
|
+
|
|
17
|
+
MARSHAL_VERSION = 3 # :nodoc:
|
|
18
|
+
|
|
19
|
+
##
|
|
20
|
+
# Don't rename \#initialize to \::new
|
|
21
|
+
|
|
22
|
+
attr_accessor :dont_rename_initialize
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# The C function that implements this method (if it was defined in a C file)
|
|
26
|
+
|
|
27
|
+
attr_accessor :c_function
|
|
28
|
+
|
|
29
|
+
# Parameters for this method
|
|
30
|
+
|
|
31
|
+
attr_accessor :params
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# If true this method uses +super+ to call a superclass version
|
|
35
|
+
|
|
36
|
+
attr_accessor :calls_super
|
|
37
|
+
|
|
38
|
+
include RDoc::TokenStream
|
|
39
|
+
|
|
40
|
+
##
|
|
41
|
+
# Creates a new AnyMethod with a token stream +text+ and +name+
|
|
42
|
+
|
|
43
|
+
def initialize text, name
|
|
44
|
+
super
|
|
45
|
+
|
|
46
|
+
@c_function = nil
|
|
47
|
+
@dont_rename_initialize = false
|
|
48
|
+
@token_stream = nil
|
|
49
|
+
@calls_super = false
|
|
50
|
+
@superclass_method = nil
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
# Adds +an_alias+ as an alias for this method in +context+.
|
|
55
|
+
|
|
56
|
+
def add_alias an_alias, context = nil
|
|
57
|
+
method = self.class.new an_alias.text, an_alias.new_name
|
|
58
|
+
|
|
59
|
+
method.record_location an_alias.file
|
|
60
|
+
method.singleton = self.singleton
|
|
61
|
+
method.params = self.params
|
|
62
|
+
method.visibility = self.visibility
|
|
63
|
+
method.comment = an_alias.comment
|
|
64
|
+
method.is_alias_for = self
|
|
65
|
+
@aliases << method
|
|
66
|
+
context.add_method method if context
|
|
67
|
+
method
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
##
|
|
71
|
+
# Prefix for +aref+ is 'method'.
|
|
72
|
+
|
|
73
|
+
def aref_prefix
|
|
74
|
+
'method'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
##
|
|
78
|
+
# The call_seq or the param_seq with method name, if there is no call_seq.
|
|
79
|
+
#
|
|
80
|
+
# Use this for displaying a method's argument lists.
|
|
81
|
+
|
|
82
|
+
def arglists
|
|
83
|
+
if @call_seq then
|
|
84
|
+
@call_seq
|
|
85
|
+
elsif @params then
|
|
86
|
+
"#{name}#{param_seq}"
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
##
|
|
91
|
+
# Different ways to call this method
|
|
92
|
+
|
|
93
|
+
def call_seq
|
|
94
|
+
unless call_seq = _call_seq
|
|
95
|
+
call_seq = is_alias_for._call_seq if is_alias_for
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
return unless call_seq
|
|
99
|
+
|
|
100
|
+
deduplicate_call_seq(call_seq)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
##
|
|
104
|
+
# Sets the different ways you can call this method. If an empty +call_seq+
|
|
105
|
+
# is given nil is assumed.
|
|
106
|
+
#
|
|
107
|
+
# See also #param_seq
|
|
108
|
+
|
|
109
|
+
def call_seq= call_seq
|
|
110
|
+
return if call_seq.empty?
|
|
111
|
+
|
|
112
|
+
@call_seq = call_seq
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
##
|
|
116
|
+
# Loads is_alias_for from the internal name. Returns nil if the alias
|
|
117
|
+
# cannot be found.
|
|
118
|
+
|
|
119
|
+
def is_alias_for # :nodoc:
|
|
120
|
+
case @is_alias_for
|
|
121
|
+
when RDoc::MethodAttr then
|
|
122
|
+
@is_alias_for
|
|
123
|
+
when Array then
|
|
124
|
+
return nil unless @store
|
|
125
|
+
|
|
126
|
+
klass_name, singleton, method_name = @is_alias_for
|
|
127
|
+
|
|
128
|
+
return nil unless klass = @store.find_class_or_module(klass_name)
|
|
129
|
+
|
|
130
|
+
@is_alias_for = klass.find_method method_name, singleton
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
##
|
|
135
|
+
# Dumps this AnyMethod for use by ri. See also #marshal_load
|
|
136
|
+
|
|
137
|
+
def marshal_dump
|
|
138
|
+
aliases = @aliases.map do |a|
|
|
139
|
+
[a.name, parse(a.comment)]
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
is_alias_for = [
|
|
143
|
+
@is_alias_for.parent.full_name,
|
|
144
|
+
@is_alias_for.singleton,
|
|
145
|
+
@is_alias_for.name
|
|
146
|
+
] if @is_alias_for
|
|
147
|
+
|
|
148
|
+
[ MARSHAL_VERSION,
|
|
149
|
+
@name,
|
|
150
|
+
full_name,
|
|
151
|
+
@singleton,
|
|
152
|
+
@visibility,
|
|
153
|
+
parse(@comment),
|
|
154
|
+
@call_seq,
|
|
155
|
+
@block_params,
|
|
156
|
+
aliases,
|
|
157
|
+
@params,
|
|
158
|
+
@file.relative_name,
|
|
159
|
+
@calls_super,
|
|
160
|
+
@parent.name,
|
|
161
|
+
@parent.class,
|
|
162
|
+
@section.title,
|
|
163
|
+
is_alias_for,
|
|
164
|
+
]
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
##
|
|
168
|
+
# Loads this AnyMethod from +array+. For a loaded AnyMethod the following
|
|
169
|
+
# methods will return cached values:
|
|
170
|
+
#
|
|
171
|
+
# * #full_name
|
|
172
|
+
# * #parent_name
|
|
173
|
+
|
|
174
|
+
def marshal_load array
|
|
175
|
+
initialize_visibility
|
|
176
|
+
|
|
177
|
+
@dont_rename_initialize = nil
|
|
178
|
+
@token_stream = nil
|
|
179
|
+
@aliases = []
|
|
180
|
+
@parent = nil
|
|
181
|
+
@parent_name = nil
|
|
182
|
+
@parent_class = nil
|
|
183
|
+
@section = nil
|
|
184
|
+
@file = nil
|
|
185
|
+
|
|
186
|
+
version = array[0]
|
|
187
|
+
@name = array[1]
|
|
188
|
+
@full_name = array[2]
|
|
189
|
+
@singleton = array[3]
|
|
190
|
+
@visibility = array[4]
|
|
191
|
+
@comment = array[5]
|
|
192
|
+
@call_seq = array[6]
|
|
193
|
+
@block_params = array[7]
|
|
194
|
+
# 8 handled below
|
|
195
|
+
@params = array[9]
|
|
196
|
+
# 10 handled below
|
|
197
|
+
@calls_super = array[11]
|
|
198
|
+
@parent_name = array[12]
|
|
199
|
+
@parent_title = array[13]
|
|
200
|
+
@section_title = array[14]
|
|
201
|
+
@is_alias_for = array[15]
|
|
202
|
+
|
|
203
|
+
array[8].each do |new_name, comment|
|
|
204
|
+
add_alias RDoc::Alias.new(nil, @name, new_name, comment, @singleton)
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
@parent_name ||= if @full_name =~ /#/ then
|
|
208
|
+
$`
|
|
209
|
+
else
|
|
210
|
+
name = @full_name.split('::')
|
|
211
|
+
name.pop
|
|
212
|
+
name.join '::'
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
@file = RDoc::TopLevel.new array[10] if version > 0
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
##
|
|
219
|
+
# Method name
|
|
220
|
+
#
|
|
221
|
+
# If the method has no assigned name, it extracts it from #call_seq.
|
|
222
|
+
|
|
223
|
+
def name
|
|
224
|
+
return @name if @name
|
|
225
|
+
|
|
226
|
+
@name =
|
|
227
|
+
@call_seq[/^.*?\.(\w+)/, 1] ||
|
|
228
|
+
@call_seq[/^.*?(\w+)/, 1] ||
|
|
229
|
+
@call_seq if @call_seq
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
##
|
|
233
|
+
# A list of this method's method and yield parameters. +call-seq+ params
|
|
234
|
+
# are preferred over parsed method and block params.
|
|
235
|
+
|
|
236
|
+
def param_list
|
|
237
|
+
if @call_seq then
|
|
238
|
+
params = @call_seq.split("\n").last
|
|
239
|
+
params = params.sub(/.*?\((.*)\)/, '\1')
|
|
240
|
+
params = params.sub(/(\{|do)\s*\|([^|]*)\|.*/, ',\2')
|
|
241
|
+
elsif @params then
|
|
242
|
+
params = @params.sub(/\((.*)\)/, '\1')
|
|
243
|
+
|
|
244
|
+
params << ",#{@block_params}" if @block_params
|
|
245
|
+
elsif @block_params then
|
|
246
|
+
params = @block_params
|
|
247
|
+
else
|
|
248
|
+
return []
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
if @block_params then
|
|
252
|
+
# If this method has explicit block parameters, remove any explicit
|
|
253
|
+
# &block
|
|
254
|
+
params = params.sub(/,?\s*&\w+/, '')
|
|
255
|
+
else
|
|
256
|
+
params = params.sub(/\&(\w+)/, '\1')
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
params = params.gsub(/\s+/, '').split(',').reject(&:empty?)
|
|
260
|
+
|
|
261
|
+
params.map { |param| param.sub(/=.*/, '') }
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
##
|
|
265
|
+
# Pretty parameter list for this method. If the method's parameters were
|
|
266
|
+
# given by +call-seq+ it is preferred over the parsed values.
|
|
267
|
+
|
|
268
|
+
def param_seq
|
|
269
|
+
if @call_seq then
|
|
270
|
+
params = @call_seq.split("\n").last
|
|
271
|
+
params = params.sub(/[^( ]+/, '')
|
|
272
|
+
params = params.sub(/(\|[^|]+\|)\s*\.\.\.\s*(end|\})/, '\1 \2')
|
|
273
|
+
elsif @params then
|
|
274
|
+
params = @params.gsub(/\s*\#.*/, '')
|
|
275
|
+
params = params.tr_s("\n ", " ")
|
|
276
|
+
params = "(#{params})" unless params[0] == ?(
|
|
277
|
+
else
|
|
278
|
+
params = ''
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
if @block_params then
|
|
282
|
+
# If this method has explicit block parameters, remove any explicit
|
|
283
|
+
# &block
|
|
284
|
+
params = params.sub(/,?\s*&\w+/, '')
|
|
285
|
+
|
|
286
|
+
block = @block_params.tr_s("\n ", " ")
|
|
287
|
+
if block[0] == ?(
|
|
288
|
+
block = block.sub(/^\(/, '').sub(/\)/, '')
|
|
289
|
+
end
|
|
290
|
+
params << " { |#{block}| ... }"
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
params
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
##
|
|
297
|
+
# Sets the store for this method and its referenced code objects.
|
|
298
|
+
|
|
299
|
+
def store= store
|
|
300
|
+
super
|
|
301
|
+
|
|
302
|
+
@file = @store.add_file @file.full_name if @file
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
##
|
|
306
|
+
# For methods that +super+, find the superclass method that would be called.
|
|
307
|
+
|
|
308
|
+
def superclass_method
|
|
309
|
+
return unless @calls_super
|
|
310
|
+
return @superclass_method if @superclass_method
|
|
311
|
+
|
|
312
|
+
parent.each_ancestor do |ancestor|
|
|
313
|
+
if method = ancestor.method_list.find { |m| m.name == @name } then
|
|
314
|
+
@superclass_method = method
|
|
315
|
+
break
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
@superclass_method
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
protected
|
|
323
|
+
|
|
324
|
+
##
|
|
325
|
+
# call_seq without deduplication and alias lookup.
|
|
326
|
+
|
|
327
|
+
def _call_seq
|
|
328
|
+
@call_seq if defined?(@call_seq) && @call_seq
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
private
|
|
332
|
+
|
|
333
|
+
##
|
|
334
|
+
# call_seq with alias examples information removed, if this
|
|
335
|
+
# method is an alias method.
|
|
336
|
+
|
|
337
|
+
def deduplicate_call_seq(call_seq)
|
|
338
|
+
return call_seq unless is_alias_for || !aliases.empty?
|
|
339
|
+
|
|
340
|
+
method_name = self.name
|
|
341
|
+
method_name = method_name[0, 1] if method_name =~ /\A\[/
|
|
342
|
+
|
|
343
|
+
entries = call_seq.split "\n"
|
|
344
|
+
|
|
345
|
+
ignore = aliases.map(&:name)
|
|
346
|
+
if is_alias_for
|
|
347
|
+
ignore << is_alias_for.name
|
|
348
|
+
ignore.concat is_alias_for.aliases.map(&:name)
|
|
349
|
+
end
|
|
350
|
+
ignore.map! { |n| n =~ /\A\[/ ? n[0, 1] : n}
|
|
351
|
+
ignore.delete(method_name)
|
|
352
|
+
ignore = Regexp.union(ignore)
|
|
353
|
+
|
|
354
|
+
matching = entries.reject do |entry|
|
|
355
|
+
entry =~ /^\w*\.?#{ignore}/ or
|
|
356
|
+
entry =~ /\s#{ignore}\s/
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
matching.join "\n"
|
|
360
|
+
end
|
|
361
|
+
end
|