Documentation: implement linkgit macro for Asciidoctor

AsciiDoc uses a configuration file to implement macros like linkgit, while Asciidoctor uses Ruby extensions. Implement a Ruby extension that implements the linkgit macro for Asciidoctor in the same way that asciidoc.conf does for AsciiDoc. Adjust the Makefile to use it by default. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

brian m. carlson committed Jan 26, 2017 at 00:13 UTC 55d2d812e49aece049b73682ad5980ea84e23839
2 files changed +29 -3
Documentation/Makefile
+1 -3
@@ -179,9 +179,7 @@ ASCIIDOC = asciidoctor
179 ASCIIDOC_CONF =
180 ASCIIDOC_HTML = xhtml5
181 ASCIIDOC_DOCBOOK = docbook45
182 -ifdef ASCIIDOCTOR_EXTENSIONS_LAB
183 -ASCIIDOC_EXTRA = -I$(ASCIIDOCTOR_EXTENSIONS_LAB) -rasciidoctor/extensions -rman-inline-macro
184 -endif
182 +ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
183 ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
184 DBLATEX_COMMON =
185 endif
Documentation/asciidoctor-extensions.rb new
+28
@@ -0,0 +1,28 @@
1 +require 'asciidoctor'
2 +require 'asciidoctor/extensions'
3 +
4 +module 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 + prefix = parent.document.attr('git-relative-html-prefix')
14 + %(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>\n)
15 + elsif parent.document.basebackend? 'docbook'
16 + "<citerefentry>\n" \
17 + "<refentrytitle>#{target}</refentrytitle>" \
18 + "<manvolnum>#{attrs[1]}</manvolnum>\n" \
19 + "</citerefentry>\n"
20 + end
21 + end
22 + end
23 + end
24 +end
25 +
26 +Asciidoctor::Extensions.register do
27 + inline_macro Git::Documentation::LinkGitProcessor, :linkgit
28 +end