12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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
|