rdoc 3.1 → 6.3.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- 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 +129 -0
- data/RI.rdoc +57 -0
- data/Rakefile +84 -81
- data/TODO.rdoc +59 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/{bin → exe}/rdoc +11 -2
- data/exe/ri +12 -0
- data/lib/rdoc/alias.rb +1 -2
- data/lib/rdoc/anon_class.rb +3 -2
- data/lib/rdoc/any_method.rb +234 -40
- data/lib/rdoc/attr.rb +79 -11
- data/lib/rdoc/class_module.rb +443 -71
- data/lib/rdoc/code_object.rb +216 -20
- data/lib/rdoc/code_objects.rb +4 -21
- data/lib/rdoc/comment.rb +250 -0
- data/lib/rdoc/constant.rb +110 -9
- data/lib/rdoc/context/section.rb +232 -0
- data/lib/rdoc/context.rb +392 -172
- data/lib/rdoc/cross_reference.rb +202 -0
- data/lib/rdoc/encoding.rb +83 -28
- data/lib/rdoc/erb_partial.rb +19 -0
- data/lib/rdoc/erbio.rb +8 -3
- data/lib/rdoc/extend.rb +10 -0
- data/lib/rdoc/generator/darkfish.rb +507 -84
- data/lib/rdoc/generator/json_index.rb +300 -0
- data/lib/rdoc/generator/markup.rb +27 -74
- 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 +8 -62
- 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/delete.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
- 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 +24 -13
- data/lib/rdoc/ghost_method.rb +1 -2
- 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 +5 -95
- data/lib/rdoc/known_classes.rb +5 -2
- data/lib/rdoc/markdown/entities.rb +2132 -0
- data/lib/rdoc/markdown/literals.kpeg +23 -0
- data/lib/rdoc/markdown/literals.rb +416 -0
- data/lib/rdoc/markdown.kpeg +1237 -0
- data/lib/rdoc/markdown.rb +16684 -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 +135 -62
- data/lib/rdoc/markup/attributes.rb +71 -0
- data/lib/rdoc/markup/blank_line.rb +1 -0
- data/lib/rdoc/markup/block_quote.rb +15 -0
- data/lib/rdoc/markup/document.rb +96 -9
- data/lib/rdoc/markup/formatter.rb +138 -25
- data/lib/rdoc/markup/hard_break.rb +32 -0
- data/lib/rdoc/markup/heading.rb +61 -2
- data/lib/rdoc/markup/include.rb +43 -0
- data/lib/rdoc/markup/indented_paragraph.rb +48 -0
- data/lib/rdoc/markup/list.rb +25 -4
- data/lib/rdoc/markup/list_item.rb +18 -4
- data/lib/rdoc/markup/paragraph.rb +15 -0
- data/lib/rdoc/markup/parser.rb +180 -88
- data/lib/rdoc/markup/pre_process.rb +183 -38
- data/lib/rdoc/markup/raw.rb +6 -5
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +1 -0
- data/lib/rdoc/markup/table.rb +47 -0
- data/lib/rdoc/markup/to_ansi.rb +17 -7
- data/lib/rdoc/markup/to_bs.rb +5 -8
- data/lib/rdoc/markup/to_html.rb +238 -137
- data/lib/rdoc/markup/to_html_crossref.rb +125 -152
- 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 +85 -15
- data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
- data/lib/rdoc/markup/to_test.rb +2 -4
- data/lib/rdoc/markup/to_tt_only.rb +121 -0
- data/lib/rdoc/markup/verbatim.rb +39 -0
- data/lib/rdoc/markup.rb +388 -110
- data/lib/rdoc/meta_method.rb +1 -2
- data/lib/rdoc/method_attr.rb +87 -21
- data/lib/rdoc/mixin.rb +121 -0
- data/lib/rdoc/normal_class.rb +39 -10
- data/lib/rdoc/normal_module.rb +22 -7
- data/lib/rdoc/options.rb +613 -73
- data/lib/rdoc/parser/c.rb +621 -287
- 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 +1368 -762
- data/lib/rdoc/parser/ruby_tools.rb +42 -35
- data/lib/rdoc/parser/simple.rb +23 -11
- data/lib/rdoc/parser/text.rb +12 -0
- data/lib/rdoc/parser.rb +162 -89
- 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 +208 -115
- data/lib/rdoc/require.rb +1 -2
- data/lib/rdoc/ri/driver.rb +734 -239
- data/lib/rdoc/ri/formatter.rb +1 -0
- data/lib/rdoc/ri/paths.rb +91 -48
- data/lib/rdoc/ri/store.rb +3 -261
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +5 -2
- data/lib/rdoc/rubygems_hook.rb +246 -0
- data/lib/rdoc/servlet.rb +451 -0
- data/lib/rdoc/single_class.rb +14 -2
- data/lib/rdoc/stats/normal.rb +19 -12
- data/lib/rdoc/stats/quiet.rb +1 -0
- data/lib/rdoc/stats/verbose.rb +1 -0
- data/lib/rdoc/stats.rb +262 -104
- data/lib/rdoc/store.rb +979 -0
- data/lib/rdoc/task.rb +84 -44
- data/lib/rdoc/text.rb +117 -72
- data/lib/rdoc/token_stream.rb +73 -4
- data/lib/rdoc/tom_doc.rb +263 -0
- data/lib/rdoc/top_level.rb +111 -261
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +127 -64
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +249 -0
- metadata +171 -291
- data/.autotest +0 -16
- data/.document +0 -5
- data/History.txt +0 -594
- data/LICENSE.txt +0 -57
- data/Manifest.txt +0 -158
- data/README.txt +0 -45
- data/RI.txt +0 -58
- data/bin/ri +0 -5
- data/lib/rdoc/gauntlet.rb +0 -52
- data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
- data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
- data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
- data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
- data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
- data/lib/rdoc/markup/formatter_test_case.rb +0 -689
- data/lib/rdoc/markup/inline.rb +0 -137
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
- data/lib/rdoc/ruby_lex.rb +0 -1291
- data/lib/rdoc/ruby_token.rb +0 -416
- data/test/README +0 -1
- data/test/binary.dat +0 -0
- data/test/hidden.zip.txt +0 -1
- data/test/test.ja.rdoc +0 -10
- data/test/test.ja.txt +0 -8
- data/test/test.txt +0 -1
- data/test/test_attribute_manager.rb +0 -120
- data/test/test_rdoc_alias.rb +0 -13
- data/test/test_rdoc_any_method.rb +0 -126
- data/test/test_rdoc_attr.rb +0 -61
- data/test/test_rdoc_class_module.rb +0 -233
- data/test/test_rdoc_code_object.rb +0 -165
- data/test/test_rdoc_constant.rb +0 -15
- data/test/test_rdoc_context.rb +0 -370
- data/test/test_rdoc_encoding.rb +0 -166
- data/test/test_rdoc_generator_darkfish.rb +0 -119
- data/test/test_rdoc_generator_ri.rb +0 -76
- data/test/test_rdoc_include.rb +0 -96
- data/test/test_rdoc_markup.rb +0 -37
- data/test/test_rdoc_markup_attribute_manager.rb +0 -240
- data/test/test_rdoc_markup_document.rb +0 -51
- data/test/test_rdoc_markup_paragraph.rb +0 -9
- data/test/test_rdoc_markup_parser.rb +0 -1395
- data/test/test_rdoc_markup_pre_process.rb +0 -185
- data/test/test_rdoc_markup_raw.rb +0 -27
- data/test/test_rdoc_markup_to_ansi.rb +0 -328
- data/test/test_rdoc_markup_to_bs.rb +0 -341
- data/test/test_rdoc_markup_to_html.rb +0 -335
- data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
- data/test/test_rdoc_markup_to_rdoc.rb +0 -327
- data/test/test_rdoc_method_attr.rb +0 -122
- data/test/test_rdoc_normal_class.rb +0 -17
- data/test/test_rdoc_normal_module.rb +0 -31
- data/test/test_rdoc_options.rb +0 -342
- data/test/test_rdoc_parser.rb +0 -83
- data/test/test_rdoc_parser_c.rb +0 -912
- data/test/test_rdoc_parser_ruby.rb +0 -1754
- data/test/test_rdoc_parser_simple.rb +0 -99
- data/test/test_rdoc_rdoc.rb +0 -164
- data/test/test_rdoc_require.rb +0 -25
- data/test/test_rdoc_ri_driver.rb +0 -846
- data/test/test_rdoc_ri_paths.rb +0 -43
- data/test/test_rdoc_ri_store.rb +0 -352
- data/test/test_rdoc_ruby_lex.rb +0 -23
- data/test/test_rdoc_stats.rb +0 -38
- data/test/test_rdoc_task.rb +0 -92
- data/test/test_rdoc_text.rb +0 -251
- data/test/test_rdoc_top_level.rb +0 -120
- data/test/xref_data.rb +0 -62
- data/test/xref_test_case.rb +0 -61
- data.tar.gz.sig +0 -3
- metadata.gz.sig +0 -0
data/lib/rdoc/ri/formatter.rb
CHANGED
data/lib/rdoc/ri/paths.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '../rdoc'
|
2
3
|
|
3
4
|
##
|
4
|
-
# The directories where ri data lives.
|
5
|
+
# The directories where ri data lives. Paths can be enumerated via ::each, or
|
6
|
+
# queried individually via ::system_dir, ::site_dir, ::home_dir and ::gem_dir.
|
5
7
|
|
6
8
|
module RDoc::RI::Paths
|
7
9
|
|
@@ -10,30 +12,11 @@ module RDoc::RI::Paths
|
|
10
12
|
|
11
13
|
version = RbConfig::CONFIG['ruby_version']
|
12
14
|
|
13
|
-
|
14
|
-
File.join RbConfig::CONFIG['ridir'], version
|
15
|
-
else
|
16
|
-
File.join RbConfig::CONFIG['datadir'], 'ri', version
|
17
|
-
end
|
15
|
+
BASE = File.join RbConfig::CONFIG['ridir'], version
|
18
16
|
|
19
|
-
|
20
|
-
SITEDIR = File.join base, "site"
|
21
|
-
|
22
|
-
homedir = begin
|
23
|
-
File.expand_path('~')
|
24
|
-
rescue ArgumentError
|
25
|
-
end
|
26
|
-
|
27
|
-
homedir ||= ENV['HOME'] ||
|
28
|
-
ENV['USERPROFILE'] || ENV['HOMEPATH'] # for 1.8 compatibility
|
29
|
-
|
30
|
-
HOMEDIR = if homedir then
|
31
|
-
File.join homedir, ".rdoc"
|
32
|
-
end
|
17
|
+
HOMEDIR = RDoc.home
|
33
18
|
#:startdoc:
|
34
19
|
|
35
|
-
@gemdirs = nil
|
36
|
-
|
37
20
|
##
|
38
21
|
# Iterates over each selected path yielding the directory and type.
|
39
22
|
#
|
@@ -47,16 +30,19 @@ module RDoc::RI::Paths
|
|
47
30
|
# :extra:: ri data directory from the command line. Yielded for each
|
48
31
|
# entry in +extra_dirs+
|
49
32
|
|
50
|
-
def self.each system, site, home, gems, *extra_dirs # :yields: directory, type
|
33
|
+
def self.each system = true, site = true, home = true, gems = :latest, *extra_dirs # :yields: directory, type
|
34
|
+
return enum_for __method__, system, site, home, gems, *extra_dirs unless
|
35
|
+
block_given?
|
36
|
+
|
51
37
|
extra_dirs.each do |dir|
|
52
38
|
yield dir, :extra
|
53
39
|
end
|
54
40
|
|
55
|
-
yield
|
56
|
-
yield
|
57
|
-
yield
|
41
|
+
yield system_dir, :system if system
|
42
|
+
yield site_dir, :site if site
|
43
|
+
yield home_dir, :home if home and HOMEDIR
|
58
44
|
|
59
|
-
gemdirs.each do |dir|
|
45
|
+
gemdirs(gems).each do |dir|
|
60
46
|
yield dir, :gem
|
61
47
|
end if gems
|
62
48
|
|
@@ -64,36 +50,70 @@ module RDoc::RI::Paths
|
|
64
50
|
end
|
65
51
|
|
66
52
|
##
|
67
|
-
# The
|
53
|
+
# The ri directory for the gem with +gem_name+.
|
68
54
|
|
69
|
-
def self.
|
70
|
-
|
55
|
+
def self.gem_dir name, version
|
56
|
+
req = Gem::Requirement.new "= #{version}"
|
71
57
|
|
72
|
-
|
58
|
+
spec = Gem::Specification.find_by_name name, req
|
73
59
|
|
74
|
-
|
75
|
-
|
60
|
+
File.join spec.doc_dir, 'ri'
|
61
|
+
end
|
76
62
|
|
77
|
-
|
78
|
-
|
79
|
-
|
63
|
+
##
|
64
|
+
# The latest installed gems' ri directories. +filter+ can be :all or
|
65
|
+
# :latest.
|
66
|
+
#
|
67
|
+
# A +filter+ :all includes all versions of gems and includes gems without
|
68
|
+
# ri documentation.
|
80
69
|
|
70
|
+
def self.gemdirs filter = :latest
|
81
71
|
ri_paths = {}
|
82
72
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
73
|
+
all = Gem::Specification.map do |spec|
|
74
|
+
[File.join(spec.doc_dir, 'ri'), spec.name, spec.version]
|
75
|
+
end
|
76
|
+
|
77
|
+
if filter == :all then
|
78
|
+
gemdirs = []
|
79
|
+
|
80
|
+
all.group_by do |_, name, _|
|
81
|
+
name
|
82
|
+
end.sort_by do |group, _|
|
83
|
+
group
|
84
|
+
end.map do |group, items|
|
85
|
+
items.sort_by do |_, _, version|
|
86
|
+
version
|
87
|
+
end.reverse_each do |dir,|
|
88
|
+
gemdirs << dir
|
90
89
|
end
|
91
90
|
end
|
91
|
+
|
92
|
+
return gemdirs
|
93
|
+
end
|
94
|
+
|
95
|
+
all.each do |dir, name, ver|
|
96
|
+
next unless File.exist? dir
|
97
|
+
|
98
|
+
if ri_paths[name].nil? or ver > ri_paths[name].first then
|
99
|
+
ri_paths[name] = [ver, name, dir]
|
100
|
+
end
|
92
101
|
end
|
93
102
|
|
94
|
-
|
103
|
+
ri_paths.sort_by { |_, (_, name, _)| name }.map { |k, v| v.last }
|
95
104
|
rescue LoadError
|
96
|
-
|
105
|
+
[]
|
106
|
+
end
|
107
|
+
|
108
|
+
##
|
109
|
+
# The location of the rdoc data in the user's home directory.
|
110
|
+
#
|
111
|
+
# Like ::system, ri data in the user's home directory is rare and predates
|
112
|
+
# libraries distributed via RubyGems. ri data is rarely generated into this
|
113
|
+
# directory.
|
114
|
+
|
115
|
+
def self.home_dir
|
116
|
+
HOMEDIR
|
97
117
|
end
|
98
118
|
|
99
119
|
##
|
@@ -102,7 +122,7 @@ module RDoc::RI::Paths
|
|
102
122
|
#
|
103
123
|
# See also ::each
|
104
124
|
|
105
|
-
def self.path(system, site, home, gems, *extra_dirs)
|
125
|
+
def self.path(system = true, site = true, home = true, gems = :latest, *extra_dirs)
|
106
126
|
path = raw_path system, site, home, gems, *extra_dirs
|
107
127
|
|
108
128
|
path.select { |directory| File.directory? directory }
|
@@ -124,5 +144,28 @@ module RDoc::RI::Paths
|
|
124
144
|
path.compact
|
125
145
|
end
|
126
146
|
|
127
|
-
|
147
|
+
##
|
148
|
+
# The location of ri data installed into the site dir.
|
149
|
+
#
|
150
|
+
# Historically this was available for documentation installed by Ruby
|
151
|
+
# libraries predating RubyGems. It is unlikely to contain any content for
|
152
|
+
# modern Ruby installations.
|
128
153
|
|
154
|
+
def self.site_dir
|
155
|
+
File.join BASE, 'site'
|
156
|
+
end
|
157
|
+
|
158
|
+
##
|
159
|
+
# The location of the built-in ri data.
|
160
|
+
#
|
161
|
+
# This data is built automatically when `make` is run when Ruby is
|
162
|
+
# installed. If you did not install Ruby by hand you may need to install
|
163
|
+
# the documentation yourself. Please consult the documentation for your
|
164
|
+
# package manager or Ruby installer for details. You can also use the
|
165
|
+
# rdoc-data gem to install system ri data for common versions of Ruby.
|
166
|
+
|
167
|
+
def self.system_dir
|
168
|
+
File.join BASE, 'system'
|
169
|
+
end
|
170
|
+
|
171
|
+
end
|
data/lib/rdoc/ri/store.rb
CHANGED
@@ -1,265 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module RDoc::RI
|
3
3
|
|
4
|
-
|
5
|
-
# A set of ri data.
|
6
|
-
#
|
7
|
-
# The store manages reading and writing ri data for a project (gem, path,
|
8
|
-
# etc.) and maintains a cache of methods, classes and ancestors in the
|
9
|
-
# store.
|
10
|
-
|
11
|
-
class RDoc::RI::Store
|
12
|
-
|
13
|
-
##
|
14
|
-
# If true this Store will not write any files
|
15
|
-
|
16
|
-
attr_accessor :dry_run
|
17
|
-
|
18
|
-
##
|
19
|
-
# Path this store reads or writes
|
20
|
-
|
21
|
-
attr_accessor :path
|
22
|
-
|
23
|
-
##
|
24
|
-
# Type of ri datastore this was loaded from. See RDoc::RI::Driver,
|
25
|
-
# RDoc::RI::Paths.
|
26
|
-
|
27
|
-
attr_accessor :type
|
28
|
-
|
29
|
-
##
|
30
|
-
# The contents of the Store
|
31
|
-
|
32
|
-
attr_reader :cache
|
33
|
-
|
34
|
-
##
|
35
|
-
# Creates a new Store of +type+ that will load or save to +path+
|
36
|
-
|
37
|
-
def initialize path, type = nil
|
38
|
-
@dry_run = false
|
39
|
-
@type = type
|
40
|
-
@path = path
|
41
|
-
|
42
|
-
@cache = {
|
43
|
-
:class_methods => {},
|
44
|
-
:instance_methods => {},
|
45
|
-
:attributes => {},
|
46
|
-
:modules => [],
|
47
|
-
:ancestors => {},
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
##
|
52
|
-
# Ancestors cache accessor. Maps a klass name to an Array of its ancestors
|
53
|
-
# in this store. If Foo in this store inherits from Object, Kernel won't be
|
54
|
-
# listed (it will be included from ruby's ri store).
|
55
|
-
|
56
|
-
def ancestors
|
57
|
-
@cache[:ancestors]
|
58
|
-
end
|
59
|
-
|
60
|
-
##
|
61
|
-
# Attributes cache accessor. Maps a class to an Array of its attributes.
|
62
|
-
|
63
|
-
def attributes
|
64
|
-
@cache[:attributes]
|
65
|
-
end
|
66
|
-
|
67
|
-
##
|
68
|
-
# Path to the cache file
|
69
|
-
|
70
|
-
def cache_path
|
71
|
-
File.join @path, 'cache.ri'
|
72
|
-
end
|
73
|
-
|
74
|
-
##
|
75
|
-
# Path to the ri data for +klass_name+
|
76
|
-
|
77
|
-
def class_file klass_name
|
78
|
-
name = klass_name.split('::').last
|
79
|
-
File.join class_path(klass_name), "cdesc-#{name}.ri"
|
80
|
-
end
|
81
|
-
|
82
|
-
##
|
83
|
-
# Class methods cache accessor. Maps a class to an Array of its class
|
84
|
-
# methods (not full name).
|
85
|
-
|
86
|
-
def class_methods
|
87
|
-
@cache[:class_methods]
|
88
|
-
end
|
89
|
-
|
90
|
-
##
|
91
|
-
# Path where data for +klass_name+ will be stored (methods or class data)
|
92
|
-
|
93
|
-
def class_path klass_name
|
94
|
-
File.join @path, *klass_name.split('::')
|
95
|
-
end
|
96
|
-
|
97
|
-
##
|
98
|
-
# Friendly rendition of #path
|
99
|
-
|
100
|
-
def friendly_path
|
101
|
-
case type
|
102
|
-
when :gem then
|
103
|
-
sep = Regexp.union(*['/', File::ALT_SEPARATOR].compact)
|
104
|
-
@path =~ /#{sep}doc#{sep}(.*?)#{sep}ri$/
|
105
|
-
"gem #{$1}"
|
106
|
-
when :home then '~/.ri'
|
107
|
-
when :site then 'ruby site'
|
108
|
-
when :system then 'ruby core'
|
109
|
-
else @path
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def inspect # :nodoc:
|
114
|
-
"#<%s:0x%x %s %p>" % [self.class, object_id, @path, modules.sort]
|
115
|
-
end
|
116
|
-
|
117
|
-
##
|
118
|
-
# Instance methods cache accessor. Maps a class to an Array of its
|
119
|
-
# instance methods (not full name).
|
120
|
-
|
121
|
-
def instance_methods
|
122
|
-
@cache[:instance_methods]
|
123
|
-
end
|
124
|
-
|
125
|
-
##
|
126
|
-
# Loads cache file for this store
|
127
|
-
|
128
|
-
def load_cache
|
129
|
-
open cache_path, 'rb' do |io|
|
130
|
-
@cache = Marshal.load io.read
|
131
|
-
end
|
132
|
-
rescue Errno::ENOENT
|
133
|
-
end
|
134
|
-
|
135
|
-
##
|
136
|
-
# Loads ri data for +klass_name+
|
137
|
-
|
138
|
-
def load_class klass_name
|
139
|
-
open class_file(klass_name), 'rb' do |io|
|
140
|
-
Marshal.load io.read
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
##
|
145
|
-
# Loads ri data for +method_name+ in +klass_name+
|
146
|
-
|
147
|
-
def load_method klass_name, method_name
|
148
|
-
open method_file(klass_name, method_name), 'rb' do |io|
|
149
|
-
Marshal.load io.read
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
##
|
154
|
-
# Path to the ri data for +method_name+ in +klass_name+
|
155
|
-
|
156
|
-
def method_file klass_name, method_name
|
157
|
-
method_name = method_name.split('::').last
|
158
|
-
method_name =~ /#(.*)/
|
159
|
-
method_type = $1 ? 'i' : 'c'
|
160
|
-
method_name = $1 if $1
|
161
|
-
|
162
|
-
method_name = if ''.respond_to? :ord then
|
163
|
-
method_name.gsub(/\W/) { "%%%02x" % $&[0].ord }
|
164
|
-
else
|
165
|
-
method_name.gsub(/\W/) { "%%%02x" % $&[0] }
|
166
|
-
end
|
167
|
-
|
168
|
-
File.join class_path(klass_name), "#{method_name}-#{method_type}.ri"
|
169
|
-
end
|
170
|
-
|
171
|
-
##
|
172
|
-
# Modules cache accessor. An Array of all the modules (and classes) in the
|
173
|
-
# store.
|
174
|
-
|
175
|
-
def modules
|
176
|
-
@cache[:modules]
|
177
|
-
end
|
178
|
-
|
179
|
-
##
|
180
|
-
# Writes the cache file for this store
|
181
|
-
|
182
|
-
def save_cache
|
183
|
-
# HACK mongrel-1.1.5 documents its files twice
|
184
|
-
@cache[:ancestors]. each do |_, m| m.uniq!; m.sort! end
|
185
|
-
@cache[:attributes]. each do |_, m| m.uniq!; m.sort! end
|
186
|
-
@cache[:class_methods]. each do |_, m| m.uniq!; m.sort! end
|
187
|
-
@cache[:instance_methods].each do |_, m| m.uniq!; m.sort! end
|
188
|
-
@cache[:modules].uniq!; @cache[:modules].sort!
|
189
|
-
|
190
|
-
return if @dry_run
|
191
|
-
|
192
|
-
open cache_path, 'wb' do |io|
|
193
|
-
Marshal.dump @cache, io
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
##
|
198
|
-
# Writes the ri data for +klass+
|
199
|
-
|
200
|
-
def save_class klass
|
201
|
-
FileUtils.mkdir_p class_path(klass.full_name) unless @dry_run
|
202
|
-
|
203
|
-
@cache[:modules] << klass.full_name
|
204
|
-
|
205
|
-
path = class_file klass.full_name
|
206
|
-
|
207
|
-
begin
|
208
|
-
disk_klass = nil
|
209
|
-
|
210
|
-
open path, 'rb' do |io|
|
211
|
-
disk_klass = Marshal.load io.read
|
212
|
-
end
|
213
|
-
|
214
|
-
klass.merge disk_klass
|
215
|
-
rescue Errno::ENOENT
|
216
|
-
end
|
217
|
-
|
218
|
-
# BasicObject has no ancestors
|
219
|
-
ancestors = klass.ancestors.compact.map do |ancestor|
|
220
|
-
# HACK for classes we don't know about (class X < RuntimeError)
|
221
|
-
String === ancestor ? ancestor : ancestor.full_name
|
222
|
-
end
|
223
|
-
|
224
|
-
@cache[:ancestors][klass.full_name] ||= []
|
225
|
-
@cache[:ancestors][klass.full_name].push(*ancestors)
|
226
|
-
|
227
|
-
attributes = klass.attributes.map do |attribute|
|
228
|
-
"#{attribute.definition} #{attribute.name}"
|
229
|
-
end
|
230
|
-
|
231
|
-
unless attributes.empty? then
|
232
|
-
@cache[:attributes][klass.full_name] ||= []
|
233
|
-
@cache[:attributes][klass.full_name].push(*attributes)
|
234
|
-
end
|
235
|
-
|
236
|
-
return if @dry_run
|
237
|
-
|
238
|
-
open path, 'wb' do |io|
|
239
|
-
Marshal.dump klass, io
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
##
|
244
|
-
# Writes the ri data for +method+ on +klass+
|
245
|
-
|
246
|
-
def save_method klass, method
|
247
|
-
FileUtils.mkdir_p class_path(klass.full_name) unless @dry_run
|
248
|
-
|
249
|
-
cache = if method.singleton then
|
250
|
-
@cache[:class_methods]
|
251
|
-
else
|
252
|
-
@cache[:instance_methods]
|
253
|
-
end
|
254
|
-
cache[klass.full_name] ||= []
|
255
|
-
cache[klass.full_name] << method.name
|
256
|
-
|
257
|
-
return if @dry_run
|
258
|
-
|
259
|
-
open method_file(klass.full_name, method.full_name), 'wb' do |io|
|
260
|
-
Marshal.dump method, io
|
261
|
-
end
|
262
|
-
end
|
4
|
+
Store = RDoc::Store # :nodoc:
|
263
5
|
|
264
6
|
end
|
265
7
|
|
data/lib/rdoc/ri/task.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
begin
|
3
|
+
gem 'rdoc'
|
4
|
+
rescue Gem::LoadError
|
5
|
+
end unless defined?(RDoc)
|
6
|
+
|
7
|
+
require_relative '../task'
|
8
|
+
|
9
|
+
##
|
10
|
+
# RDoc::RI::Task creates ri data in <code>./.rdoc</code> for your project.
|
11
|
+
#
|
12
|
+
# It contains the following tasks:
|
13
|
+
#
|
14
|
+
# [ri]
|
15
|
+
# Build ri data
|
16
|
+
#
|
17
|
+
# [clobber_ri]
|
18
|
+
# Delete ri data files. This target is automatically added to the main
|
19
|
+
# clobber target.
|
20
|
+
#
|
21
|
+
# [reri]
|
22
|
+
# Rebuild the ri data from scratch even if they are not out of date.
|
23
|
+
#
|
24
|
+
# Simple example:
|
25
|
+
#
|
26
|
+
# require 'rdoc/ri/task'
|
27
|
+
#
|
28
|
+
# RDoc::RI::Task.new do |ri|
|
29
|
+
# ri.main = 'README.rdoc'
|
30
|
+
# ri.rdoc_files.include 'README.rdoc', 'lib/**/*.rb'
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# For further configuration details see RDoc::Task.
|
34
|
+
|
35
|
+
class RDoc::RI::Task < RDoc::Task
|
36
|
+
|
37
|
+
DEFAULT_NAMES = { # :nodoc:
|
38
|
+
:clobber_rdoc => :clobber_ri,
|
39
|
+
:rdoc => :ri,
|
40
|
+
:rerdoc => :reri,
|
41
|
+
}
|
42
|
+
|
43
|
+
##
|
44
|
+
# Create an ri task with the given name. See RDoc::Task for documentation on
|
45
|
+
# setting names.
|
46
|
+
|
47
|
+
def initialize name = DEFAULT_NAMES # :yield: self
|
48
|
+
super
|
49
|
+
end
|
50
|
+
|
51
|
+
def clobber_task_description # :nodoc:
|
52
|
+
"Remove RI data files"
|
53
|
+
end
|
54
|
+
|
55
|
+
##
|
56
|
+
# Sets default task values
|
57
|
+
|
58
|
+
def defaults
|
59
|
+
super
|
60
|
+
|
61
|
+
@rdoc_dir = '.rdoc'
|
62
|
+
end
|
63
|
+
|
64
|
+
def rdoc_task_description # :nodoc:
|
65
|
+
'Build RI data files'
|
66
|
+
end
|
67
|
+
|
68
|
+
def rerdoc_task_description # :nodoc:
|
69
|
+
'Rebuild RI data files'
|
70
|
+
end
|
71
|
+
end
|
data/lib/rdoc/ri.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'rdoc'
|
2
3
|
|
3
4
|
##
|
@@ -12,7 +13,9 @@ module RDoc::RI
|
|
12
13
|
|
13
14
|
class Error < RDoc::Error; end
|
14
15
|
|
15
|
-
|
16
|
+
autoload :Driver, 'rdoc/ri/driver'
|
17
|
+
autoload :Paths, 'rdoc/ri/paths'
|
18
|
+
autoload :Store, 'rdoc/ri/store'
|
16
19
|
|
17
|
-
|
20
|
+
end
|
18
21
|
|