DIRECTORY Commander, IO, Rope, Tempus; TempusUtilImpl: CEDAR PROGRAM IMPORTS <> Commander, IO, <> Rope, Tempus = BEGIN OPEN Tempus; WhenIs: Commander.CommandProc = { err: Rope.ROPE; t: Packed; [t, ] ¬ Parse[cmd.commandLine ! Unintelligible => { err ¬ SELECT ec FROM invalid => "Invalid", tooVague => "Too Vague", overConstrained => "Over Constrained", nothingSpecified => "Not a time", notImplemented => "Not Implemented", ENDCASE => ERROR; IF vicinity # -1 THEN err ¬ Rope.Cat[ err, ": ", Rope.Substr[base: rope, len: vicinity], "<>", Rope.Substr[base: rope, start: vicinity] ]; CONTINUE; }; ]; IF err # NIL THEN cmd.err.PutRope[err] ELSE cmd.out.PutRope[MakeRope[time: t, includeDayOfWeek: TRUE]]; cmd.out.PutRope["\n"]; }; Commander.Register["WhenIs", WhenIs, "For testing time.parse"]; END. lTempusUtilImpl.mesa Copyright Σ 1985, 1992 by Xerox Corporation. All rights reserved. Teitelman on June 22, 1983 9:21 am Maxwell, January 5, 1984 2:12 pm Pier, October 16, 1987 11:35:57 am PDT Rick Beach, April 4, 1985 8:17:15 am PST Brian Oki January 25, 1990 4:32:03 pm PST AMBridge, PrintTV, SecondsPrintProc: PrintTV.TVPrintProc = TRUSTED { -- AMBridge s: Tempus.PackedSeconds; t: Tempus.Packed; <> s _ LOOPHOLE[AMBridge.TVToLC[tv]]; t _ SecondsToPacked[s]; IF t = defaultTime THEN stream.PutRope["{current time}"] ELSE IF t=BasicTime.nullGMT THEN stream.PutRope["nullGMT"] ELSE stream.PutRope[MakeRope[time: t, precision: seconds, includeDayOfWeek: TRUE]]; }; PackedPrintProc: PrintTV.TVPrintProc = TRUSTED { -- AMBridge t: Tempus.Packed; IF AMBridge.IsRemote[tv] THEN ERROR; -- shouldnt be called. TVPrintProc says can't handle remote. t _ LOOPHOLE[AMBridge.TVToLC[tv]]; IF t = defaultTime THEN stream.PutRope["{current time}"] ELSE IF t=BasicTime.nullGMT THEN stream.PutRope["nullGMT"] ELSE stream.PutRope[MakeRope[time: t, precision: seconds, includeDayOfWeek: TRUE]]; }; TRUSTED { when StoreInSymTab is implemented in CommandProcOps put this back. UserExecPrivate.StoreInSymTab[value: AMBridge.TVForReferent[NEW[Packed _ t]], event: event, exec: exec]; }; PrintTV.RegisterTVPrintProc[type: CODE[Tempus.PackedSeconds], proc: SecondsPrintProc ! ANY => CONTINUE]; PrintTV.RegisterTVPrintProc[type: CODE[Tempus.Packed], proc: PackedPrintProc ! ANY => CONTINUE]; -- redefines printproc in basic system to include day of week. Κ+–(cedarcode) style•NewlineDelimiter ˜codešΟc™Kšœ Οeœ6™BKš œ™"Kšœ ™ K™&K™(K™)K™—šΟk ˜ Kšœ ™ Kšœ ˜ KšŸœ˜Kšœ™Kšœ˜Kšœ˜—K˜KšΠblœŸœŸ˜KšŸœŸœ!˜DšœŸœŸœ ˜K˜šΟnœŸœ ™>Kšœ™K™KšŸœŸœŸœ>™eKšœŸœ™"Kšœ™KšŸœŸœ"ŸœŸœ™sKšŸœHŸœ™SK™—K˜š‘œŸœŸœ ™=K™KšŸœŸœŸœ<™aKšœŸœ™"KšŸœŸœ!Ÿ œŸœ™sKšŸœHŸœ™SK™K™—K˜š‘œ˜!Kšœ Ÿœ˜K˜ ˜šœ˜šœŸœŸ˜Kšœ˜Kšœ˜Kšœ&˜&Kšœ!˜!Kšœ$˜$KšŸœŸ˜—šŸœŸœ˜%Kšœ˜K˜Kšœ'˜'K•StartOfExpansion9[base: ROPE, start: INT _ 0, len: INT _ 2147483647]˜K˜(Kšœ˜—KšŸœ˜ K˜—Kšœ˜—KšŸœŸœŸœ˜&KšŸœ5Ÿœ˜@Kšœ˜šŸœΟbAœ™MKšœ<Ÿœ)™hK™—Kšœ˜—K˜šœ"Ÿœ0™VKšŸœŸœ™—šœ"Ÿœ(™NKšŸœŸœ>™R—K˜K˜?—K˜K˜KšŸœ˜K˜—…—B Ω