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 >
Oberon Text  |  1977-12-31  |  1KB  |  37 lines

  1. Syntax10.Scn.Fnt
  2. Syntax10i.Scn.Fnt
  3. StampElems
  4. Alloc
  5. 7 Feb 96
  6. Syntax10m.Scn.Fnt
  7. MODULE TextLoc;    (** SHML 7 Feb 96 / 
  8.     (** a LocElems searcher, looking for section headers *)
  9.     IMPORT Fonts, Texts, TextFrames, LocElems;
  10.     PROCEDURE Search(e: LocElems.Elem; t: Texts.Text; VAR sort(*out*): BOOLEAN);
  11.         VAR r: Texts.Reader; ch: CHAR; i: INTEGER; str: ARRAY LocElems.StrLen OF CHAR;
  12.     BEGIN
  13.         Texts.OpenReader(r, t, 0);
  14.         LOOP
  15.             REPEAT Texts.ReadElem(r) UNTIL r.eot OR (r.elem # NIL) & (r.elem IS TextFrames.Parc);
  16.             IF r.eot THEN EXIT  END;
  17.             REPEAT Texts.Read(r, ch) UNTIL r.eot OR (ch > " ");
  18.             IF r.eot THEN EXIT END;
  19.             i := -1;
  20.             REPEAT INC(i) UNTIL (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") OR (r.fnt.name[i] = 0X);
  21.             IF (r.fnt.height > Fonts.Default.height) OR (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") THEN
  22.                 i := 0;
  23.                 WHILE (ch > 0DX) & (i < LocElems.StrLen-1) DO str[i] := ch; INC(i); Texts.Read(r, ch) END;
  24.                 str[i] := 0X;
  25.                 IF ch <= 0DX THEN    (* headers are terminated with a 0DX *)
  26.                     IF LocElems.Append(e, str, Texts.Pos(r)-1) THEN EXIT END
  27.                 END
  28.             END
  29.         END;
  30.         sort := FALSE
  31.     END Search;
  32.     PROCEDURE Install*;
  33.     BEGIN LocElems.Install("Text", Search)
  34.     END Install;
  35. END TextLoc.
  36. TextLoc.Install
  37.