Mercurial > repos > public > sbplib
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 + + +