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