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
Source
# File lib/rdoc/markup/heading.rb, line 47 def initialize(level, text) super() @level = level @text = text end
: (Integer, String) -> void
Calls superclass method
Source
# File lib/rdoc/markup/heading.rb, line 31 def self.to_html @to_html ||= begin markup = Markup.new markup.add_regexp_handling CrossReference::CROSSREF_REGEXP, :CROSSREF to_html = Markup::ToHtml.new nil def to_html.handle_regexp_CROSSREF(target) target.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::ToHtml
Source
# File lib/rdoc/markup/heading.rb, line 25 def self.to_label @to_label ||= Markup::ToLabel.new end
A singleton RDoc::Markup::ToLabel formatter for headings.
: () -> RDoc::Markup::ToLabel
Public Instance Methods
Source
# File lib/rdoc/markup/heading.rb, line 55 def ==(other) other.is_a?(Heading) && other.level == @level && other.text == @text end
: (Object) -> bool
Source
# File lib/rdoc/markup/heading.rb, line 61 def accept(visitor) visitor.accept_heading(self) end
@override
: (untyped) -> void
Source
# File lib/rdoc/markup/heading.rb, line 76 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"
: () -> String
Source
# File lib/rdoc/markup/heading.rb, line 112 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"
: (RDoc::Context?) -> String
Source
# File lib/rdoc/markup/heading.rb, line 95 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"
: () -> String?
Source
# File lib/rdoc/markup/heading.rb, line 132 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"
: (RDoc::Context?) -> String
Source
# File lib/rdoc/markup/heading.rb, line 145 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.
: () -> String
Source
# File lib/rdoc/markup/heading.rb, line 157 def pretty_print(q) q.group 2, "[head: #{level} ", ']' do q.pp text end end
@override
: (PP) -> void