git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 4/4] Documentation: implement linkgit macro for Asciidoctor

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Oct 11, 2014, 23:37 UTC
Message-ID
<1413070656-241955-5-git-send-email-sandals@crustytoothpaste.net>
In-Reply-To
<1413070656-241955-1-git-send-email-sandals@crustytoothpaste.net>

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.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 Documentation/extensions.rb | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 Documentation/extensions.rb
diff --git a/Documentation/extensions.rb b/Documentation/extensions.rb
new file mode 100644
index 0000000..c33a50d
--- /dev/null
+++ b/Documentation/extensions.rb
@@ -0,0 +1,39 @@
+require 'asciidoctor'
+require 'asciidoctor/extensions'
+
+module Git
+  module Documentation
+    class LinkGitProcessor < Asciidoctor::Extensions::InlineMacroProcessor
+      use_dsl
+
+      named :chrome
+
+      def process(parent, target, attrs)
+        if parent.document.basebackend? 'html'
+          generate_html(parent, target, attrs)
+        elsif parent.document.basebackend? 'docbook'
+          generate_docbook(parent, target, attrs)
+        end
+      end
+
+      private
+
+      def generate_html(parent, target, attrs)
+        section = attrs.has_key?(1) ? "(#{attrs[1]})" : ''
+        prefix = parent.document.attr('git-relative-html-prefix') || ''
+        %(<a href="#{prefix}#{target}.html">#{target}#{section}</a>\n)
+      end
+
+      def generate_docbook(parent, target, attrs)
+        %(<citerefentry>
+<refentrytitle>#{target}</refentrytitle><manvolnum>#{attrs[1]}</manvolnum>
+</citerefentry>
+)
+      end
+    end
+  end
+end
+
+Asciidoctor::Extensions.register do
+  inline_macro Git::Documentation::LinkGitProcessor, :linkgit
+end
-- 
2.1.1
Previous: brian m. carlsonNext: Junio C Hamano
Message 8 of 19 in “Allow building Git with Asciidoctor”
  1. 0/4 Allow building Git with Asciidoctorbrian m. carlson, Oct 11, 2014
  2. 1/4 Documentation: adjust document title underliningbrian m. carlson, Oct 11, 2014
  3. Junio C HamanoOct 13, 2014
  4. 2/4 Documentation: fix mismatched delimiters in git-imap-sendbrian m. carlson, Oct 11, 2014
  5. 3/4 Documentation: move some AsciiDoc parameters into variablesbrian m. carlson, Oct 11, 2014
  6. Junio C HamanoOct 15, 2014
  7. brian m. carlsonOct 16, 2014
  8. 4/4 Documentation: implement linkgit macro for Asciidoctorbrian m. carlson, Oct 11, 2014
  9. Junio C HamanoOct 13, 2014
  10. brian m. carlsonOct 14, 2014
  11. Jakub NarębskiOct 14, 2014
  12. brian m. carlsonOct 14, 2014
  13. Jeff KingOct 14, 2014
  14. Junio C HamanoOct 14, 2014
  15. brian m. carlsonOct 15, 2014
  16. Junio C HamanoOct 15, 2014
  17. Thomas BraunOct 15, 2014
  18. brian m. carlsonOct 15, 2014
  19. Philip OakleyOct 16, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.