MODULE ObxConv;
(**
project = "BlackBox"
organization = "www.oberon.ch"
contributors = "Oberon microsystems"
version = "System/Rsrc/About"
copyright = "System/Rsrc/About"
license = "Docu/BB-License"
changes = ""
issues = ""
**)
IMPORT Files, Stores, TextModels, TextViews;
PROCEDURE ImportText* (f: Files.File; OUT s: Stores.Store);
VAR r: Stores.Reader; t: TextModels.Model; w: TextModels.Writer;
byte: SHORTCHAR; ch: CHAR; len: INTEGER;
BEGIN
ASSERT(f # NIL, 20); ASSERT(s = NIL, 21);
(* ASSERT(f.type = "TEXT", 22); (* the type is platform specific*) *)
r.ConnectTo(f); r.SetPos(0);
len := f.Length();
t := TextModels.dir.New(); w := t.NewWriter(NIL);
WHILE len # 0 DO
r.ReadSChar(byte);
ch := byte; (* should translate character set here *)
w.WriteChar(ch); DEC(len)
END;
s := TextViews.dir.New(t)
END ImportText;
PROCEDURE ExportText* (s: Stores.Store; f: Files.File);
VAR w: Stores.Writer; t: TextModels.Model; r: TextModels.Reader;
len: INTEGER; ch: CHAR; byte: SHORTCHAR;
BEGIN
ASSERT(s # NIL, 20); ASSERT(f # NIL, 21); ASSERT(f.Length() = 0, 22);
ASSERT(s IS TextViews.View, 23);
w.ConnectTo(f); w.SetPos(0);
t := s(TextViews.View).ThisModel();
len := t.Length();
r := t.NewReader(NIL);
WHILE len # 0 DO
r.ReadChar(ch);
byte := SHORT(ch); (* should translate character set here *)
w.WriteSChar(byte);
DEC(len)
END
END ExportText;
END ObxConv.