changeset 466:e1a59aafe99c

Add structArray to toString()
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 01 Aug 2017 12:32:25 +0200
parents a5cebdaad10b
children 8d3c3da3a589 77460b6babe1 3c062cc72986
files toString.m
diffstat 1 files changed, 37 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/toString.m	Tue Aug 01 12:24:52 2017 +0200
+++ b/toString.m	Tue Aug 01 12:32:25 2017 +0200
@@ -51,6 +51,14 @@
 end
 
 function str = struct2string(s)
+    if isscalar(s)
+        str = structScalar2string(s);
+    else
+        str = structArray2string(s);
+    end
+end
+
+function str = structScalar2string(s)
     fn = fieldnames(s);
 
     if length(fn) == 0
@@ -68,3 +76,32 @@
     str = [str sprintf('%s: %s}',fn{end}, value2string(value))];
 end
 
+function str = structArray2string(s)
+    fn = fieldnames(s);
+
+    if length(fn) == 0
+        str = '{}';
+        return
+    end
+
+    stringArray = cell(length(s)+1, length(fn)+1);
+
+    stringArray(1,2:end) = fn;
+
+    for i = 1:length(s)
+        stringArray{i+1,1} = i;
+        for j = 1:length(fn)
+            valueStr = value2string(s(i).(fn{j}));
+            stringArray{i+1,j+1} = valueStr;
+        end
+    end
+
+    tt = TextTable(stringArray);
+    tt.fmtArray(2:end, 1) = {'%d'};
+    tt.vertDiv = [1];
+    tt.horzDiv = [1];
+    str = tt.toString();
+end
+
+
+