f Syntax10.Scn.FntOu8FoldElemsNew#Syntax10.Scn.Fntii eMod = "StampElems"; eType = "ElemDesc"; eDate = "s"; tagName = "XOBERONSTAMP"; tagDate = "DATE"; 8$8aSyntax10.Scn.Fnt:8FoldElemsNew=8| Date = ARRAY 32 OF CHAR; Stamp = POINTER TO StampDesc;  StampDesc = RECORD (HTML.ContainerDesc) date : Date; END; 88#Syntax10.Scn.Fnt>> handleTag : HTML.TagHandle; handleElem : HTML.ElemHandle; 8/:8#Syntax10.Scn.Fnt VAR type : Types.Type; BEGIN type := Types.TypeOf(e); RETURN (type # NIL) & (type.module # NIL) & (type.module.name = eMod) & (type.name = eType) END IsStamp;8$98#Syntax10.Scn.Fnt VAR store : Texts.FileMsg; BEGIN store.pos := Texts.ElemPos(e); store.id := Texts.store; Files.Set(store.r, Files.New(""), 0); e.handle(e, store) END Update;8;y8#Syntax10.Scn.Fntee BEGIN Ref.OpenPtr(e, r); WHILE (r.mode # Ref.End) & (r.name # eDate) DO r.Next END END LocateDate;8@8#Syntax10.Scn.FntOO VAR r : Ref.Rider; BEGIN LocateDate(e, r); r.ReadString(date) END GetDate;8@8#Syntax10.Scn.FntPP VAR r : Ref.Rider; BEGIN LocateDate(e, r); r.WriteString(date) END SetDate;8J}8#Syntax10.Scn.Fntaa BEGIN StampElems.Alloc; SetDate(Texts.new, st.date); Texts.WriteElem(w, Texts.new) END Handle;8[58#Syntax10.Scn.Fnt VAR st : Stamp; BEGIN IF tag.name = tagName THEN IF tag.start THEN NEW(st); st.nested := FALSE; st.plainText := FALSE; st.skipComments := TRUE; WHILE tag.attr # NIL DO IF tag.attr.name = tagDate THEN IF tag.attr.value # NIL THEN COPY(tag.attr.value^, st.date) ELSE st.date := "???" END END; tag.attr := tag.attr.next END; c := st END ELSE handleTag(w, tag, c) END END TagHandle;8?8#Syntax10.Scn.Fnt VAR tag : HTML.Tag; d : Date; i : INTEGER; BEGIN IF IsStamp(e) THEN Update(e); GetDate(e, d); tag.name := tagName; tag.start := TRUE; NEW(tag.attr); tag.attr.name := tagDate; NEW(tag.attr.value, LEN(d)); COPY(d, tag.attr.value^); HTML.StoreTag(r, tag); i := 0; WHILE d[i] # 0X DO HTML.StoreChar(r, d[i]); INC(i) END; tag.name := tagName; tag.start := FALSE; HTML.StoreTag(r, tag) ELSE handleElem(r, e) END END StampHandle;8 Syntax10b.Scn.Fnt8CSyntax10.Scn.Fnt Syntax10i.Scn.Fnt$> BEGIN (* only used to force loading of module *) END Install;8d8#Syntax10.Scn.Fntzz handleTag := HTML.handleTag; HTML.handleTag := TagHandle; handleElem := HTML.handleElem; HTML.handleElem := StampHandle8MODULE HTMLStamps; IMPORT Files, Texts, HTML, StampElems, Types, Ref; CONST  TYPE  VAR  PROCEDURE IsStamp(e : Texts.Elem) : BOOLEAN;  PROCEDURE Update(e : Texts.Elem);  PROCEDURE LocateDate(e : Texts.Elem; VAR r : Ref.Rider);  PROCEDURE GetDate (e : Texts.Elem; VAR date : ARRAY OF CHAR);  PROCEDURE SetDate (e : Texts.Elem; VAR date : ARRAY OF CHAR);  PROCEDURE (st : Stamp) Handle (VAR w : Texts.Writer; txt : Texts.Text);  PROCEDURE TagHandle (VAR w : Texts.Writer; VAR tag : HTML.Tag; VAR c : HTML.Container);  PROCEDURE StampHandle (VAR r : Files.Rider; e : Texts.Elem);  PROCEDURE Install*;  BEGIN  END HTMLStamps.