function searchdb(goUp) % Website search database generation % Generate javascript searchdb.js that serves as database for % javascript-based site search engine % Version 1.0 % Last modified 26.12.01 % For Matlab 5.x % File searchdb.m % Copyright (c) 2000-2001 Igor Kagan % kigor@tx.technion.ac.il % http://igoresha.virtualave.net % % Usage: In Matlab Command Window, change to your site root directory and type: % searchdb (first add the directory containing searchdb.m to Matlab search path) % % Description: % This function uses ... % html tags % % to fill the entry for each html/htm file. % If these tags are not specified, searchdb will include filename for this file's entry % searchdb will create (and _overwrite_ if file with this name already exists!) % file searchdb.js, which can be edited in any HTML/text % editor later, if there is a need to do so. % % Note that links will _not_ work while you are in your local hard drive! % Once you upload this file in the root dir of your server, they will work. % Changes history % Version 1.0 - first version global smc nfiles ndirs baseurl % need access these variables during recursive calls if nargin < 1, % add to path curdir = cd; matlabpath = path; if isempty(findstr(lower(matlabpath),lower(curdir))), path(matlabpath,curdir); end; % define startup parameters baseurl = pwd; goUp = 0; smc = []; % js contents nfiles = 0; ndirs = 1; % first is root dir startentry = ['var item = new Array(); c=-1;' sprintf('\n')]; smc = [smc startentry]; end % get current dir listing d = dir; dirname = [strrep(pwd,baseurl,'') '']; % for root dir dirname = [strrep(dirname,'\','/')]; if strcmp(dirname,''), dirname = ''; else dirname = [dirname,'/']; end direntry = ['//***',dirname,'***' sprintf('\n')]; ndirs = ndirs + 1; smc = [smc direntry]; d = d(3:length(d)); [t,ind]=sort(cat(1,d.isdir)); d = d(ind); for i=1:size(d,1), if d(i).isdir, cd(d(i).name); searchdb(1); else if findstr(d(i).name,'.htm'), disp(d(i).name); fidr=fopen(d(i).name,'r'); F = fread(fidr); fclose(fidr); F = F(find(F~=10 & F~=13 & F~=9)); S = char(F'); s = lower(S); Title=''; % find title i1 = findstr(s,''); % length 7 i2 = findstr(s,''); Title = S(i1+7:i2-1); % find description i1 = findstr(s,''); Description = S(i1+34:i1+i2(1)-1); else Description = ''; end % find keywords i1 = findstr(s,''); Keywords = S(i1+31:i1+i2(1)-1); else Keywords = ''; end % write file entry fileentry = ['c++; item[c]=new Array("',d(i).name,'","',dirname,'","',Title,'","',Keywords,'","',Description,'");' sprintf('\n')]; nfiles = nfiles + 1; smc = [smc fileentry]; end end end if (goUp), cd .. else % finish html finishentry = ['// ',num2str(nfiles),' files in ',num2str(ndirs),'dirs included']; smc = [smc finishentry]; % write searchdb.js file if exist([cd '\searchdb.js']), !del searchdb.js end fidw = fopen('searchdb.js','wt'); fwrite(fidw,smc,'char'); fclose(fidw); end return