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

[PATCH v3 09/12] doc: asciidoctor: refactor macro registration

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
May 25, 2021, 10:47 UTC
Message-ID
<20210525104802.158336-10-felipe.contreras@gmail.com>
In-Reply-To
<20210525104802.158336-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.rc0
Previous: Felipe Contreras
Message 13 of 13 in “doc: cleanup old cruft and asciidoctor revamp”
  1. 00/12 doc: cleanup old cruft and asciidoctor revampFelipe Contreras, May 25, 2021
  2. 01/12 doc: remove GNU troff workaroundFelipe Contreras, May 25, 2021
  3. 02/12 doc: use --stringparam in xmltoFelipe Contreras, May 25, 2021
  4. 03/12 doc: simplify version passingFelipe Contreras, May 25, 2021
  5. 04/12 doc: asciidoc: remove unnecessary attributeFelipe Contreras, May 25, 2021
  6. 05/12 doc: asciidoctor: remove unnecessary requireFelipe Contreras, May 25, 2021
  7. 06/12 doc: asciidoctor: remove cruftFelipe Contreras, May 25, 2021
  8. 08/12 doc: asciidoctor: use html-prefix only for htmlFelipe Contreras, May 25, 2021
  9. 07/12 doc: asciidoctor: reorganize extensionsFelipe Contreras, May 25, 2021
  10. 10/12 doc: asciidoctor: improve string handlingFelipe Contreras, May 25, 2021
  11. 11/12 doc: asciidoctor: split the format from the codeFelipe Contreras, May 25, 2021
  12. 12/12 doc: asciidoctor: specify name of our groupFelipe Contreras, May 25, 2021
  13. 09/12 doc: asciidoctor: refactor macro registrationFelipe Contreras, May 25, 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.