MKCONTENTS Makes Contents file in current working directory. CALL: contstr = mkcontents(H1line,version,sort,cfile); contstr = character array containing the H1 lines of all the files in the directory. H1line = string inserted as the first line of the file specified in cfile. (default: same as the old version of cfile if it exists otherwise the directory name is used) version = Version number (default: version number of old cfile incremented by one otherwise '1.0.0') sort = 0 Do not sort by function name (default) 1 Sort by H1 line 2 Sort by function name 3 Sort by the inverse function name cfile = string containing the name of the file contstr should be written to. (Default 'Contents.m') If ischar(cfile)==0 then no file is made. It is worth noting that any editing done to a previous version of CFILE will be lost. Only the H1 line from the old version are copied to the new version. It is assumed that the 2 first lines of the old Contents file is of the form: % Toolbox Description % Version <Number> <Release> dd-mm-yyyy This form ensures that VER is able to read the version info from the Contents.m file. Example mkcontents('Test Toolbox',1.1,2) ver test See also geth1line, ver
Extracts the first comment line (the H1 line) of a m-file | |
Root directory of WAFO installation. | |
Create cell array. | |
Create character array (string). | |
Computer type. | |
Copy file or directory. | |
Current date as date string. | |
Remove trailing blanks. | |
Delete file or graphics object. | |
Difference and approximate derivative. | |
Execute DOS command and return result. | |
Check if variables or functions are defined. | |
Close file. | |
Read line from file, discard newline character. | |
Filename parts. | |
Directory separator for this platform. | |
Find one string within another. | |
Open file. | |
Build full filename from parts. | |
True for character array (string). | |
True for numeric arrays. | |
True for white space characters. | |
Convert string to lowercase. | |
Convert number to string. (Fast version) | |
Show (print) current working directory. | |
Convert string matrix to numeric array. | |
Compare strings ignoring case. | |
Find token in string. | |
Create or convert to structure array. | |
Convert string to uppercase. | |
Display warning message; disable or enable warning messages. | |
List MATLAB-specific files in directory. |
001 function contstr = mkcontents(h1line,wver,srt, cfile) 002 %MKCONTENTS Makes Contents file in current working directory. 003 % 004 % CALL: contstr = mkcontents(H1line,version,sort,cfile); 005 % 006 % contstr = character array containing the H1 lines of all the files in 007 % the directory. 008 % H1line = string inserted as the first line of the file specified in 009 % cfile. (default: same as the old version of cfile if it 010 % exists otherwise the directory name is used) 011 % version = Version number (default: version number of old cfile 012 % incremented by one otherwise '1.0.0') 013 % sort = 0 Do not sort by function name (default) 014 % 1 Sort by H1 line 015 % 2 Sort by function name 016 % 3 Sort by the inverse function name 017 % cfile = string containing the name of the file contstr should be 018 % written to. (Default 'Contents.m') 019 % If ischar(cfile)==0 then no file is made. 020 % 021 % It is worth noting that any editing done to a previous 022 % version of CFILE will be lost. Only the H1 line from the 023 % old version are copied to the new version. 024 % It is assumed that the 2 first lines of the old Contents file is of the 025 % form: 026 % 027 % % Toolbox Description 028 % % Version <Number> <Release> dd-mm-yyyy 029 % 030 % This form ensures that VER is able to read the version info from the 031 % Contents.m file. 032 % 033 % Example 034 % mkcontents('Test Toolbox',1.1,2) 035 % ver test 036 % 037 % See also geth1line, ver 038 039 % Tested on: Matlab 5.3 040 % History: 041 % revised pab 30.10.2003 042 % renamed from mkcont to mkcontents 043 % revised pab 7.12.2000 044 % - changed name to mkcontents 045 % - added H1txt, wver to input 046 % - more options for srt. 047 % Revised by pab 08.10.1999 048 % - added sorting 049 % - changed call to mkcont 050 % by jr 27.09.1999 051 052 if (nargin<3|isempty(srt)), 053 srt = 0; 054 end 055 if (nargin<4|isempty(cfile)), 056 cfile = 'Contents.m'; 057 elseif ischar(cfile) 058 cfile = [strtok(cfile,'.'),'.m' ]; 059 end 060 061 062 vinfo = []; 063 if ischar(cfile) & exist(fullfile(pwd,cfile)) ~= 0, 064 if isempty(vinfo), 065 vinfo = getverinfo(fullfile(pwd,cfile)); 066 end 067 disp(['There allready exist a ', cfile , ' in this directory']) 068 disp(['Copied this file to ', cfile 'old']) 069 %Make backup copy before overwriting cfile 070 copyfile(cfile,[cfile 'old']); 071 delete(cfile) 072 end 073 if nargin<1|isempty(h1line), 074 if ~isempty(vinfo)&~isempty(vinfo.Name) , % Use old H1 line 075 h1line = vinfo.Name; 076 else 077 [tname , dirname] = gettbname; 078 % Create new H1 line based on directory name 079 h1line = [ tname ' Toolbox ' dirname]; 080 end 081 end 082 083 if nargin<2|isempty(wver), 084 if isempty(vinfo), 085 wver = '1.0.0'; 086 else 087 wver = vinfo.Version; 088 end 089 ind = findstr(wver,'.'); 090 if isempty(ind), 091 wver = [wver '.1']; 092 else 093 vr = str2num(wver(ind(end)+1:end))+1; % update version 094 wver = [wver(1:ind(end)) num2str(vr)]; 095 end 096 elseif isnumeric(wver) 097 wver = num2str(wver); % make sure it is a string 098 end 099 100 101 contstr = ''; 102 file = what; 103 Nff = length(file.m); 104 if (Nff==0), 105 warning('No m-files found in this directory') 106 return 107 end 108 if strcmpi(computer,'pcwin') 109 file.m = lower(file.m); 110 end 111 112 113 Nf = size(char(file.m),2)-1; % Size of filenames 114 tmp = cell(Nff,1); 115 fn = tmp; 116 ind = zeros(Nff,1); 117 for ix=1:Nff 118 disp(['Processing file: ' file.m{ix}]) 119 tmp{ix} = geth1line(file.m{ix},1,Nf); % Extract a formatted H1 line 120 if ~isempty(tmp{ix})&~strcmpi(file.m{ix},'contents.m') 121 ind(ix) = 1; 122 fn{ix} = fliplr(file.m{ix}); 123 end 124 end 125 %tmp 126 ind = find(ind); 127 switch srt 128 case 1, % make a sorted character array 129 contstr1 = sort(tmp(ind)); 130 case 2, % Sort by file name 131 [t I] = sort(file.m(ind)); 132 contstr1 = tmp(ind(I)); 133 case 3, % Sort by the inverse filename 134 [t I] = sort(fn(ind)); 135 contstr1 = tmp(ind(I)); 136 otherwise % No sorting 137 contstr1 = tmp(ind); % make character array 138 end 139 contstr = char(contstr1); 140 if ~ischar(cfile), 141 disp(h1line) 142 disp(['Version ', wver,' ',date]) 143 disp(' ') 144 disp(' ') 145 disp(contstr), 146 return, 147 end 148 149 disp(['Creating ' cfile ' in ' pwd]) 150 fid = fopen(cfile,'wt'); % open a text file 151 % Write Header lines 152 prstr='%'; 153 fprintf(fid,'%s \n',['% ', h1line]); 154 fprintf(fid,'%s \n',['% Version ', wver,' ',date]); 155 fprintf(fid,'%s \n',prstr); 156 fprintf(fid,'%s \n',prstr); 157 158 % Write contents lines 159 if 1, 160 fprintf(fid,['%% %s \n'],contstr1{:}); 161 else 162 for ix=1:size(contstr,1), 163 fprintf(fid,['%s \n'],['% ', deblank(contstr(ix,:)) ] ); 164 end 165 end 166 fclose(fid); 167 % Change permissions on cfile 168 % only valid for Unix systems, no effect in Win32 systems 169 [s,msg] = dos(['chmod go+r ' cfile]); 170 171 return 172 173 174 175 function [tname, dirname] = gettbname; 176 177 wafop = waforoot; 178 ind = find(wafop==filesep); 179 wafodname = wafop(ind(end)+1:end); 180 pwdstr = pwd; 181 182 ind = findstr(pwdstr,wafodname); 183 184 if isempty(ind) 185 % name of directory is the name of the toolbox 186 [parentDir,tname] = fileparts(pwdstr); 187 tname = upper(tname); 188 dirname = ''; 189 else 190 tname = upper(wafodname); 191 Nwf = length(wafodname); 192 dirname = pwdstr(ind(1)+Nwf:end) ; % name of sub directory of toolbox 193 end 194 return 195 196 function s = getverinfo(cfile) 197 s = struct('Name','','Version',{},'Release',{},'Date',{}); 198 199 fid = fopen([strtok(cfile,'.'),'.m'],'rt'); 200 if fid==-1, 201 disp(['Unable to open ' cfile ]) 202 disp('Version unknown') 203 return 204 end 205 206 h1line = deblank(fgetl(fid)); % H1 line 207 vline = deblank(fgetl(fid)); % version line 208 fclose(fid); 209 210 [r,c] = find(h1line ~= '%' & ~isspace(h1line)); 211 if ~isempty(c), 212 % remove leading percent signs and trailing blanks 213 [r,c2] = find(~isspace(h1line)); 214 h1line = h1line(:,min(c):max(c2)); 215 end 216 s(1).Name = h1line; 217 %h1line = geth1line(cfile); 218 219 % Look for Version 220 k = findstr('version',lower(vline)); 221 if isempty(k), 222 disp(['Not correct format of ' cfile ]) 223 disp('version number unknown') 224 return 225 end 226 ind = diff(~isspace(vline)); 227 blancstrtstp = find([0 abs(ind)] > 0.5); 228 indbl = blancstrtstp( blancstrtstp > k); 229 230 s.Version = vline(indbl(2):indbl(3)-1); 231 232 Nbl = length(indbl); 233 if (Nbl>=3), 234 s.Date = vline(indbl(Nbl):end); 235 end 236 237 if (Nbl-1>=3), 238 s.Release = vline(indbl(Nbl-1):indbl(Nbl)-1); 239 end 240 241 return 242 243
Comments or corrections to the WAFO group