program HTMLindx { N.B. Recognises @merlyn } ; uses Dos ; procedure Replace(var St : string ; const C : char ; const Ent : string) ; var B : byte ; begin repeat B := Pos(C, St) ; if B=0 then BREAK ; Delete(St, B, 1) ; Insert(Ent, St, B) ; until false end {Replace} ; var F, G : text ; St, T : string ; B : byte ; const FNin : PathStr = '00INDEX.TXT' ; var DS : DirStr ; NS : NameStr ; ES : ExtStr ; BEGIN ; Writeln('HTMLindx - www.merlyn.demon.co.uk >= 2007-12-05') ; if ParamCount>0 then FNin := ParamStr(1) ; Write(FNin, #32) ; Assign(F, FNin) ; Reset(F) ; FSplit(FNin, DS, NS, ES) ; St := DS+NS+'.HTM' ; Writeln('-> ', St) ; Assign(G, St) ; Rewrite(G) ; Writeln(G, '') ; Writeln(G, '') ; Writeln(G) ; Writeln(G, '') ; Writeln(G, '') ; { Writeln(G, 'Created from ', St, '') ; } Writeln(G, 'Created from ', FNin, '') ; Writeln(G, '') ; Write(G, '') ; Writeln(G, '') ; Writeln(G, '') ; Writeln(G) ; Writeln(G, '') ; Writeln(G) ; Writeln(G, '

To Foot ;') ; Writeln(G, '  to Home Page

') ; Writeln(G) ; { Writeln(G, '

Index of Sources and Executables

') ; } Writeln(G, '

Generated by HTMLindx :

') ; Writeln(G) ; Writeln(G, '
') ; Writeln(G) ; Writeln(G, '
') ;

while not EoF(F) do begin St[1] := #32 ; Readln(F, St) ;

  if Pos('href', St)=0 then begin
    Replace(St, '&', #228'amp;') ; Replace(St, #228, '&') ;
    Replace(St, '>', '>') ;
    Replace(St, '<', '<') ;
    end ;

  B := Pos('@merlyn', St) ;
  if B>0 then begin Delete(St, B, 1) ; Insert('@', St, B) end ;

  if St[1]>#32 then begin B := Pos(#32, St) ; if B=0 then B := 255 ;
    T := Copy(St, 1, Pred(B)) ; Delete(St, 1, Pred(B)) ;
    for B := 1 to Length(T) do
      if T[B] in ['A'..'Z'] then Inc(T[B], 32) ;
    Write(G, '', T, '') end ;
  Writeln(G, St) ;
  end ;

Writeln(G, '
'^M^J'
') ; Writeln(G, '

To Head

') ; Writeln(G, ''^M^J'') ; Close(G) ; Close(F) ; Writeln('Done.') ; END.