[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/7] Add tests for AS_BOX.
From: |
Eric Blake |
Subject: |
[PATCH 5/7] Add tests for AS_BOX. |
Date: |
Fri, 2 Jul 2010 13:37:50 -0600 |
* tests/m4sugar.at (m4@&address@hidden): New test.
* tests/m4sh.at (AS@&address@hidden): Likewise.
* lib/m4sugar/m4sugar.m4 (m4_text_box): Support comma.
* doc/autoconf.texi (Text processing Macros) <m4_text_box>:
Document further limitations.
Signed-off-by: Eric Blake <address@hidden>
---
ChangeLog | 7 +++++++
doc/autoconf.texi | 4 +++-
lib/m4sugar/m4sugar.m4 | 6 +++---
tests/m4sh.at | 48 +++++++++++++++++++++++++++++++++++++++++++++---
tests/m4sugar.at | 24 ++++++++++++++++++++++++
5 files changed, 82 insertions(+), 7 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d835b3f..df9424e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2010-07-02 Eric Blake <address@hidden>
+ Add tests for AS_BOX.
+ * tests/m4sugar.at (m4@&address@hidden): New test.
+ * tests/m4sh.at (AS@&address@hidden): Likewise.
+ * lib/m4sugar/m4sugar.m4 (m4_text_box): Support comma.
+ * doc/autoconf.texi (Text processing Macros) <m4_text_box>:
+ Document further limitations.
+
Add optional argument to AS_LITERAL_IF.
* lib/m4sugar/m4sh.m4 (_AS_LITERAL_IF): Rewrite to generate macro
name, without using m4_cond.
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index e6d4751..73517fd 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -12523,7 +12523,9 @@ Text processing Macros
@defmac m4_text_box (@var{message}, @dvar{frame, -})
@msindex{text_box}
Add a text box around @var{message}, using @var{frame} as the border
-character above and below the message. The frame correctly accounts for
+character above and below the message. The @var{frame} argument must be
+a single byte, and does not support quadrigraphs.
+The frame correctly accounts for
the subsequent expansion of @var{message}. For example:
@example
m4_define([macro], [abc])dnl
diff --git a/lib/m4sugar/m4sugar.m4 b/lib/m4sugar/m4sugar.m4
index 15fbd35..95b7bcf 100644
--- a/lib/m4sugar/m4sugar.m4
+++ b/lib/m4sugar/m4sugar.m4
@@ -2675,11 +2675,11 @@ m4_define([_m4_text_wrap_word],
# will post-process.
m4_define([m4_text_box],
[m4_pushdef([m4_Border],
- m4_translit(m4_format([%*s], m4_decr(m4_qlen(_m4_expand([$1
+ m4_translit(m4_format([[[%*s]]], m4_decr(m4_qlen(_m4_expand([$1
]))), []), [ ], m4_default_quoted([$2], [-])))]dnl
-[[##] m4_Border [##]
+[[##] _m4_defn([m4_Border]) [##]
[##] $1 [##]
-[##] m4_Border [##]_m4_popdef([m4_Border])])
+[##] _m4_defn([m4_Border]) [##]_m4_popdef([m4_Border])])
# m4_qlen(STRING)
diff --git a/tests/m4sh.at b/tests/m4sh.at
index 1e6eb59..f5ea7e2 100644
--- a/tests/m4sh.at
+++ b/tests/m4sh.at
@@ -124,9 +124,51 @@ AT_CHECK([$CONFIG_SHELL ./script])
AT_CLEANUP
-## ------------- ##
-## AS_BASENAME. ##
-## ------------- ##
+## -------- ##
+## AS_BOX. ##
+## -------- ##
+
+# Output a framed one-line message.
+AT_SETUP([AS@&address@hidden)
+AT_KEYWORDS([m4sh])
+
+AT_DATA_M4SH([script.as],
+[[AS_INIT
+echo
+AS_BOX([Send a simple message, to address@hidden)
+AS_BOX([Send a simple message, to address@hidden, [$])
+m4_define([msg], [$complex])
+complex='Not quite as simple |$[1]'
+AS_BOX([msg])
+AS_BOX([msg], [,])
+AS_EXIT(0)
+]])
+
+AT_CHECK_M4SH
+AT_CHECK([sed -n '/ -\{44\} /,/ -\{44\} /p' script ]dnl
+[| sed '1 s/.*## -/## -/; 3 s/- ##.*/- ##/'], [],
+[[## -------------------------------------------- ##
+## Send a simple message, to address@hidden ##
+## -------------------------------------------- ##
+]])
+
+AT_CHECK([$CONFIG_SHELL ./script], [], [[
+## -------------------------------------------- ##
+## Send a simple message, to address@hidden ##
+## -------------------------------------------- ##
+## $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ##
+## Send a simple message, to address@hidden ##
+## $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ##
+## ----------------------- ##
+## Not quite as simple |$1 ##
+## ----------------------- ##
+## ,,,,,,,,,,,,,,,,,,,,,,, ##
+## Not quite as simple |$1 ##
+## ,,,,,,,,,,,,,,,,,,,,,,, ##
+]])
+
+AT_CLEANUP
+
# Strip path from file.
AT_SETUP([AS@&address@hidden)
diff --git a/tests/m4sugar.at b/tests/m4sugar.at
index 7069309..50a7b00 100644
--- a/tests/m4sugar.at
+++ b/tests/m4sugar.at
@@ -1130,6 +1130,30 @@ a
AT_CLEANUP
+## ------------- ##
+## m4_text_box. ##
+## ------------- ##
+
+AT_SETUP([m4@&address@hidden)
+
+AT_CHECK_M4SUGAR_TEXT([[
+m4_text_box([a $1 @&address@hidden)
+m4_text_box([a $1 @&address@hidden, [$])
+m4_text_box([a $1 @&address@hidden, [,])
+]], [[
+## ------ ##
+## a $1 b ##
+## ------ ##
+## $$$$$$ ##
+## a $1 b ##
+## $$$$$$ ##
+## ,,,,,, ##
+## a $1 b ##
+## ,,,,,, ##
+]])
+
+AT_CLEANUP
+
## -------------- ##
## m4_text_wrap. ##
## -------------- ##
--
1.7.1
- [PATCH 0/7] AS_LITERAL_IF speedups, Eric Blake, 2010/07/02
- [PATCH 1/7] Optimize AC_DEFINE., Eric Blake, 2010/07/02
- [PATCH 5/7] Add tests for AS_BOX.,
Eric Blake <=
- [PATCH 2/7] Add AS_LITERAL_WORD_IF., Eric Blake, 2010/07/02
- [PATCH 6/7] Use new AS_LITERAL_IF argument when appropriate., Eric Blake, 2010/07/02
- [PATCH 7/7] Optimize AS_BOX., Eric Blake, 2010/07/02
- [PATCH 3/7] Use AS_LITERAL_WORD_IF as appropriate., Eric Blake, 2010/07/02
- [PATCH 4/7] Add optional argument to AS_LITERAL_IF., Eric Blake, 2010/07/02