You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
require 'asciidoctor' |
|
require 'asciidoctor/extensions' |
|
|
|
module Git |
|
module Documentation |
|
class LinkGitProcessor < Asciidoctor::Extensions::InlineMacroProcessor |
|
use_dsl |
|
|
|
named :chrome |
|
|
|
def process(parent, target, attrs) |
|
prefix = parent.document.attr('git-relative-html-prefix') |
|
if parent.document.doctype == 'book' |
|
"<ulink url=\"#{prefix}#{target}.html\">" \ |
|
"#{target}(#{attrs[1]})</ulink>" |
|
elsif parent.document.basebackend? 'html' |
|
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>) |
|
elsif parent.document.basebackend? 'docbook' |
|
"<citerefentry>\n" \ |
|
"<refentrytitle>#{target}</refentrytitle>" \ |
|
"<manvolnum>#{attrs[1]}</manvolnum>\n" \ |
|
"</citerefentry>" |
|
end |
|
end |
|
end |
|
|
|
class DocumentPostProcessor < Asciidoctor::Extensions::Postprocessor |
|
def process document, output |
|
if document.basebackend? 'docbook' |
|
mansource = document.attributes['mansource'] |
|
manversion = document.attributes['manversion'] |
|
manmanual = document.attributes['manmanual'] |
|
new_tags = "" \ |
|
"<refmiscinfo class=\"source\">#{mansource}</refmiscinfo>\n" \ |
|
"<refmiscinfo class=\"version\">#{manversion}</refmiscinfo>\n" \ |
|
"<refmiscinfo class=\"manual\">#{manmanual}</refmiscinfo>\n" |
|
output = output.sub(/<\/refmeta>/, new_tags + "</refmeta>") |
|
end |
|
output |
|
end |
|
end |
|
end |
|
end |
|
|
|
Asciidoctor::Extensions.register do |
|
inline_macro Git::Documentation::LinkGitProcessor, :linkgit |
|
postprocessor Git::Documentation::DocumentPostProcessor |
|
end
|
|
|