From 7dfd7b074332d39a915a8e6ffc48428521303ccd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 29 Jan 2020 15:16:38 +0100 Subject: texinfo: Properly render @acronym in plain text. Fixes . Reported by Christopher Baines . * 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. --- module/texinfo/plain-text.scm | 13 ++++++++++++- 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"))) + "?"))))) -- cgit v1.2.3