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