c33a50dce5c0a5de6ebae0d7ac19bf398d93e038
1require 'asciidoctor'
2require 'asciidoctor/extensions'
3
4module Git
5 module Documentation
6 class LinkGitProcessor < Asciidoctor::Extensions::InlineMacroProcessor
7 use_dsl
8
9 named :chrome
10
11 def process(parent, target, attrs)
12 if parent.document.basebackend? 'html'
13 generate_html(parent, target, attrs)
14 elsif parent.document.basebackend? 'docbook'
15 generate_docbook(parent, target, attrs)
16 end
17 end
18
19 private
20
21 def generate_html(parent, target, attrs)
22 section = attrs.has_key?(1) ? "(#{attrs[1]})" : ''
23 prefix = parent.document.attr('git-relative-html-prefix') || ''
24 %(<a href="#{prefix}#{target}.html">#{target}#{section}</a>\n)
25 end
26
27 def generate_docbook(parent, target, attrs)
28 %(<citerefentry>
29<refentrytitle>#{target}</refentrytitle><manvolnum>#{attrs[1]}</manvolnum>
30</citerefentry>
31)
32 end
33 end
34 end
35end
36
37Asciidoctor::Extensions.register do
38 inline_macro Git::Documentation::LinkGitProcessor, :linkgit
39end