-- RegisterInterDocCommands.mesa
-- written by Bill Paxton, 5-Oct-81
-- last edit by Bill Paxton, 5-Oct-81 9:54:03
DIRECTORY
InterFile,
PutGet,
CVExecutive,
Rope,
WindowManager,
TypeScript;
RegisterInterDocCommands: PROGRAM
IMPORTS InterFile, PutGet, CVExecutive, Rope, WindowManager, TypeScript =
BEGIN
WriteInterDoc: PROC [ts: TypeScript.Typescript, param: Rope.Ref] = {
ok: BOOLEAN;
destname, sourcename: Rope.Ref;
[ok, destname, sourcename] ← GetArgs[ts, param];
IF ~ok THEN RETURN;
WindowManager.WaitCursor[];
[] ← InterFile.ToFile[destname, PutGet.FromFile[sourcename]];
WindowManager.UnWaitCursor[];
TypeScript.ClientPutRope[ts, "Done."] };
ReadInterDoc: PROC [ts: TypeScript.Typescript, param: Rope.Ref] = {
ok: BOOLEAN;
destname, sourcename: Rope.Ref;
[ok, destname, sourcename] ← GetArgs[ts, param];
IF ~ok THEN RETURN;
WindowManager.WaitCursor[];
[] ← PutGet.ToFile[destname, InterFile.FromFile[sourcename]];
WindowManager.UnWaitCursor[];
TypeScript.ClientPutRope[ts, "Done."] };
GetArgs: PROC [ts: TypeScript.Typescript, param: Rope.Ref] RETURNS
[ok: BOOLEAN, destname, sourcename: Rope.Ref] = {
arrow: Rope.Ref;
offset: LONG INTEGER;
[destname, offset] ← CVExecutive.GetToken[param];
[arrow, offset] ← CVExecutive.GetToken[param, offset];
[sourcename, offset] ← CVExecutive.GetToken[param, offset];
IF ~Rope.Equal[arrow, "←"] OR Rope.Size[sourcename]=0 OR Rope.Size[destname]=0 THEN {
TypeScript.ClientPutRope[ts,
"Error. Command line must be of the form <destname> ← <sourcename>"];
ok ← FALSE }
ELSE ok ← TRUE };
CVExecutive.AddCommand["WriteInterDoc", WriteInterDoc,
"Reads Tioga format and writes InterDoc format.
Command line of form <destname> ← <sourcename>"];
CVExecutive.AddCommand["ReadInterDoc", ReadInterDoc,
"Reads InterDoc format and writes Tioga format.
Command line of form <destname> ← <sourcename>"];
END.