Mercurial > hg > ltpda
diff m-toolbox/classes/+utils/@prog/wrapstring.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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/+utils/@prog/wrapstring.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,67 @@ +function s = wrapstring(s, n) +% WRAPSTRING wraps a string to a cell array of strings with each cell less than n characters long. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: WRAPSTRING wraps a string to a cell array of strings with each +% cell less than n characters long. +% +% CALL: s = wrapstring(s, n) +% +% INPUTS: s - String +% n - max length of each cell +% +% OUTPUTS: s - the wrapped cell string +% +% VERSION: $Id: wrapstring.m,v 1.1 2008/06/18 13:35:11 hewitson Exp $ +% +% HISTORY: 05-02-2007 M Hewitson +% Creation +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% convert to a cell if necessary +if ischar(s) + s = [cellstr(s)]; +end + +% check it makes sense to proceed. +x = splitstring(s{end}, n); +if strcmp(char(x), char(s)) + return +end + +% now keep splitting until we are happy. +while length(s{end}) >= n + if length(s) > 1 + s1 = s(1:end-1); + else + s1 = []; + end + s2 = splitstring(s{end},n); + if isempty(s2) + break + end + s = [s1 s2]; +end + +%-------------------------------------------------------------------------- +% split string at first ' ' or ',' +function s = splitstring(s,n) + + +% disp(sprintf('- splitting %s', s)) +fi = 0; +idx = find(s==' ' | s == ',' | s == '(' | s == '='); +if max(idx) > n + for i=1:length(idx) + if idx(i) > n & fi==0 + fi = i; + end + end + j = idx(fi); + s = [cellstr(strtrim(s(1:j))) cellstr(strtrim(s(j+1:end)))]; +else + s = []; + return; +end