mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 01:38:03 +02: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.
|