Program asc2stf; { Song Text Format (STF) Helper } Uses SysUtils, Algemeen; const klinkers : set of char = ['a','e','i','o','u','y' ,'A','E','I','O','U','Y']; var Bron, Doel : TextFile; procedure Some_Help; begin Writeln('ASC2STF'); Writeln; Writeln('PoorMan''s Hyphenation on ASCII texts'); Writeln; writeln('Syntax: [program] [ITF] [OTF]'); Writeln; Writeln('ITF = name of Input TextFile (ASCII)'); Writeln('OTF = name of Output TextFile (STF)'); end; procedure Read_Parameters(var OK : boolean); var naam : string; begin OK := true; if ParamCount <> 2 then begin Some_Help; OK := false; Exit; end; naam := ParamStr(1); if not FileExists(naam) then begin Writeln(naam + ': does Not exist'); OK := false; Exit; end; AssignFile(Bron, naam); naam := ParamStr(2); AssignFile(Doel, naam); end; function scheiden(regel : string) : string; var R,k,z : integer; zingen : string; c,v : char; streep,eerst : boolean; begin R := Length(regel); setLength(zingen,2*R); c := regel[1]; zingen[1] := c; z := 1; eerst := not (c in klinkers); for k := 2 to R do begin v := c; c := regel[k]; streep := (not (v in klinkers)) and (c in klinkers) and (not eerst); if (c in klinkers) then eerst := false; if streep then begin z := z + 1; zingen[z] := '_'; end; z := z + 1; zingen[z] := regel[k]; end; SetLength(zingen,z); scheiden := zingen; end; procedure HoofdRoutine; var regel : string; OK : boolean; woord,greep : lijst; i : integer; begin Read_Parameters(OK); if not OK then Exit; Reset(Bron); Rewrite(Doel); SetLength(woord,0); SetLength(greep,0); while not EoF(Bron) do begin Readln(Bron,regel); woord := Woorden(regel); for i := 0 to Length(woord)-1 do begin woord[i] := vervang(woord[i],'ij','yy'); woord[i] := scheiden(woord[i]); woord[i] := vervang(woord[i],'yy','ij'); end; regel := Zinvol(woord); Writeln(Doel,regel); end; Close(Doel); Close(Bron); end; begin HoofdRoutine; end.