changeset 33450:f86b8eb0c654 stable

improve default display of classdef properties (bug #62432) * ov-classdef.cc (octave_classdef::print_raw): Use octave_value::short_disp to display numeric, logical, and string values that have only two dimensions and one row.
author John W. Eaton <jwe@octave.org>
date Wed, 24 Apr 2024 12:55:22 -0400
parents f428a432ed4f
children 35ecb8a019e3 317fa0e5c8de
files libinterp/octave-value/ov-classdef.cc
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/octave-value/ov-classdef.cc	Mon Apr 22 17:28:23 2024 +0200
+++ b/libinterp/octave-value/ov-classdef.cc	Wed Apr 24 12:55:22 2024 -0400
@@ -395,16 +395,17 @@
             os << "  " << nm;
           else
             {
+              os << std::setw (max_len+2) << nm << ": ";
+
               octave_value val = prop.get_value (m_object, false);
-              dim_vector dims = val.dims ();
 
-              os << std::setw (max_len+2) << nm << ": ";
-              if (val.is_string ())
-                os << val.string_value ();
-              else if (val.islogical ())
-                os << val.bool_value ();
+              if (val.ndims () == 2 && val.rows () == 1 && (val.isnumeric () || val.islogical () || val.is_string ()))
+                val.short_disp (os);
               else
-                os << "[" << dims.str () << " " << val.class_name () << "]";
+                {
+                  dim_vector dims = val.dims ();
+                  os << "[" << dims.str () << " " << val.class_name () << "]";
+                }
             }
 
           newline (os);