DIRECTORY Ascii, TSTypes, TSObject, TSFont, TSOps, Rope; TSItemListFromRopeImpl: CEDAR PROGRAM IMPORTS TSObject, Rope EXPORTS TSOps = BEGIN OPEN TSTypes; ROPE: TYPE = Rope.ROPE; RopeDataRec: TYPE = RECORD [ font: TSFont.Ref, rope: ROPE ]; ItemListFromRope: PUBLIC PROCEDURE [ font: TSFont.Ref, rope: ROPE ] RETURNS [ropeList: TSObject.ItemList] = { r: REF RopeDataRec _ NEW[RopeDataRec]; r.font _ font; r.rope _ rope; ropeList _ TSObject.CreateItemList[ producer: ProduceFromRope, writerData: r]; }; ProduceFromRope: TSObject.ProducerProc = { r: REF RopeDataRec _ NARROW[listWriter.writerData]; n: INT _ 0; ProduceChar: SAFE PROC [ch: CHAR] RETURNS [BOOLEAN _ FALSE] = TRUSTED { SELECT ch FROM Ascii.SP, Ascii.TAB => listWriter.ProduceFromRope[r.font, r.rope, n, space]; Ascii.CR => {}; ENDCASE => listWriter.ProduceFromRope[r.font, r.rope, n, char]; n _ n + 1; }; IF r # NIL THEN { [] _ Rope.Map[base: r.rope, action: ProduceChar]; listWriter.writerData _ NIL; } ELSE listWriter.ProduceEnd[]; }; END. Michael Plass, September 29, 1982 11:33 am: changed Rope.SP to Ascii.SP, etc. Michael Plass, November 2, 1982 10:32 am. CEDARized. ’TSItemListFromRopeImpl.mesa Making lists from ropes Michael Plass, November 2, 1982 10:32 am Last Edited by: Beach, May 24, 1983 9:10 am ΚΖ– "cedar" style˜JšΟc™Jš™Jš*™*J™+JšΟk œ/˜8J˜šœž ˜%Jšžœ˜Jšžœ˜—Jšžœžœ ˜Jšžœžœžœ˜J˜šœ žœžœ˜J˜Jšœž˜ J˜J˜—šΟnœžœž œ˜$J˜Jšœž˜ Jšœžœ"˜+Jšœžœžœ˜&J˜J˜˜#J˜J˜—J˜J˜—˜*Jšœžœžœ˜3Jšœžœ˜ šŸ œžœžœžœžœžœžœžœ˜Gšžœž˜Jšœžœžœ9˜LJšœžœ˜Jšžœ8˜?—J˜ J˜—šžœžœžœ˜J˜1Jšœžœ˜J˜—Jšžœ˜J˜J˜—Jšžœ˜J˜Jšœ9žœ žœ˜MJ˜4—…—vΞ