fpc/installer/writeidx.pas
florian 4f3c7f7883 + writeidx program added
git-svn-id: trunk@1725 -
2005-11-12 11:01:27 +00:00

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.