class Linkify < Decode::Syntax::Rewriter
- Inherits from
Decode::Syntax::Rewriter
Rewrites source code as HTML with links to indexed definitions.
Definitions
def initialize(base, language, text)
Initialize a source code rewriter.
Signature
-
parameter
baseBase The base data.
-
parameter
languageDecode::Language::Generic The source language.
-
parameter
textString The source text to rewrite.
Implementation
def initialize(base, language, text)
@base = base
@language = language
super(text)
end
def text_for(range)
Escape an unmatched range of source text for HTML output.
Signature
-
parameter
rangeRange The source text range.
-
returns
String The escaped text.
Implementation
def text_for(range)
text = super(range)
return XRB::Strings.to_html(text)
end
def link_to(definition, text)
Build a link to an indexed definition.
Signature
-
parameter
definitionDecode::Definition The linked definition.
-
parameter
textString The visible link text.
-
returns
XRB::MarkupString The link markup.
Implementation
def link_to(definition, text)
XRB::Builder.fragment do |builder|
builder.inline("a", href: @base.link_for(definition), title: definition.qualified_name) do
builder.text(text)
end
end
end
def apply(output = XRB::Builder.new)
Apply the source links and wrap the result in a code element.
Signature
-
parameter
outputXRB::Builder The output builder.
-
returns
String The generated HTML markup.
Implementation
def apply(output = XRB::Builder.new)
output.inline("code", class: "language-#{@language.name}") do
super
end
return output.to_str
end