Mercurial > repos > public > sbplib
diff toString.m @ 40:54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 12 Oct 2015 10:38:53 +0200 |
parents | |
children | 92247f4bad2f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toString.m Mon Oct 12 10:38:53 2015 +0200 @@ -0,0 +1,61 @@ +% Takes a value and returns a string representation of that value. +% If syntaxFlag is true, a string with valid matlab syntax is returned. +function str = toString(value, syntaxFlag) + default_arg('syntaxFlag',false); + + if syntaxFlag + error('Not supported yet.') + end + + str = value2string(value); +end + +function str = value2string(value) + if isnumeric(value) || ischar(value) + str = mat2str(value); + elseif isstruct(value) + str = struct2string(value); + elseif iscell(value) + str = cell2string(value); + elseif isa('function_hande') + str = func2str(value); + else + warning('No string representation for class ''%s''', class(value)) + str = 'NO_STR_REP'; + end +end + +function str = cell2string(c) + len = length(c); + + if len == 0 + str = '{}'; + return + end + + str = '{'; + + for i =1:len-1 + str = [str sprintf('%s, ', value2string(c{i}))]; + end + str = [str sprintf('%s}', value2string(c{end}))]; +end + +function str = struct2string(s) + fn = fieldnames(s); + + if length(fn) == 0 + str = '{}'; + return + end + + str = '{'; + + for i = 1:length(fn) - 1 + value = s.(fn{i}); + str = [str sprintf('%s: %s, ',fn{i}, value2string(value))]; + end + value = s.(fn{end}); + str = [str sprintf('%s: %s}',fn{end}, value2string(value))]; +end +