diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-01-29 15:16:38 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-02-12 10:33:07 +0100 |
commit | 7dfd7b074332d39a915a8e6ffc48428521303ccd (patch) | |
tree | e0c9d69b3270d29d69e84626228a2cd10201a677 | |
parent | 149d229e3cbe7ff3cb3cc45ec0df69825e494f39 (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.scm | 13 | ||||
-rw-r--r-- | test-suite/tests/texinfo.plain-text.test | 20 |
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"))) + "?"))))) |