mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 21:09:38 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| {
 | |
|     Help program to generate html help index
 | |
| 
 | |
|     This file is part of Free Pascal.
 | |
|     Copyright (c) 1993-2005 by Florian Klaempfl
 | |
|     member of the Free Pascal development team
 | |
| 
 | |
|     See the file COPYING.FPC, included in this distribution,
 | |
|     for details about the copyright.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
|  **********************************************************************}
 | |
| {$mode objfpc}
 | |
|   uses
 | |
|     insthelp,sysutils,dos,objects,WHTMLScn;
 | |
| 
 | |
|   type
 | |
|     PFPHTMLFileLinkScanner = ^TFPHTMLFileLinkScanner;
 | |
|     TFPHTMLFileLinkScanner = object(THTMLFileLinkScanner)
 | |
|       function    CheckURL(const URL: string): boolean; virtual;
 | |
|       function    CheckText(const Text: string): boolean; virtual;
 | |
|       procedure   ProcessDoc(Doc: PHTMLLinkScanFile); virtual;
 | |
|     end;
 | |
| 
 | |
| 
 | |
|   const
 | |
|     HTMLIndexExt = '.htx';
 | |
| 
 | |
| 
 | |
|   procedure TFPHTMLFileLinkScanner.ProcessDoc(Doc: PHTMLLinkScanFile);
 | |
|     begin
 | |
|     end;
 | |
| 
 | |
| 
 | |
|   function TFPHTMLFileLinkScanner.CheckURL(const URL: string): boolean;
 | |
|     var OK: boolean;
 | |
|     const HTTPPrefix = 'http:';
 | |
|           FTPPrefix  = 'ftp:';
 | |
|     begin
 | |
|       OK:=inherited CheckURL(URL);
 | |
|       if OK then OK:=DirAndNameOf(URL)<>'';
 | |
|       if OK then OK:=CompareText(copy(ExtOf(URL),1,4),'.HTM')=0;
 | |
|       if OK then OK:=CompareText(copy(URL,1,length(HTTPPrefix)),HTTPPrefix)<>0;
 | |
|       if OK then OK:=CompareText(copy(URL,1,length(FTPPrefix)),FTPPrefix)<>0;
 | |
|       CheckURL:=OK;
 | |
|     end;
 | |
| 
 | |
| 
 | |
|   function TFPHTMLFileLinkScanner.CheckText(const Text: string): boolean;
 | |
|     var OK: boolean;
 | |
|       S: string;
 | |
|     begin
 | |
|       S:=Trim(Text);
 | |
|       OK:=(S<>'') and (copy(S,1,1)<>'[');
 | |
|       CheckText:=OK;
 | |
|     end;
 | |
| 
 | |
| 
 | |
|   procedure doerror(const s : ansistring);
 | |
|     begin
 | |
|       writeln(s);
 | |
|       writeln;
 | |
|       writeln('Press ENTER to continue');
 | |
|       readln;
 | |
|     end;
 | |
| 
 | |
| 
 | |
|   procedure writehlpindex(filename : ansistring);
 | |
| 
 | |
|     var
 | |
|       LS : PFPHTMLFileLinkScanner;
 | |
|       BS : PBufStream;
 | |
|       Re : Word;
 | |
|       params : array[0..0] of pointer;
 | |
|       dir    : searchrec;
 | |
| 
 | |
|     begin
 | |
|       writeln('Creating HTML index file, please wait ...');
 | |
|       New(LS, Init(DirOf(FileName)));
 | |
|       LS^.ProcessDocument(FileName,[soSubDocsOnly]);
 | |
|       if LS^.GetDocumentCount=0 then
 | |
|         doerror(format('Problem creating help index %1, aborting',[filename]))
 | |
|       else
 | |
|         begin
 | |
|           FileName:=DirAndNameOf(FileName)+HTMLIndexExt;
 | |
|           begin
 | |
|             New(BS, Init(FileName, stCreate, 4096));
 | |
|             if not(Assigned(BS)) then
 | |
|               doerror(format('Error while writing help index! '+
 | |
|                 'No help index is created',[filename]))
 | |
|             else
 | |
|               begin
 | |
|                 LS^.StoreDocuments(BS^);
 | |
|                 if BS^.Status<>stOK then
 | |
|                   doerror(format('Error while writing help index! '+
 | |
|                     'No help index is created',[filename]));
 | |
|                 Dispose(BS, Done);
 | |
|               end;
 | |
|           end;
 | |
|         end;
 | |
|       Dispose(LS, Done);
 | |
|     end;
 | |
| 
 | |
|   begin
 | |
|     if paramcount<>1 then
 | |
|       writeln('Usage: writeidx <index name>')
 | |
|     else
 | |
|       writehlpindex(paramstr(1));
 | |
|   end.
 | 
