class RDoc::Markup::Heading
A heading with a level (1-6) and text
RDoc syntax: = Heading 1 == Heading 2 === Heading 3 Markdown syntax: # Heading 1 ## Heading 2 ### Heading 3
Attributes
Integer
String
Public Class Methods
(Integer, String) → void
Source
# File lib/rdoc/markup/heading.rb, line 16 def initialize(level, text) super() @level = level @text = text end
() → RDoc::Markup::ToHtml
Source
# File lib/rdoc/markup/heading.rb, line 53 def self.to_html @to_html ||= begin to_html = Markup::ToHtml.new def to_html.handle_regexp_CROSSREF(text) text.sub(/^\\/, '') end to_html end end
A singleton plain HTML formatter for headings. Used for creating labels for the Table of Contents
() → RDoc::Markup::ToLabel
Source
# File lib/rdoc/markup/heading.rb, line 47 def self.to_label @to_label ||= Markup::ToLabel.new end
A singleton RDoc::Markup::ToLabel formatter for headings.
Public Instance Methods
(Object) → bool
Source
# File lib/rdoc/markup/heading.rb, line 24 def ==(other) other.is_a?(Heading) && other.level == @level && other.text == @text end
(untyped) → void
Source
# File lib/rdoc/markup/heading.rb, line 67 def accept(visitor) visitor.accept_heading(self) end
@override
() → String
Source
# File lib/rdoc/markup/heading.rb, line 82 def aref self.class.to_label.convert text.dup end
An HTML-safe anchor reference for this header using GitHub-style formatting:
-
Lowercase
-
Spaces converted to hyphens
-
Special characters removed (except hyphens)
Examples:
"Hello" -> "hello" "Hello World" -> "hello-world" "Foo Bar Baz" -> "foo-bar-baz"
(RDoc::Context?) → String
Source
# File lib/rdoc/markup/heading.rb, line 118 def label(context = nil) result = +"" result << "#{context.aref}-" if context&.respond_to?(:aref) result << aref result end
Creates a fully-qualified label (GitHub-style) which includes the context’s aref prefix. This helps keep IDs unique in HTML when headings appear within class/method documentation.
Examples (without context):
"Hello World" -> "hello-world"
Examples (with context being class Foo):
"Hello World" -> "class-foo-hello-world"
Examples (with context being method bar):
"Hello World" -> "method-i-bar-hello-world"
() → String?
Source
# File lib/rdoc/markup/heading.rb, line 101 def legacy_aref "label-#{self.class.to_label.convert_legacy text.dup}" end
An HTML-safe anchor reference using legacy RDoc formatting:
-
Prefixed with “label-”
-
Original case preserved
-
Spaces converted to + (URL encoding style)
-
Special characters percent-encoded
Returns nil if it would be the same as the GitHub-style aref (no alias needed).
Examples:
"hello" -> "label-hello" (different due to label- prefix) "Hello" -> "label-Hello" "Hello World" -> "label-Hello+World" "Foo Bar Baz" -> "label-Foo+Bar+Baz"
(RDoc::Context?) → String
Source
# File lib/rdoc/markup/heading.rb, line 138 def legacy_label(context = nil) result = +"" if context&.respond_to?(:legacy_aref) result << "#{context.legacy_aref}-" elsif context&.respond_to?(:aref) result << "#{context.aref}-" end result << legacy_aref result end
Creates a fully-qualified legacy label for backward compatibility. This is used to generate a secondary ID attribute on the heading’s inner anchor, allowing old-style links (e.g., label-Hello+World) to continue working.
Examples (without context):
"hello" -> "label-hello" "Hello World" -> "label-Hello+World"
Examples (with context being class Foo):
"hello" -> "class-Foo-label-hello" "Hello World" -> "class-Foo-label-Hello+World"
() → String
Source
# File lib/rdoc/markup/heading.rb, line 151 def plain_html no_image_text = text if matched = no_image_text.match(/rdoc-image:[^:]+:(.*)/) no_image_text = matched[1] end self.class.to_html.to_html(no_image_text) end
HTML markup of the text of this label without the surrounding header element.
(PP) → void
Source
# File lib/rdoc/markup/heading.rb, line 163 def pretty_print(q) q.group 2, "[head: #{level} ", ']' do q.pp text end end
@override