rdoc 5.1.0 → 6.13.1

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.
Files changed (179) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +5 -6
  3. data/ExampleMarkdown.md +2 -0
  4. data/ExampleRDoc.rdoc +2 -0
  5. data/History.rdoc +68 -66
  6. data/LEGAL.rdoc +1 -1
  7. data/LICENSE.rdoc +2 -0
  8. data/README.rdoc +18 -6
  9. data/RI.md +842 -0
  10. data/TODO.rdoc +8 -7
  11. data/exe/rdoc +0 -1
  12. data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -12
  13. data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +1 -2
  14. data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +83 -26
  15. data/lib/rdoc/{attr.rb → code_object/attr.rb} +5 -9
  16. data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +112 -24
  17. data/lib/rdoc/{constant.rb → code_object/constant.rb} +4 -5
  18. data/lib/rdoc/{context → code_object/context}/section.rb +13 -83
  19. data/lib/rdoc/{context.rb → code_object/context.rb} +69 -70
  20. data/lib/rdoc/{extend.rb → code_object/extend.rb} +1 -2
  21. data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +1 -2
  22. data/lib/rdoc/{include.rb → code_object/include.rb} +1 -2
  23. data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +1 -2
  24. data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +22 -31
  25. data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +1 -2
  26. data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +4 -5
  27. data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
  28. data/lib/rdoc/{require.rb → code_object/require.rb} +2 -3
  29. data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +6 -2
  30. data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +22 -32
  31. data/lib/rdoc/code_object.rb +8 -41
  32. data/lib/rdoc/code_objects.rb +2 -3
  33. data/lib/rdoc/comment.rb +48 -41
  34. data/lib/rdoc/cross_reference.rb +77 -33
  35. data/lib/rdoc/encoding.rb +50 -38
  36. data/lib/rdoc/erb_partial.rb +2 -3
  37. data/lib/rdoc/erbio.rb +4 -5
  38. data/lib/rdoc/generator/darkfish.rb +178 -125
  39. data/lib/rdoc/generator/json_index.rb +9 -22
  40. data/lib/rdoc/generator/markup.rb +6 -17
  41. data/lib/rdoc/generator/pot/message_extractor.rb +4 -4
  42. data/lib/rdoc/generator/pot/po.rb +3 -3
  43. data/lib/rdoc/generator/pot/po_entry.rb +12 -12
  44. data/lib/rdoc/generator/pot.rb +4 -8
  45. data/lib/rdoc/generator/ri.rb +1 -2
  46. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
  47. data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -12
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  52. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +19 -10
  53. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +26 -6
  54. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
  55. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -1
  56. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  57. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +27 -6
  58. data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  59. data/lib/rdoc/generator/template/darkfish/class.rhtml +125 -78
  60. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +430 -339
  61. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  62. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  63. data/lib/rdoc/generator/template/darkfish/index.rhtml +13 -13
  64. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -92
  65. data/lib/rdoc/generator/template/darkfish/js/search.js +35 -34
  66. data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
  67. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
  68. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +20 -18
  69. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +32 -20
  70. data/lib/rdoc/generator/template/json_index/js/navigation.js +12 -49
  71. data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
  72. data/lib/rdoc/generator.rb +6 -6
  73. data/lib/rdoc/i18n/locale.rb +1 -1
  74. data/lib/rdoc/i18n/text.rb +5 -5
  75. data/lib/rdoc/i18n.rb +4 -4
  76. data/lib/rdoc/known_classes.rb +6 -5
  77. data/lib/rdoc/markdown/entities.rb +1 -2
  78. data/lib/rdoc/markdown/literals.kpeg +1 -2
  79. data/lib/rdoc/markdown/literals.rb +99 -50
  80. data/lib/rdoc/markdown.kpeg +115 -58
  81. data/lib/rdoc/markdown.rb +1584 -902
  82. data/lib/rdoc/markup/attr_changer.rb +1 -2
  83. data/lib/rdoc/markup/attr_span.rb +9 -4
  84. data/lib/rdoc/markup/attribute_manager.rb +118 -57
  85. data/lib/rdoc/markup/attributes.rb +7 -8
  86. data/lib/rdoc/markup/blank_line.rb +1 -2
  87. data/lib/rdoc/markup/block_quote.rb +1 -2
  88. data/lib/rdoc/markup/document.rb +1 -2
  89. data/lib/rdoc/markup/formatter.rb +44 -37
  90. data/lib/rdoc/markup/hard_break.rb +1 -2
  91. data/lib/rdoc/markup/heading.rb +11 -6
  92. data/lib/rdoc/markup/include.rb +1 -2
  93. data/lib/rdoc/markup/indented_paragraph.rb +1 -2
  94. data/lib/rdoc/markup/list.rb +1 -2
  95. data/lib/rdoc/markup/list_item.rb +1 -2
  96. data/lib/rdoc/markup/paragraph.rb +1 -2
  97. data/lib/rdoc/markup/parser.rb +90 -48
  98. data/lib/rdoc/markup/pre_process.rb +38 -11
  99. data/lib/rdoc/markup/raw.rb +1 -2
  100. data/lib/rdoc/markup/regexp_handling.rb +40 -0
  101. data/lib/rdoc/markup/rule.rb +1 -2
  102. data/lib/rdoc/markup/table.rb +56 -0
  103. data/lib/rdoc/markup/to_ansi.rb +1 -2
  104. data/lib/rdoc/markup/to_bs.rb +30 -5
  105. data/lib/rdoc/markup/to_html.rb +95 -40
  106. data/lib/rdoc/markup/to_html_crossref.rb +108 -43
  107. data/lib/rdoc/markup/to_html_snippet.rb +13 -11
  108. data/lib/rdoc/markup/to_joined_paragraph.rb +6 -32
  109. data/lib/rdoc/markup/to_label.rb +11 -12
  110. data/lib/rdoc/markup/to_markdown.rb +13 -14
  111. data/lib/rdoc/markup/to_rdoc.rb +49 -31
  112. data/lib/rdoc/markup/to_table_of_contents.rb +2 -2
  113. data/lib/rdoc/markup/to_test.rb +1 -2
  114. data/lib/rdoc/markup/to_tt_only.rb +3 -4
  115. data/lib/rdoc/markup/verbatim.rb +1 -2
  116. data/lib/rdoc/markup.rb +64 -694
  117. data/lib/rdoc/options.rb +226 -44
  118. data/lib/rdoc/parser/c.rb +231 -246
  119. data/lib/rdoc/parser/changelog.rb +169 -23
  120. data/lib/rdoc/parser/markdown.rb +1 -3
  121. data/lib/rdoc/parser/prism_ruby.rb +1092 -0
  122. data/lib/rdoc/parser/rd.rb +1 -2
  123. data/lib/rdoc/parser/ripper_state_lex.rb +302 -0
  124. data/lib/rdoc/parser/ruby.rb +695 -478
  125. data/lib/rdoc/parser/ruby_tools.rb +33 -36
  126. data/lib/rdoc/parser/simple.rb +4 -4
  127. data/lib/rdoc/parser/text.rb +1 -2
  128. data/lib/rdoc/parser.rb +37 -42
  129. data/lib/rdoc/rd/block_parser.rb +708 -57
  130. data/lib/rdoc/rd/block_parser.ry +15 -11
  131. data/lib/rdoc/rd/inline.rb +5 -6
  132. data/lib/rdoc/rd/inline_parser.rb +787 -140
  133. data/lib/rdoc/rd/inline_parser.ry +1 -1
  134. data/lib/rdoc/rd.rb +4 -5
  135. data/lib/rdoc/rdoc.rb +72 -87
  136. data/lib/rdoc/ri/driver.rb +236 -152
  137. data/lib/rdoc/ri/formatter.rb +1 -1
  138. data/lib/rdoc/ri/paths.rb +4 -18
  139. data/lib/rdoc/ri/store.rb +1 -2
  140. data/lib/rdoc/ri/task.rb +2 -2
  141. data/lib/rdoc/ri.rb +5 -6
  142. data/lib/rdoc/rubygems_hook.rb +98 -20
  143. data/lib/rdoc/servlet.rb +30 -20
  144. data/lib/rdoc/stats/normal.rb +24 -18
  145. data/lib/rdoc/stats/quiet.rb +1 -2
  146. data/lib/rdoc/stats/verbose.rb +1 -3
  147. data/lib/rdoc/stats.rb +6 -7
  148. data/lib/rdoc/store.rb +84 -55
  149. data/lib/rdoc/task.rb +35 -10
  150. data/lib/rdoc/text.rb +40 -27
  151. data/lib/rdoc/token_stream.rb +56 -34
  152. data/lib/rdoc/tom_doc.rb +18 -19
  153. data/lib/rdoc/version.rb +10 -0
  154. data/lib/rdoc.rb +80 -56
  155. data/lib/rubygems_plugin.rb +23 -0
  156. data/man/ri.1 +247 -0
  157. metadata +45 -99
  158. data/.document +0 -5
  159. data/.gitignore +0 -13
  160. data/.travis.yml +0 -24
  161. data/Gemfile +0 -3
  162. data/RI.rdoc +0 -57
  163. data/Rakefile +0 -133
  164. data/bin/console +0 -7
  165. data/bin/setup +0 -6
  166. data/lib/gauntlet_rdoc.rb +0 -82
  167. data/lib/rdoc/generator/template/darkfish/.document +0 -0
  168. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
  169. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
  170. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
  171. data/lib/rdoc/generator/template/json_index/.document +0 -1
  172. data/lib/rdoc/markup/formatter_test_case.rb +0 -764
  173. data/lib/rdoc/markup/inline.rb +0 -2
  174. data/lib/rdoc/markup/special.rb +0 -41
  175. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
  176. data/lib/rdoc/ruby_lex.rb +0 -1367
  177. data/lib/rdoc/ruby_token.rb +0 -461
  178. data/lib/rdoc/test_case.rb +0 -204
  179. data/rdoc.gemspec +0 -57
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  require 'json'
3
3
  begin
4
4
  require 'zlib'
@@ -86,9 +86,7 @@ class RDoc::Generator::JsonIndex
86
86
  attr_reader :index # :nodoc:
87
87
 
88
88
  ##
89
- # Creates a new generator. +parent_generator+ is used to determine the
90
- # class_dir and file_dir of links in the output index.
91
- #
89
+ # Creates a new generator.
92
90
  # +options+ are the same options passed to the parent generator.
93
91
 
94
92
  def initialize parent_generator, options
@@ -147,12 +145,15 @@ class RDoc::Generator::JsonIndex
147
145
 
148
146
  JSON.dump data, io, 0
149
147
  end
148
+ unless ENV['SOURCE_DATE_EPOCH'].nil?
149
+ index_file.utime index_file.atime, Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
150
+ end
150
151
 
151
152
  Dir.chdir @template_dir do
152
153
  Dir['**/*.js'].each do |source|
153
154
  dest = File.join out_dir, source
154
155
 
155
- FileUtils.install source, dest, :mode => 0644, :verbose => $DEBUG_RDOC
156
+ FileUtils.install source, dest, :mode => 0644, :preserve => true, :verbose => $DEBUG_RDOC
156
157
  end
157
158
  end
158
159
  end
@@ -161,7 +162,7 @@ class RDoc::Generator::JsonIndex
161
162
  # Compress the search_index.js file using gzip
162
163
 
163
164
  def generate_gzipped
164
- return unless defined?(Zlib)
165
+ return if @options.dry_run or not defined?(Zlib)
165
166
 
166
167
  debug_msg "Compressing generated JSON index"
167
168
  out_dir = @base_dir + @options.op_dir
@@ -227,9 +228,9 @@ class RDoc::Generator::JsonIndex
227
228
  def index_methods
228
229
  debug_msg " generating method search index"
229
230
 
230
- list = @classes.uniq.map do |klass|
231
+ list = @classes.uniq.flat_map do |klass|
231
232
  klass.method_list
232
- end.flatten.sort_by do |method|
233
+ end.sort_by do |method|
233
234
  [method.name, method.parent.full_name]
234
235
  end
235
236
 
@@ -262,20 +263,6 @@ class RDoc::Generator::JsonIndex
262
263
  end
263
264
  end
264
265
 
265
- ##
266
- # The directory classes are written to
267
-
268
- def class_dir
269
- @parent_generator.class_dir
270
- end
271
-
272
- ##
273
- # The directory files are written to
274
-
275
- def file_dir
276
- @parent_generator.file_dir
277
- end
278
-
279
266
  def reset files, classes # :nodoc:
280
267
  @files = files
281
268
  @classes = classes
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Handle common RDoc::Markup tasks for various CodeObjects
4
4
  #
@@ -34,7 +34,7 @@ module RDoc::Generator::Markup
34
34
  def formatter
35
35
  return @formatter if defined? @formatter
36
36
 
37
- options = @store.rdoc.options
37
+ options = @store.options
38
38
  this = RDoc::Context === self ? self : @parent
39
39
 
40
40
  @formatter = RDoc::Markup::ToHtmlCrossref.new options, this.path, this
@@ -65,16 +65,6 @@ end
65
65
 
66
66
  class RDoc::MethodAttr
67
67
 
68
- @add_line_numbers = false
69
-
70
- class << self
71
- ##
72
- # Allows controlling whether <tt>#markup_code</tt> adds line numbers to
73
- # the source code.
74
-
75
- attr_accessor :add_line_numbers
76
- end
77
-
78
68
  ##
79
69
  # Prepend +src+ with line numbers. Relies on the first line of a source
80
70
  # code listing having:
@@ -106,7 +96,7 @@ class RDoc::MethodAttr
106
96
  ##
107
97
  # Turns the method's token stream into HTML.
108
98
  #
109
- # Prepends line numbers if +add_line_numbers+ is true.
99
+ # Prepends line numbers if +options.line_numbers+ is true.
110
100
 
111
101
  def markup_code
112
102
  return '' unless @token_stream
@@ -119,14 +109,14 @@ class RDoc::MethodAttr
119
109
  lines.shift if src =~ /\A.*#\ *File/i # remove '# File' comment
120
110
  lines.each do |line|
121
111
  if line =~ /^ *(?=\S)/
122
- n = $&.length
112
+ n = $~.end(0)
123
113
  indent = n if n < indent
124
114
  break if n == 0
125
115
  end
126
116
  end
127
117
  src.gsub!(/^#{' ' * indent}/, '') if indent > 0
128
118
 
129
- add_line_numbers(src) if RDoc::MethodAttr.add_line_numbers
119
+ add_line_numbers(src) if options.line_numbers
130
120
 
131
121
  src
132
122
  end
@@ -157,7 +147,7 @@ class RDoc::TopLevel
157
147
  # command line option to set.
158
148
 
159
149
  def cvs_url
160
- url = @store.rdoc.options.webcvs
150
+ url = @store.options.webcvs
161
151
 
162
152
  if /%s/ =~ url then
163
153
  url % @relative_name
@@ -167,4 +157,3 @@ class RDoc::TopLevel
167
157
  end
168
158
 
169
159
  end
170
-
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Extracts message from RDoc::Store
4
4
 
@@ -29,17 +29,17 @@ class RDoc::Generator::POT::MessageExtractor
29
29
  extract_text(klass.comment_location, klass.full_name)
30
30
 
31
31
  klass.each_section do |section, constants, attributes|
32
- extract_text(section.title ,"#{klass.full_name}: section title")
32
+ extract_text(section.title, "#{klass.full_name}: section title")
33
33
  section.comments.each do |comment|
34
34
  extract_text(comment, "#{klass.full_name}: #{section.title}")
35
35
  end
36
36
  end
37
37
 
38
- klass.each_constant do |constant|
38
+ klass.constants.each do |constant|
39
39
  extract_text(constant.comment, constant.full_name)
40
40
  end
41
41
 
42
- klass.each_attribute do |attribute|
42
+ klass.attributes.each do |attribute|
43
43
  extract_text(attribute.comment, attribute.full_name)
44
44
  end
45
45
 
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Generates a PO format text
4
4
 
@@ -29,8 +29,8 @@ class RDoc::Generator::POT::PO
29
29
  def to_s
30
30
  po = ''
31
31
  sort_entries.each do |entry|
32
- po << "\n" unless po.empty?
33
- po << entry.to_s
32
+ po += "\n" unless po.empty?
33
+ po += entry.to_s
34
34
  end
35
35
  po
36
36
  end
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # A PO entry in PO
4
4
 
@@ -23,7 +23,7 @@ class RDoc::Generator::POT::POEntry
23
23
  attr_reader :flags
24
24
 
25
25
  ##
26
- # Creates a PO entry for +msgid+. Other valus can be specified by
26
+ # Creates a PO entry for +msgid+. Other values can be specified by
27
27
  # +options+.
28
28
 
29
29
  def initialize msgid, options = {}
@@ -40,11 +40,11 @@ class RDoc::Generator::POT::POEntry
40
40
 
41
41
  def to_s
42
42
  entry = ''
43
- entry << format_translator_comment
44
- entry << format_extracted_comment
45
- entry << format_references
46
- entry << format_flags
47
- entry << <<-ENTRY
43
+ entry += format_translator_comment
44
+ entry += format_extracted_comment
45
+ entry += format_references
46
+ entry += format_flags
47
+ entry += <<-ENTRY
48
48
  msgid #{format_message(@msgid)}
49
49
  msgstr #{format_message(@msgstr)}
50
50
  ENTRY
@@ -75,9 +75,9 @@ msgstr #{format_message(@msgstr)}
75
75
 
76
76
  formatted_comment = ''
77
77
  comment.each_line do |line|
78
- formatted_comment << "#{mark} #{line}"
78
+ formatted_comment += "#{mark} #{line}"
79
79
  end
80
- formatted_comment << "\n" unless formatted_comment.end_with?("\n")
80
+ formatted_comment += "\n" unless formatted_comment.end_with?("\n")
81
81
  formatted_comment
82
82
  end
83
83
 
@@ -94,7 +94,7 @@ msgstr #{format_message(@msgstr)}
94
94
 
95
95
  formatted_references = ''
96
96
  @references.sort.each do |file, line|
97
- formatted_references << "\#: #{file}:#{line}\n"
97
+ formatted_references += "\#: #{file}:#{line}\n"
98
98
  end
99
99
  formatted_references
100
100
  end
@@ -111,8 +111,8 @@ msgstr #{format_message(@msgstr)}
111
111
 
112
112
  formatted_message = '""'
113
113
  message.each_line do |line|
114
- formatted_message << "\n"
115
- formatted_message << "\"#{escape(line)}\""
114
+ formatted_message += "\n"
115
+ formatted_message += "\"#{escape(line)}\""
116
116
  end
117
117
  formatted_message
118
118
  end
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Generates a POT file.
4
4
  #
@@ -81,18 +81,14 @@ class RDoc::Generator::POT
81
81
  end
82
82
  end
83
83
 
84
- def class_dir
85
- nil
86
- end
87
-
88
84
  private
89
85
  def extract_messages
90
86
  extractor = MessageExtractor.new(@store)
91
87
  extractor.extract
92
88
  end
93
89
 
94
- autoload :MessageExtractor, 'rdoc/generator/pot/message_extractor'
95
- autoload :PO, 'rdoc/generator/pot/po'
96
- autoload :POEntry, 'rdoc/generator/pot/po_entry'
90
+ require_relative 'pot/message_extractor'
91
+ require_relative 'pot/po'
92
+ require_relative 'pot/po_entry'
97
93
 
98
94
  end
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Generates ri data files
4
4
 
@@ -28,4 +28,3 @@ class RDoc::Generator::RI
28
28
  end
29
29
 
30
30
  end
31
-
@@ -1,5 +1,5 @@
1
1
  <footer id="validator-badges" role="contentinfo">
2
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
3
- <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> <%= RDoc::VERSION %>.
2
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
3
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> <%= RDoc::VERSION %>.
4
4
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
5
5
  </footer>
@@ -1,20 +1,43 @@
1
1
  <meta charset="<%= @options.charset %>">
2
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
2
3
 
3
4
  <title><%= h @title %></title>
4
5
 
6
+ <%- if defined?(klass) -%>
7
+ <meta name="keywords" content="ruby,<%= h "#{klass.type},#{klass.full_name}" %>">
8
+
9
+ <%- if klass.comment.empty? -%>
10
+ <meta name="description" content="Documentation for the <%= h "#{klass.full_name} #{klass.type}" %>">
11
+ <%- else -%>
12
+ <meta name="description" content="<%= h "#{klass.type} #{klass.full_name}: #{excerpt(klass.comment)}" %>">
13
+ <%- end -%>
14
+ <%- elsif defined?(file) -%>
15
+ <meta name="keywords" content="ruby,documentation,<%= h file.page_name %>">
16
+ <meta name="description" content="<%= h "#{file.page_name}: #{excerpt(file.comment)}" %>">
17
+ <%- elsif @title -%>
18
+ <meta name="keywords" content="ruby,documentation,<%= h @title %>">
19
+
20
+ <%- if @options.main_page and
21
+ main_page = @files.find { |f| f.full_name == @options.main_page } then %>
22
+ <meta name="description" content="<%= h "#{@title}: #{excerpt(main_page.comment)}" %>">
23
+ <%- else -%>
24
+ <meta name="description" content="Documentation for <%= h @title %>">
25
+ <%- end -%>
26
+ <%- end -%>
27
+
5
28
  <script type="text/javascript">
6
- var rdoc_rel_prefix = "<%= asset_rel_prefix %>/";
7
- var index_rel_prefix = "<%= rel_prefix %>/";
29
+ var rdoc_rel_prefix = "<%= h asset_rel_prefix %>/";
30
+ var index_rel_prefix = "<%= h rel_prefix %>/";
8
31
  </script>
9
32
 
10
- <script src="<%= asset_rel_prefix %>/js/jquery.js"></script>
11
- <script src="<%= asset_rel_prefix %>/js/darkfish.js"></script>
12
-
13
- <link href="<%= asset_rel_prefix %>/css/fonts.css" rel="stylesheet">
14
- <link href="<%= asset_rel_prefix %>/css/rdoc.css" rel="stylesheet">
15
- <% if @options.template_stylesheets.flatten.any? then %>
16
- <% @options.template_stylesheets.flatten.each do |stylesheet| %>
17
- <link href="<%= asset_rel_prefix %>/<%= File.basename stylesheet %>" rel="stylesheet">
18
- <% end %>
19
- <% end %>
33
+ <script src="<%= h asset_rel_prefix %>/js/navigation.js" defer></script>
34
+ <script src="<%= h asset_rel_prefix %>/js/search.js" defer></script>
35
+ <script src="<%= h asset_rel_prefix %>/js/search_index.js" defer></script>
36
+ <script src="<%= h asset_rel_prefix %>/js/searcher.js" defer></script>
37
+ <script src="<%= h asset_rel_prefix %>/js/darkfish.js" defer></script>
20
38
 
39
+ <link href="<%= h asset_rel_prefix %>/css/fonts.css" rel="stylesheet">
40
+ <link href="<%= h asset_rel_prefix %>/css/rdoc.css" rel="stylesheet">
41
+ <%- @options.template_stylesheets.each do |stylesheet| -%>
42
+ <link href="<%= h asset_rel_prefix %>/<%= File.basename stylesheet %>" rel="stylesheet">
43
+ <%- end -%>
@@ -1,9 +1,5 @@
1
1
  <div id="classindex-section" class="nav-section">
2
2
  <h3>Class and Module Index</h3>
3
3
 
4
- <ul class="link-list">
5
- <% @modsort.each do |index_klass| %>
6
- <li><a href="<%= rel_prefix %>/<%= index_klass.path %>"><%= index_klass.full_name %></a>
7
- <% end %>
8
- </ul>
4
+ <%= generate_class_index_content(@classes, rel_prefix) %>
9
5
  </div>
@@ -1,15 +1,15 @@
1
- <% unless klass.extends.empty? then %>
1
+ <%- unless klass.extends.empty? then %>
2
2
  <div id="extends-section" class="nav-section">
3
3
  <h3>Extended With Modules</h3>
4
4
 
5
5
  <ul class="link-list">
6
- <% klass.each_extend do |ext| %>
7
- <% unless String === ext.module then %>
6
+ <%- klass.extends.each do |ext| -%>
7
+ <%- unless String === ext.module then -%>
8
8
  <li><a class="extend" href="<%= klass.aref_to ext.module.path %>"><%= ext.module.full_name %></a>
9
- <% else %>
9
+ <%- else -%>
10
10
  <li><span class="extend"><%= ext.name %></span>
11
- <% end %>
12
- <% end %>
11
+ <%- end -%>
12
+ <%- end -%>
13
13
  </ul>
14
14
  </div>
15
- <% end %>
15
+ <%- end -%>
@@ -1,15 +1,15 @@
1
- <% unless klass.includes.empty? then %>
1
+ <%- unless klass.includes.empty? then %>
2
2
  <div id="includes-section" class="nav-section">
3
3
  <h3>Included Modules</h3>
4
4
 
5
5
  <ul class="link-list">
6
- <% klass.each_include do |inc| %>
7
- <% unless String === inc.module then %>
6
+ <%- klass.includes.each do |inc| -%>
7
+ <%- unless String === inc.module then -%>
8
8
  <li><a class="include" href="<%= klass.aref_to inc.module.path %>"><%= inc.module.full_name %></a>
9
- <% else %>
9
+ <%- else -%>
10
10
  <li><span class="include"><%= inc.name %></span>
11
- <% end %>
12
- <% end %>
11
+ <%- end -%>
12
+ <%- end -%>
13
13
  </ul>
14
14
  </div>
15
- <% end %>
15
+ <%- end -%>
@@ -2,14 +2,14 @@
2
2
  <h3>Documentation</h3>
3
3
 
4
4
  <ul>
5
- <% installed.each do |name, href, exists, type, _| %>
6
- <% next if type == :extra %>
5
+ <%- installed.each do |name, href, exists, type, _| -%>
6
+ <%- next if type == :extra -%>
7
7
  <li class="folder">
8
- <% if exists then %>
8
+ <%- if exists then -%>
9
9
  <a href="<%= href %>"><%= h name %></a>
10
- <% else %>
10
+ <%- else -%>
11
11
  <%= h name %>
12
- <% end %>
13
- <% end %>
12
+ <%- end -%>
13
+ <%- end -%>
14
14
  </ul>
15
15
  </div>
@@ -1,12 +1,21 @@
1
- <% unless klass.method_list.empty? then %>
2
- <!-- Method Quickref -->
3
- <div id="method-list-section" class="nav-section">
4
- <h3>Methods</h3>
1
+ <% if (class_methods = klass.class_method_list.sort).any? %>
2
+ <div class="nav-section">
3
+ <h3>Class Methods</h3>
4
+ <ul class="link-list" role="directory">
5
+ <%- class_methods.each do |meth| -%>
6
+ <li <%- if meth.calls_super %>class="calls-super" <%- end %>><a href="#<%= meth.aref %>"><%= h meth.name -%></a></li>
7
+ <%- end -%>
8
+ </ul>
9
+ </div>
10
+ <% end %>
5
11
 
6
- <ul class="link-list" role="directory">
7
- <% klass.each_method do |meth| %>
8
- <li <% if meth.calls_super %>class="calls-super" <% end %>><a href="#<%= meth.aref %>"><%= meth.singleton ? '::' : '#' %><%= h meth.name %></a>
9
- <% end %>
10
- </ul>
11
- </div>
12
+ <% if (instance_methods = klass.instance_methods.sort).any? %>
13
+ <div class="nav-section">
14
+ <h3>Instance Methods</h3>
15
+ <ul class="link-list" role="directory">
16
+ <%- instance_methods.each do |meth| -%>
17
+ <li <%- if meth.calls_super %>class="calls-super" <%- end %>><a href="#<%= meth.aref %>"><%= h meth.name -%></a></li>
18
+ <%- end -%>
19
+ </ul>
20
+ </div>
12
21
  <% end %>
@@ -1,12 +1,32 @@
1
- <% simple_files = @files.select { |f| f.text? } %>
2
- <% unless simple_files.empty? then %>
1
+ <%- simple_files = @files.select { |f| f.text? } %>
2
+ <%- if defined?(current) -%>
3
+ <%- dir = current.full_name[%r{\A[^/]+(?=/)}] || current.page_name -%>
4
+ <%- end -%>
5
+ <%- unless simple_files.empty? then -%>
3
6
  <div id="fileindex-section" class="nav-section">
4
7
  <h3>Pages</h3>
5
8
 
6
9
  <ul class="link-list">
7
- <% simple_files.each do |f| %>
8
- <li><a href="<%= rel_prefix %>/<%= f.path %>"><%= h f.page_name %></a>
9
- <% end %>
10
+ <%- simple_files.group_by do |f| -%>
11
+ <%- f.full_name[%r{\A[^/]+(?=/)}] || f.page_name -%>
12
+ <%- end.each do |n, files| -%>
13
+ <%- f = files.shift -%>
14
+ <%- if files.empty? -%>
15
+ <li><a href="<%= rel_prefix %>/<%= h f.path %>"><%= h f.page_name %></a>
16
+ <%- next -%>
17
+ <%- end -%>
18
+ <li><details<% if dir == n %> open<% end %>><summary><%
19
+ if n == f.page_name
20
+ %><a href="<%= rel_prefix %>/<%= h f.path %>"><%= h n %></a><%
21
+ else
22
+ %><%= h n %><% files.unshift(f)
23
+ end %></summary>
24
+ <ul class="link-list">
25
+ <%- files.each do |f| -%>
26
+ <li><a href="<%= rel_prefix %>/<%= h f.path %>"><%= h f.page_name %></a>
27
+ <%- end -%>
28
+ </ul></details>
29
+ <%- end -%>
10
30
  </ul>
11
31
  </div>
12
- <% end %>
32
+ <%- end -%>
@@ -1,11 +1,6 @@
1
- <% if klass.type == 'class' then %>
1
+ <%- if klass.type == 'class' && (ancestors = klass.super_classes).any? -%>
2
2
  <div id="parent-class-section" class="nav-section">
3
- <h3>Parent</h3>
4
-
5
- <% if klass.superclass and not String === klass.superclass then %>
6
- <p class="link"><a href="<%= klass.aref_to klass.superclass.path %>"><%= klass.superclass.full_name %></a>
7
- <% else %>
8
- <p class="link"><%= klass.superclass %>
9
- <% end %>
3
+ <h3>Ancestors</h3>
4
+ <%= generate_ancestor_list(ancestors, klass) %>
10
5
  </div>
11
- <% end %>
6
+ <%- end -%>
@@ -3,7 +3,7 @@
3
3
  <div id="search-field-wrapper">
4
4
  <input id="search-field" role="combobox" aria-label="Search"
5
5
  aria-autocomplete="list" aria-controls="search-results"
6
- type="text" name="search" placeholder="Search" spellcheck="false"
6
+ type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
7
7
  title="Type to search, Up and Down to navigate, Enter to load">
8
8
  </div>
9
9
 
@@ -1,11 +1,11 @@
1
- <% unless klass.sections.length == 1 then %>
1
+ <%- unless klass.sections.length == 1 then %>
2
2
  <div id="sections-section" class="nav-section">
3
3
  <h3>Sections</h3>
4
4
 
5
5
  <ul class="link-list" role="directory">
6
- <% klass.sort_sections.each do |section| %>
6
+ <%- klass.sort_sections.each do |section| -%>
7
7
  <li><a href="#<%= section.aref %>"><%= h section.title %></a></li>
8
- <% end %>
8
+ <%- end -%>
9
9
  </ul>
10
10
  </div>
11
- <% end %>
11
+ <%- end -%>
@@ -1,18 +1,39 @@
1
- <% comment = if current.respond_to? :comment_location then
1
+ <%- comment = if current.respond_to? :comment_location then
2
2
  current.comment_location
3
3
  else
4
4
  current.comment
5
5
  end
6
- table = current.parse(comment).table_of_contents
6
+ table = current.parse(comment).table_of_contents.dup
7
7
 
8
8
  if table.length > 1 then %>
9
9
  <div class="nav-section">
10
10
  <h3>Table of Contents</h3>
11
11
 
12
+ <%- display_link = proc do |heading| -%>
13
+ <a href="#<%= heading.label current %>"><%= heading.plain_html %></a>
14
+ <%- end -%>
15
+
16
+ <%- list_siblings = proc do -%>
17
+ <%- level = table.first&.level -%>
18
+ <%- while table.first && table.first.level >= level -%>
19
+ <%- heading = table.shift -%>
20
+ <%- if table.first.nil? || table.first.level <= heading.level -%>
21
+ <li><% display_link.call heading -%>
22
+ <%- else -%>
23
+ <li>
24
+ <details open>
25
+ <summary><%- display_link.call heading -%></summary>
26
+ <ul class="link-list" role="directory">
27
+ <% list_siblings.call %>
28
+ </ul>
29
+ </details>
30
+ </li>
31
+ <%- end -%>
32
+ <%- end -%>
33
+ <%- end -%>
34
+
12
35
  <ul class="link-list" role="directory">
13
- <% table.each do |heading| %>
14
- <li><a href="#<%= heading.label current %>"><%= heading.plain_html %></a>
15
- <% end %>
36
+ <% list_siblings.call %>
16
37
  </ul>
17
38
  </div>
18
- <% end %>
39
+ <%- end -%>
@@ -0,0 +1,3 @@
1
+ <div id="navigation-toggle" role="button" tabindex="0" aria-label="Toggle sidebar" aria-expanded="true" aria-controls="navigation">
2
+ <span aria-hidden="true">&#9776;</span>
3
+ </div>