home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
coders
/
jËzyki_programowania
/
oberon
/
system
/
textloc.mod
(
.txt
)
< prev
next >
Wrap
Oberon Text
|
1977-12-31
|
1KB
|
37 lines
Syntax10.Scn.Fnt
Syntax10i.Scn.Fnt
StampElems
Alloc
7 Feb 96
Syntax10m.Scn.Fnt
MODULE TextLoc; (** SHML 7 Feb 96 /
(** a LocElems searcher, looking for section headers *)
IMPORT Fonts, Texts, TextFrames, LocElems;
PROCEDURE Search(e: LocElems.Elem; t: Texts.Text; VAR sort(*out*): BOOLEAN);
VAR r: Texts.Reader; ch: CHAR; i: INTEGER; str: ARRAY LocElems.StrLen OF CHAR;
BEGIN
Texts.OpenReader(r, t, 0);
LOOP
REPEAT Texts.ReadElem(r) UNTIL r.eot OR (r.elem # NIL) & (r.elem IS TextFrames.Parc);
IF r.eot THEN EXIT END;
REPEAT Texts.Read(r, ch) UNTIL r.eot OR (ch > " ");
IF r.eot THEN EXIT END;
i := -1;
REPEAT INC(i) UNTIL (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") OR (r.fnt.name[i] = 0X);
IF (r.fnt.height > Fonts.Default.height) OR (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") THEN
i := 0;
WHILE (ch > 0DX) & (i < LocElems.StrLen-1) DO str[i] := ch; INC(i); Texts.Read(r, ch) END;
str[i] := 0X;
IF ch <= 0DX THEN (* headers are terminated with a 0DX *)
IF LocElems.Append(e, str, Texts.Pos(r)-1) THEN EXIT END
END
END
END;
sort := FALSE
END Search;
PROCEDURE Install*;
BEGIN LocElems.Install("Text", Search)
END Install;
END TextLoc.
TextLoc.Install