gitlab-rdoc 6.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|