0001 function tpl = set(tpl,action,varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 error(nargchk(3,5,nargin));
0014
0015 switch lower(action)
0016 case 'root'
0017 error(nargchk(3,3,nargin));
0018 if exist(varargin{1},'dir')
0019 tpl.root = varargin{1};
0020 else
0021 error('[Template] No such directory.');
0022 end
0023 case 'unknowns'
0024 error(nargchk(3,3,nargin));
0025 if ismember(varargin{1},{'remove' 'comment' 'keep'})
0026 tpl.unknowns = varargin{1};
0027 else
0028 error('[Template] Unknowns: ''remove'', ''comment'' or ''keep''.');
0029 end
0030 case 'file'
0031 error(nargchk(4,4,nargin));
0032 if iscellstr(varargin{1})
0033 for i=1:length(varargin{1})
0034 ind = find(ismember(tpl.handles,varargin{1}{i}));
0035 if isempty(ind)
0036 tpl.handles{end+1} = varargin{1}{i};
0037 if strcmp(varargin{2}{i}(1),filesep)
0038 tpl.file{end+1} = varargin{2}{i};
0039 else
0040 tpl.file{end+1} = fullfile(tpl.root,varargin{2}{i});
0041 end
0042 else
0043 if strcmp(varargin{2}{i}(1),filesep)
0044 tpl.file{ind} = varargin{2}{i};
0045 else
0046 tpl.file{ind} = fullfile(tpl.root,varargin{2}{i});
0047 end
0048 end
0049 end
0050 elseif ischar(varargin{1})
0051 tpl = set(tpl,'file',cellstr(varargin{1}),cellstr(varargin{2}));
0052 else
0053 error('[Template] Badly formed handles.');
0054 end
0055 case 'block'
0056 error(nargchk(4,5,nargin));
0057 tpl = loadtpl(tpl,varargin{1});
0058 if nargin == 4
0059 name = varargin{2};
0060 else
0061 name = varargin{3};
0062 end
0063 str = get(tpl,'var',varargin{1});
0064 blk = '';
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077 indbegin = findstr(str,['<!-- BEGIN ' varargin{2} ' -->']);
0078 indend = findstr(str,['<!-- END ' varargin{2} ' -->']);
0079 if ~isempty(indbegin) & ~isempty(indend)
0080 blk = str(indbegin+length(['<!-- BEGIN ' varargin{2} ' -->'])+1:indend-1);
0081 str = [str(1:indbegin-1) '{' name '}' str(indend+length(['<!-- END ' varargin{2} ' -->'])+1:end)];
0082 end
0083
0084
0085 tpl = set(tpl,'var',varargin{2},blk);
0086 tpl = set(tpl,'var',varargin{1},str);
0087 case 'var'
0088 error(nargchk(3,4,nargin));
0089 if iscellstr(varargin{1})
0090 for i=1:length(varargin{1})
0091 ind = find(ismember(tpl.varkeys,varargin{1}{i}));
0092 if isempty(ind)
0093 tpl.varkeys{end+1} = varargin{1}{i};
0094 if nargin == 4
0095 tpl.varvals{end+1} = varargin{2}{i};
0096 else
0097 tpl.varvals{end+1} = '';
0098 end
0099 else
0100 tpl.varvals{ind} = varargin{2}{i};
0101 end
0102 end
0103 elseif ischar(varargin{1})
0104 tpl = set(tpl,'var',cellstr(varargin{1}),cellstr(varargin{2}));
0105 else
0106 error('[Template] Badly formed variable names.');
0107 end
0108 otherwise
0109 error('[Template] Unknown action to perform.');
0110 end