<> <> DIRECTORY Commander USING [Register, CommandProc], JaM USING [State], JaMTS USING [GetLastHandle, JaMData, CreateJaMTS], List USING [Assoc, CopyTopList], Rope USING [Cat, ROPE], Convert USING [RopeFromInt], ReadEvalPrint USING [Handle], JaMImager USING [Create]; RegisterJaMImager: CEDAR PROGRAM IMPORTS Commander, Convert, Rope, List, JaMImager, JaMTS = { called: INT _ 0; NewJaMImager: Commander.CommandProc --[cmd: Commander.Handle]-- = { rep: ReadEvalPrint.Handle _ JaMTS.GetLastHandle[]; data: JaMTS.JaMData; IF rep=NIL THEN { name: Rope.ROPE _ "JaM"; rules: LIST OF REF ANY _ List.CopyTopList[NARROW[List.Assoc[key: $SearchRules, aList: cmd.propertyList]]]; IF called#0 THEN name _ Rope.Cat[name,Convert.RopeFromInt[from: called, showRadix: FALSE]]; rep _ JaMTS.CreateJaMTS[name, cmd.commandLine, rules]; called _ called+1; }; data _ NARROW[rep.clientData]; result _ JaMImager.Create[state: data.state, typescript: rep.viewer]; }; Commander.Register[key: "JaMImager", proc: NewJaMImager, doc: "Start JaM, its typescript and its Imager viewer"]; }.