summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-01-29 15:16:38 +0100
committerLudovic Courtès <ludo@gnu.org>2020-02-12 10:33:07 +0100
commit7dfd7b074332d39a915a8e6ffc48428521303ccd (patch)
treee0c9d69b3270d29d69e84626228a2cd10201a677
parent149d229e3cbe7ff3cb3cc45ec0df69825e494f39 (diff)
texinfo: Properly render @acronym in plain text.
Fixes <https://bugs.gnu.org/37846>. Reported by Christopher Baines <mail@cbaines.net>. * module/texinfo/plain-text.scm (acronym): New procedure. (tag-handlers): Change 'acro' handle to ACRONYM, and add 'acronym' handler. * test-suite/tests/texinfo.plain-text.test ("stexi->plain-text") ["acronym", "recursive acronym"]: New tests.
-rw-r--r--module/texinfo/plain-text.scm13
-rw-r--r--test-suite/tests/texinfo.plain-text.test20
2 files changed, 31 insertions, 2 deletions
diff --git a/module/texinfo/plain-text.scm b/module/texinfo/plain-text.scm
index 6b7885ada..5ea99c86b 100644
--- a/module/texinfo/plain-text.scm
+++ b/module/texinfo/plain-text.scm
@@ -198,6 +198,16 @@
(define (var tag . body)
(string-upcase (stexi->plain-text body)))
+(define (acronym tag . elts)
+ (match elts
+ ((('% ('acronym text)))
+ (stexi->plain-text text))
+ ((('% ('acronym text) ('meaning . body)))
+ (string-append (stexi->plain-text text)
+ " ("
+ (string-concatenate (map stexi->plain-text body))
+ ")"))))
+
(define (passthrough tag . body)
(stexi->plain-text body))
@@ -246,7 +256,8 @@
(url ,code)
(dfn ,(make-surrounder "\""))
(cite ,(make-surrounder "\""))
- (acro ,passthrough)
+ (acro ,acronym) ;XXX: useless?
+ (acronym ,acronym)
(email ,key)
(emph ,(make-surrounder "_"))
(sc ,var)
diff --git a/test-suite/tests/texinfo.plain-text.test b/test-suite/tests/texinfo.plain-text.test
index 565da8c7d..4315cdbb1 100644
--- a/test-suite/tests/texinfo.plain-text.test
+++ b/test-suite/tests/texinfo.plain-text.test
@@ -31,4 +31,22 @@
"This is another sentence.\nThat too.\n\n"
(with-fluids ((*line-width* 26))
(stexi->plain-text
- '(*fragment* (para "This is another sentence. That too."))))))
+ '(*fragment* (para "This is another sentence. That too.")))))
+
+ (pass-if-equal "acronym"
+ "What's GNU (GNU's Not Unix)?\n\n"
+ (stexi->plain-text
+ '(*fragment* (para "What's "
+ (acronym (% (acronym "GNU")
+ (meaning "GNU's Not Unix")))
+ "?"))))
+
+ (pass-if-equal "recursive acronym"
+ "What's GNU (GNU's Not Unix)?\n\n"
+ (stexi->plain-text
+ '(*fragment* (para "What's "
+ (acronym (% (acronym "GNU")
+ (meaning (acronym
+ (% (acronym "GNU")))
+ "'s Not Unix")))
+ "?")))))