DIRECTORY CIFS, Commander, Directory, TextNode, TEditMesaOps, GetTree, PutGet, File, Rope, InterFile, IO, List, TEditDocument, TEditOps, TEditSelection, TEditProfile USING [GetToken], TEditInput; TiogaExecCommands: CEDAR PROGRAM IMPORTS CIFS, Commander, Directory, GetTree, IO, InterFile, List, PutGet, Rope, TEditMesaOps, TEditInput, TEditOps, TEditProfile, TEditSelection, TextNode = { TiogaMesaLooks: Commander.CommandProc = { DoTiogaMesa[cmd, FALSE, TRUE] }; TiogaMesa: Commander.CommandProc = { DoTiogaMesa[cmd, TRUE, TRUE] }; ReadIndent: Commander.CommandProc = { DoTiogaMesa[cmd, TRUE, FALSE] }; Get: PROC [name: Rope.ROPE, log: IO.STREAM, tree: BOOL _ FALSE] RETURNS [root: TextNode.Ref, filename: Rope.ROPE] = { failed: BOOL _ FALSE; filename _ name; { ENABLE CIFS.Error => { IF ~failed AND Rope.Find[filename,"."] = -1 THEN { -- add .mesa extension filename _ Rope.Concat[filename,".mesa"]; failed _ TRUE; RETRY }; log.PutRope[filename]; log.PutRope[" not found.\n"]; GOTO Quit }; root _ IF tree THEN GetTree.ReadIndent[filename, tabIndent] ELSE PutGet.FromFile[filename]; }; EXITS Quit => RETURN [NIL, NIL]}; tabIndent: NAT _ 8; DoTiogaMesa: PROC [cmd: Commander.Handle, tree, mesaLooks: BOOLEAN] = { Writer: DoWriteProc = { IF mesaLooks THEN [] _ TEditMesaOps.SetSpanMesaLooks[ TextNode.MakeNodeSpan[root,TextNode.LastWithin[root]],NIL]; [] _ PutGet.ToFile[filename, root] }; tabIndent _ 8; Dudley[Writer, cmd, tree] }; ReadTiogaTipTables: Commander.CommandProc = { TEditInput.ReadTipTables[] }; WriteMesaPlain: Commander.CommandProc = { Writer: DoWriteProc = { PutGet.WriteMesaFilePlain[filename, root] }; Dudley[Writer, cmd] }; WritePlain: Commander.CommandProc = { Writer: DoWriteProc = { PutGet.WriteFilePlain[filename, root] }; Dudley[Writer, cmd] }; WriteInterFile: Commander.CommandProc = { Writer: DoWriteProc = { [] _ InterFile.ToFile[filename, root] }; Dudley[Writer, cmd] }; DoWriteProc: TYPE = PROC [filename: Rope.ROPE, root: TextNode.Ref]; Dudley: PROC [writer: DoWriteProc, cmd: Commander.Handle, tree: BOOLEAN _ FALSE] = { offset: INT _ 0; out: IO.STREAM _ cmd.out; DO -- process each file in command line root: TextNode.Ref; filename: Rope.ROPE; dollarFile: REF READONLY TEXT; dollarCap: File.Capability _ File.nullCapability; [filename,offset] _ TEditProfile.GetToken[cmd.commandLine, offset]; IF Rope.Size[filename]=0 THEN EXIT; IF Rope.Size[filename]=1 AND Rope.Fetch[filename,0] IN ['1..'9] THEN { tabIndent _ LOOPHOLE[Rope.Fetch[filename,0]-'1]; LOOP }; [root, filename] _ Get[filename, out, tree]; IF root=NIL THEN LOOP; IO.PutChar[out, '.]; dollarFile _ Rope.ToRefText[Rope.Cat[filename, "$"]]; TRUSTED {dollarCap _ Directory.LookupUnlimited[fileName: LOOPHOLE[dollarFile] ! Directory.Error => CONTINUE]; IF dollarCap#File.nullCapability THEN Directory.RemoveFile[LOOPHOLE[dollarFile], dollarCap]; Directory.Rename[LOOPHOLE[Rope.ToRefText[filename]], LOOPHOLE[dollarFile] ! Directory.Error => CONTINUE]}; writer[filename, root]; TEditInput.FreeTree[root]; ENDLOOP; IO.PutRope[out, " Done."] }; DoTiogaOps: Commander.CommandProc = { pSel: TEditDocument.Selection _ TEditOps.GetSelData[]; rope: Rope.ROPE _ cmd.commandLine; h: IO.Handle _ IO.CreateInputStreamFromRope[rope]; item: REF ANY; list: LIST OF REF ANY; WHILE (item _ IO.GetRefAny[h ! IO.EndOfStream => { item _ NIL; CONTINUE}]) # NIL DO list _ List.Nconc1[list, item]; ENDLOOP; TEditSelection.LockSel[primary, "DoTiogaOps"]; IF pSel.viewer # NIL THEN TEditInput.Interpret[pSel.viewer, list]; TEditSelection.UnlockSel[primary] }; Commander.Register["TiogaMesa", TiogaMesa, "Convert Mesa files to Tioga tree format. Number in line gives spaces/tab -- must be in [1..9]; default is 8"]; Commander.Register["ReadTiogaTipTables", ReadTiogaTipTables, "Have Tioga read its TIP tables again."]; Commander.Register["ReadIndent", ReadIndent, "Convert to tree structure based on indenting."]; Commander.Register["WritePlain", WritePlain, "Convert Tioga file to unformatted file."]; Commander.Register["WriteMesaPlain", WriteMesaPlain, "Convert Tioga file to unformatted file.\n\tRestores dashes before comments if necessary."]; Commander.Register["WriteInterFile", WriteInterFile, "Convert Tioga file to pseudo InterScript format."]; Commander.Register["DoTiogaOps", DoTiogaOps, "Like EditTool Do Operations command."]; }. ¶-- TiogaExecCommands.mesa -- Last changed by Paxton, October 26, 1982 10:12 am Last Edited by: Maxwell, January 14, 1983 8:46 am Last Edited by: Plass, April 20, 1983 9:26 am ʘJšÏc™Jš4™4J™1J™-JšÏk ˜ Jšžœ˜Jšœ ˜ Jšœ ˜ J˜ J˜ J˜J˜J˜J˜J˜ Jšžœ˜J˜J˜Jšœ ˜ J˜Jšœ žœ ˜J˜ J˜Jšœž ˜ Jšžœžœ!žœo˜žJ˜šœ)˜)Jšœžœžœ˜ J˜—šœ$˜$Jšœžœžœ˜J˜—šœ%˜%Jšœžœžœ˜ J˜—šÏnœžœ žœžœžœžœžœ˜?Jšžœ%žœ˜5Jšœžœžœ˜J˜šžœžœ ˜šžœ žœžœ˜JJ˜)Jšœ žœ˜Jšžœ˜—Jšœ˜Jšœ˜Jšžœ˜ —Jšœžœžœ)žœ˜[J˜Jšžœ žœžœžœ˜!J˜—Jšœ žœ˜J˜šŸ œžœ*žœ˜G˜šžœ žœ$˜5Jšœ6žœ˜;—J˜%—J˜Jšœ˜J˜—šœ-˜-Jšœ˜J˜—šœ)˜)J˜DJ˜J˜—šœ%˜%J˜@J˜J˜—šœ)˜)J˜@J˜J˜—JšŸ œžœžœžœ˜CJ˜šŸœžœ4žœžœ˜TJšœžœ˜Jšœžœžœ ˜šžœ$˜'J˜Jšœžœ˜Jšœ žœžœžœ˜J˜1JšœC˜CJšžœžœžœ˜#šžœžœžœ ž˜DJšœžœžœ˜:—Jšœ,˜,Jšžœžœžœžœ˜Jšžœ˜J˜5šžœ2žœ ˜MJšœžœ˜—šžœž˜%Jšœžœ˜6—šœžœžœ ˜IJšœžœ˜ —J˜J˜Jšžœ˜—Jšžœ˜J˜—šœ%˜%Jšœ6˜6Jšœ žœ˜"Jšœžœ žœ!˜2Jšœžœžœ˜Jš œžœžœžœžœ˜š žœ žœžœžœžœžœž˜SJ˜Jšžœ˜—J˜.Jšžœžœžœ)˜BJšœ$˜$—J˜šœT˜TJšœE˜E—J˜šœf˜fJ˜—Jšœ^˜^J˜JšœX˜XJ˜Jšœ‘˜‘J˜Jšœi˜iJ˜JšœU˜UJ˜J˜J˜J˜J˜—…—î%