DIRECTORY FS, InterFile, TextEdit, IO, Rope, RopeIO, RopeReader; GetInterFileImpl: CEDAR PROGRAM IMPORTS FS, Rope, RopeIO, RopeReader, TextEdit EXPORTS InterFile = BEGIN OPEN InterFile; FromFileError: PUBLIC ERROR = CODE; FromFile: PUBLIC PROC [fileName: ROPE, start: INT _ 0, len: INT _ MaxLen] RETURNS [root: Node] = { file: FS.OpenFile = FS.Open[fileName, read]; root _ FromFileC[file,start,len]; FS.Close[file]; }; FromFileC: PUBLIC PROC [file: FS.OpenFile, start: INT _ 0, len: INT _ MaxLen] RETURNS [Node] = { RETURN [FromRope[RopeIO.FromFileC[file,start,len]]]; }; FromStream: PUBLIC PROC [stream: IO.STREAM, len: INT _ MaxLen] RETURNS [Node] = { RETURN [FromRope[RopeIO.GetRope[stream,len]]]; }; FromRope: PUBLIC PROC [rope: ROPE, start: INT _ 0, len: INT _ MaxLen] RETURNS [Node] = { source: RopeReader.Ref _ RopeReader.Create[]; RopeReader.SetPosition[source,Rope.Substr[rope,start,len]]; RETURN [Tree[source]]; }; Tree: PROC [source: RopeReader.Ref] RETURNS [root: Node] = { RETURN [TextEdit.DocFromNode[TextEdit.FromRope[RopeReader.GetRope[source]]]]; }; END. Current limited syntax for Tioga InterDoc files: node = '{ typename property* contents child* '} property = propname '= ( text | node ) text = '< character* '> contents = ( text | run )* | other run = '{ looks text '} looks = "looks=" text other = varietyname '[ text '] child = node ,GetInterFileImpl.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. written by Paxton. January 1981 Paxton. August 24, 1982 10:40 am Russ Atkinson, July 25, 1983 3:14 pm Plass, March 1, 1985 5:18:12 pm PST Doug Wyatt, August 28, 1986 5:39:49 pm PDT -- not implemented yet Κ!˜codešœ™Kšœ Οmœ7™BKšœ ™ Kšœ ™ K™$K™#K™*—K˜šΟk ˜ Kšžœ˜K˜ K˜ Kšžœ˜K˜K˜K˜ —K˜šΠblœžœž˜Kšžœžœ$˜.Kšžœ ˜Kšœžœžœ ˜—K˜Kšœžœžœžœ˜#K˜š Οnœžœžœ žœ žœ žœ ˜IKšžœ˜Kšœžœ žœ˜,K˜!Kšžœ ˜Kšœ˜K˜—š  œžœž˜Kš œžœžœ žœ žœ ˜IKšžœ.˜4Kšœ˜K˜—š  œžœžœ žœžœžœ žœ ˜QKšžœ(˜.Kšœ˜K˜—š œžœžœžœ žœ žœ žœ ˜XK˜-K˜;Kšžœ˜Kšœ˜K˜—š œžœ˜#Kšžœ˜Kšœ™KšžœG˜MKšœ˜K˜—Kšžœ˜K˜K˜0K˜K˜/K˜&K˜K˜"K˜K˜K˜K˜ K˜K˜—…—Z§