changeset 22496:d7931cb69486

strcat: trim trailing whitespace when called with one character array (bug #49094) * strcat.m: Trim trailing whitespace when called with one character array. Ensure that numeric array is returned as character array. Add %!tests.
author Mike Miller <mtmiller@octave.org>
date Thu, 15 Sep 2016 08:56:14 -0700
parents ad815427f376
children a3f74fed899b
files scripts/strings/strcat.m
diffstat 1 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/strings/strcat.m	Thu Sep 15 08:59:14 2016 -0700
+++ b/scripts/strings/strcat.m	Thu Sep 15 08:56:14 2016 -0700
@@ -84,7 +84,13 @@
   if (nargin == 0)
     st = "";
   elseif (nargin == 1)
-    st = varargin{1};
+    if (iscellstr (varargin{1}))
+      st = varargin{1};
+    elseif (isreal (varargin{1}) || ischar (varargin{1}))
+      st = char (cellstr (varargin{1}));
+    else
+      error ("strcat: inputs must be strings or cells of strings");
+    endif
   else
     ## Convert to cells of strings
     uo = "uniformoutput";
@@ -144,6 +150,11 @@
 %!assert (all (strcmp (strcat ({"a", "bb"}, "ccc"), {"accc", "bbccc"})))
 %!assert (all (strcmp (strcat ("a", {"bb", "ccc"}), {"abb", "accc"})))
 
+## test with a single string or cell input
+%!assert <49094> (strcat ("foo    "), "foo")
+%!assert <49094> (strcat ({"foo"}), {"foo"})
+
+%!assert (strcat (1), char (1))
 %!assert (strcat (1, 2), strcat (char (1), char (2)))
 %!assert (strcat ("", 2), strcat ([], char (2)))