Mercurial > hg > ltpda
view m-toolbox/classes/+utils/@prog/mcell2str.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line source
% MCELL2STR recursively converts a cell-array to an executable string. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % DESCRIPTION: MCELL2STR recursively converts a cell-array to an executable % string. % % CALL: s = wrapstring(s, n) % % INPUTS: s - String % n - max length of each cell % % OUTPUTS: s - the wrapped cell string % % VERSION: $Id: mcell2str.m,v 1.8 2010/08/18 15:19:30 ingo Exp $ % % HISTORY: 05-02-2007 M Hewitson % Creation % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function fstr = mcell2str(c) %----- Check the input if ~iscell(c) error('### The input must be a cell but it is from the class [%s]', class(c)); end if isempty(c) fstr = sprintf('cell(%d,%d)', size(c, 1), size(c,2)); else fstr = '{'; Nj = size(c,1); Nk = size(c,2); for jj=1:Nj for kk=1:Nk if iscell(c{jj,kk}) %----- cell fstr = [fstr utils.prog.mcell2str(c{jj,kk}) ',']; elseif ischar(c{jj,kk}) %----- char fstr = sprintf('%s''%s'', ', fstr, strrep(c{jj, kk}, '''', '''''')); elseif isa(c{jj,kk}, 'sym') %----- sym fstr = [fstr 'sym(''' char(c{jj,kk}) '''),']; elseif isnumeric(c{jj,kk}) %----- numeric fstr = [fstr utils.helper.mat2str(c{jj,kk}) ',']; elseif islogical(c{jj,kk}) %----- logical fstr = [fstr utils.helper.mat2str(c{jj,kk}) ',']; elseif isjava(c{jj,kk}) %----- java if strcmp(class(c{jj,kk}), 'sun.util.calendar.ZoneInfo') fstr = [fstr 'java.util.TimeZone.getTimeZone(''' char(getID(c{jj,kk})) '''),']; else error('### Unknown java object [%s]', class(c{jj,kk})); end elseif isa(c{jj,kk}, 'ltpda_obj') %----- ltpda_obj if isa(c{jj,kk}, 'history') %----- history cl = history.getObjectClass(c{jj,kk}); ncl = numel(c{jj,kk}); cstr = '['; for ll=1:ncl cstr = [cstr sprintf('%s(%s)', cl, string(c{jj,kk}(ll).plistUsed)) ', ']; end cstr = strtrim(cstr); cstr(end) = ']'; fstr = sprintf('%s%s, ', fstr, cstr); else fstr = sprintf('%s%s, ', fstr, string(c{jj,kk})); end elseif isstruct(c{jj,kk}) %----- structure fn = fieldnames(c{jj,kk}); fstr = [fstr 'struct(']; for ii=1:numel(fn) obj = c{jj,kk}; if ischar(obj.(fn{ii})) fstr = [fstr '''' fn{ii} ''',''' obj.(fn{ii}) ''',']; elseif isnumeric(obj.(fn{ii})) || islogical(obj.(fn{ii})) fstr = [fstr '''' fn{ii} ''',' utils.helper.mat2str(obj.(fn{ii})) ',']; elseif isa(obj.(fn{ii}), 'sym') fstr = [fstr '''' fn{ii} ''',' 'sym(''' char(obj.(fn{ii})) '''),']; elseif isa(obj.(fn{ii}), 'ltpda_obj') fstr = [fstr '''' fn{ii} ''',' string(obj.(fn{ii})) ',']; end end fstr = [fstr(1:end-1) '),']; else disp(c{jj,kk}); error(['### unknown cell content: ' class(c{jj,kk})]); end end fstr = strtrim(fstr); if fstr(end) == ',' fstr = fstr(1:end-1); end fstr = [fstr ';']; end fstr = strtrim(fstr); if fstr(end) == ',' fstr = fstr(1:end-1); end if fstr(end) == ';' fstr = fstr(1:end-1); end fstr = [fstr '}']; end end