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

[PATCH 09/23] doc: asciidoctor: refactor macro registration

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Jun 21, 2021, 16:30 UTC
Message-ID
<20210621163110.1074145-10-felipe.contreras@gmail.com>
In-Reply-To
<20210621163110.1074145-1-felipe.contreras@gmail.com>

There is no need to execute extra code every time the process block is called.

In Ruby the lexical scope is shared, so we can define variables in the register block scope, and all the rest will inherit those variables.

Based on the doctype and basebackend one of three blocks is selected for the inline_macro. However, the conditionals will be run only once.

In the end Ruby will only run the code between `process do end`, nothing else.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 Documentation/asciidoctor-extensions.rb | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/Documentation/asciidoctor-extensions.rb b/Documentation/asciidoctor-extensions.rb
index c77b6de350..a678704e17 100644
--- a/Documentation/asciidoctor-extensions.rb
+++ b/Documentation/asciidoctor-extensions.rb
@@ -2,15 +2,21 @@ require 'asciidoctor/extensions'
 
 Asciidoctor::Extensions.register do
 
+  doc = document
+
   inline_macro :linkgit do
-    process do |parent, target, attrs|
-      if parent.document.doctype == 'book'
+    if doc.doctype == 'book'
+      process do |parent, target, attrs|
         "<ulink url=\"#{target}.html\">" \
         "#{target}(#{attrs[1]})</ulink>"
-      elsif parent.document.basebackend? 'html'
-        prefix = parent.document.attr('git-relative-html-prefix')
+      end
+    elsif doc.basebackend? 'html'
+      prefix = doc.attr('git-relative-html-prefix')
+      process do |parent, target, attrs|
         %(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>)
-      elsif parent.document.basebackend? 'docbook'
+      end
+    elsif doc.basebackend? 'docbook'
+      process do |parent, target, attrs|
         "<citerefentry>\n" \
           "<refentrytitle>#{target}</refentrytitle>" \
           "<manvolnum>#{attrs[1]}</manvolnum>\n" \
-- 
2.32.0
Previous: Felipe ContrerasNext: Felipe Contreras
Message 11 of 28 in “doc: cleanups and asciidoctor direct man pages”
  1. 00/23 doc: cleanups and asciidoctor direct man pagesFelipe Contreras, Jun 21, 2021
  2. 01/23 doc: remove GNU troff workaroundFelipe Contreras, Jun 21, 2021
  3. 03/23 doc: simplify version passingFelipe Contreras, Jun 21, 2021
  4. 02/23 doc: use --stringparam in xmltoFelipe Contreras, Jun 21, 2021
  5. 04/23 doc: asciidoc: remove unnecessary attributeFelipe Contreras, Jun 21, 2021
  6. 05/23 doc: asciidoctor: remove unnecessary requireFelipe Contreras, Jun 21, 2021
  7. 07/23 doc: asciidoctor: reorganize extensionsFelipe Contreras, Jun 21, 2021
  8. 06/23 doc: asciidoctor: remove cruftFelipe Contreras, Jun 21, 2021
  9. 10/23 doc: asciidoctor: improve string handlingFelipe Contreras, Jun 21, 2021
  10. 11/23 doc: asciidoctor: split the format from the codeFelipe Contreras, Jun 21, 2021
  11. 09/23 doc: asciidoctor: refactor macro registrationFelipe Contreras, Jun 21, 2021
  12. 08/23 doc: asciidoctor: use html-prefix only for htmlFelipe Contreras, Jun 21, 2021
  13. 12/23 doc: asciidoctor: specify name of our groupFelipe Contreras, Jun 21, 2021
  14. 13/23 doc: doc-diff: set docdate manuallyFelipe Contreras, Jun 21, 2021
  15. 14/23 doc-diff: drop --cut-footer switchFelipe Contreras, Jun 21, 2021
  16. 15/23 doc: use asciidoctor to build man pages directlyFelipe Contreras, Jun 21, 2021
  17. Bagas SanjayaJun 22, 2021
  18. Felipe ContrerasJun 23, 2021
  19. 16/23 doc-diff: support asciidoctor man pagesFelipe Contreras, Jun 21, 2021
  20. 19/23 doc: asciidoctor: add hack for xrefsFelipe Contreras, Jun 21, 2021
  21. 20/23 doc: asciidoctor: add hack to improve linksFelipe Contreras, Jun 21, 2021
  22. 22/23 doc: asciidoctor: cleanup man page hackFelipe Contreras, Jun 21, 2021
  23. 17/23 doc: asciidoctor: add linkgit macros in man pagesFelipe Contreras, Jun 21, 2021
  24. 18/23 doc: add man pages workaround for asciidoctorFelipe Contreras, Jun 21, 2021
  25. 23/23 doc: asciidoctor: add hack for old versionsFelipe Contreras, Jun 21, 2021
  26. 21/23 doc: asciidoctor: add support for baseurlFelipe Contreras, Jun 21, 2021
  27. Bagas SanjayaJun 22, 2021
  28. Felipe ContrerasJun 23, 2021

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.