unit HTML;
interface
function GetIt(t,t1,t2: string; s: integer): string;
procedure ConvEntities(var t: string);
procedure Change(var t:string;told,tnew: string);
implementation
function GetIt(t,t1,t2: string; s: integer): string; { Liefert den Wert zwischen t1 und t2 in t ab Position s }
var i: integer;
TargetReached: boolean;
Cache: string;
begin
Cache := '';
TargetReached := false;
for i:=s to Length(t) do begin
if Copy(t,i,Length(t2))=t2 then TargetReached:=false;
if TargetReached then Cache:=Cache+Copy(t,i,1);
if Copy(t,i,Length(t1))=t1 then TargetReached:=true;
end;
GetIt := Cache;
end;
procedure Change(var t:string;told,tnew: string); { ndert jegliche Vorkommen von told in t in tnew um }
var i,sk: integer;
nto: string;
Cache: string;
begin
nto:='&'+told+';';
Cache := '';
sk := 0;
for i:=1 to Length(t) do begin
if Copy(t,i,Length(nto))=nto then begin
Cache:=Cache+tnew;
sk:=Length(nto);
end else if sk=0 then Cache:=Cache+Copy(t,i,1);
if sk>0 then Dec(sk);
end;
t := Cache;
end;
procedure ConvEntities(var t: string); { Konvertiert die Entities, sofern welche vorkommen }
var i,j: integer;
e: string;
a,b: integer;
stat: boolean;
Cache: string;
begin
Cache := t;
for i:=0 to Length(t) do begin
if Copy(t,i,1)='&' then begin
for j:=i to Length(t) do begin
if Copy(t,j,1)=';' then begin
e:=Copy(t,i+1,j-i-1);
if e='aacute' then Change(Cache,e,'');
if e='Aacute' then Change(Cache,e,'');
if e='acirc' then Change(Cache,e,'');
if e='Acirc' then Change(Cache,e,'');
if e='agrave' then Change(Cache,e,'');
if e='Agrave' then Change(Cache,e,'');
if e='aring' then Change(Cache,e,'');
if e='Aring' then Change(Cache,e,'');
if e='atilde' then Change(Cache,e,'');
if e='Atilde' then Change(Cache,e,'');
if e='auml' then Change(Cache,e,'');
if e='Auml' then Change(Cache,e,'');
if e='aelig' then Change(Cache,e,'');
if e='AElig' then Change(Cache,e,'');
if e='ccedil' then Change(Cache,e,'');
if e='Ccedil' then Change(Cache,e,'');
if e='eacute' then Change(Cache,e,'');
if e='Eacute' then Change(Cache,e,'');
if e='ecirc' then Change(Cache,e,'');
if e='Ecirc' then Change(Cache,e,'');
if e='egrave' then Change(Cache,e,'');
if e='Egrave' then Change(Cache,e,'');
if e='euml' then Change(Cache,e,'');
if e='Euml' then Change(Cache,e,'');
if e='eth' then Change(Cache,e,'');
if e='ETH' then Change(Cache,e,'');
if e='iacute' then Change(Cache,e,'');
if e='Iacute' then Change(Cache,e,'');
if e='icirc' then Change(Cache,e,'');
if e='Icirc' then Change(Cache,e,'');
if e='igrave' then Change(Cache,e,'');
if e='Igrave' then Change(Cache,e,'');
if e='iuml' then Change(Cache,e,'');
if e='Iuml' then Change(Cache,e,'');
if e='ntilde' then Change(Cache,e,'');
if e='Ntilde' then Change(Cache,e,'');
if e='oacute' then Change(Cache,e,'');
if e='Oacute' then Change(Cache,e,'');
if e='ocirc' then Change(Cache,e,'');
if e='Ocirc' then Change(Cache,e,'');
if e='ograve' then Change(Cache,e,'');
if e='Ograve' then Change(Cache,e,'');
if e='oslash' then Change(Cache,e,'');
if e='Oslash' then Change(Cache,e,'');
if e='otilde' then Change(Cache,e,'');
if e='Otilde' then Change(Cache,e,'');
if e='ouml' then Change(Cache,e,'');
if e='Ouml' then Change(Cache,e,'');
if e='thorn' then Change(Cache,e,'');
if e='THORN' then Change(Cache,e,'');
if e='uacute' then Change(Cache,e,'');
if e='Uacute' then Change(Cache,e,'');
if e='ucirc' then Change(Cache,e,'');
if e='Ucirc' then Change(Cache,e,'');
if e='ugrave' then Change(Cache,e,'');
if e='Ugrave' then Change(Cache,e,'');
if e='uuml' then Change(Cache,e,'');
if e='Uuml' then Change(Cache,e,'');
if e='yacute' then Change(Cache,e,'');
if e='Yacute' then Change(Cache,e,'');
if e='copy' then Change(Cache,e,'(C)');
if e='nbsp' then Change(Cache,e,' ');
if e='amp' then Change(Cache,e,'&');
if e='szlig' then Change(Cache,e,'');
if e='acute' then Change(Cache,e,'');
if e='cedil' then Change(Cache,e,'');
if e='grave' then Change(Cache,e,'`');
if e='uml' then Change(Cache,e,'');
if e='ordf' then Change(Cache,e,'');
if e='ordm' then Change(Cache,e,'');
if e='shy' then Change(Cache,e,'');
if e='macr' then Change(Cache,e,'');
if e='not' then Change(Cache,e,'');
if e='times' then Change(Cache,e,'');
if e='divide' then Change(Cache,e,'');
if e='cent' then Change(Cache,e,'');
if e='pound' then Change(Cache,e,'');
if e='yen' then Change(Cache,e,'');
if e='brvbar' then Change(Cache,e,'|');
if e='reg' then Change(Cache,e,'(R)');
if e='deg' then Change(Cache,e,'');
if e='plusmn' then Change(Cache,e,'');
if e='micro' then Change(Cache,e,'');
if e='para' then Change(Cache,e,'');
if e='sect' then Change(Cache,e,'');
if e='middot' then Change(Cache,e,'');
if e='frac14' then Change(Cache,e,'');
if e='frac12' then Change(Cache,e,'');
if e='frac34' then Change(Cache,e,'');
if e='sup1' then Change(Cache,e,'');
if e='sup2' then Change(Cache,e,'');
if e='sup3' then Change(Cache,e,'');
if e='iquest' then Change(Cache,e,'');
if e='iexcl' then Change(Cache,e,'');
if e='laquo' then Change(Cache,e,'');
if e='raquo' then Change(Cache,e,'');
if e='curren' then Change(Cache,e,'');
stat:=true;
end;
if stat then begin
stat:=false;
break;
end;
end;
end;
end;
t:=Cache;
end;
begin
WriteLn(' Loading Unit: HTML - geschrieben von RoboCop of nOOb');
end.