DIRECTORY AMBridge USING [IsRemote, TVToLC], Commander USING [Register, CommandProc], IO USING [PutRope, STREAM], PrintTV USING [RegisterTVPrintProc, TVPrintProc], Rope USING [Cat, Substr, ROPE], Tempus USING [Packed, Unintelligible, PackedSeconds, SecondsToPacked, MakeRope, defaultTime, Parse], ViewerClasses USING [Viewer], ViewerOps USING [FindViewer, DestroyViewer] ; TempusUtilImpl: CEDAR PROGRAM IMPORTS AMBridge, Commander, IO, PrintTV, Rope, Tempus, ViewerOps = BEGIN OPEN Tempus; SecondsPrintProc: PrintTV.TVPrintProc = TRUSTED { -- AMBridge s: Tempus.PackedSeconds; t: Tempus.Packed; IF AMBridge.IsRemote[tv] THEN ERROR; -- shouldnt be called. TVPrintProc says can't handle remote. s _ LOOPHOLE[AMBridge.TVToLC[tv]]; t _ SecondsToPacked[s]; IF t = defaultTime THEN stream.PutRope["{current time}"] 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 stream.PutRope[MakeRope[time: t, precision: seconds, includeDayOfWeek: TRUE]]; }; 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]; cmd.out.PutRope[MakeRope[time: t, includeDayOfWeek: TRUE]]; }; 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 so that includes day of week. Commander.Register["WhenIs", WhenIs, "For testing time.parse"]; {oldClock: ViewerClasses.Viewer _ ViewerOps.FindViewer["Clock"]; -- going to load myclock so pretendits works. IF oldClock # NIL THEN ViewerOps.DestroyViewer[oldClock]; }; END. TempusImpl.mesa; Edited by Teitelman on June 22, 1983 9:21 am Converted by: Maxwell, January 5, 1984 2:12 pm TRUSTED { when StoreInSymTab is implemented in CommandProcOps put this back. UserExecPrivate.StoreInSymTab[value: AMBridge.TVForReferent[NEW[Packed _ t]], event: event, exec: exec]; }; WhenIs: UserExec.CommandProc = { err: Rope.ROPE; t: Packed; [t, ] _ Parse[event.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 UserExecPrivate.EventFailed[event: event, msg: err]; UserExec.GetStreams[exec].out.PutRope[MakeRope[time: t, includeDayOfWeek: TRUE]]; TRUSTED { UserExecPrivate.StoreInSymTab[value: AMBridge.TVForReferent[NEW[Packed _ t]], event: event, exec: exec]; }; }; Κ;– "Cedar" style˜JšΟc(œ™=Jšœ.™.J™šΟk ˜ Jšœ žœ˜"Jšœ žœ˜(Jšžœžœ žœ˜Jšœžœ$˜1Jšœžœžœ˜JšœžœX˜dJšœžœ ˜Jšœ žœ˜+J˜—J˜JšΠblœžœž˜J˜Jšžœžœ(˜GJ˜šœžœžœ ˜J˜J˜—šΟnœž œ ˜>Jšœ˜J˜Jšžœž œ;ž˜aJšœžœ˜#Jšœ˜Jšžœžœ!˜8JšžœHžœ˜SJ˜—J˜š œž œ ˜=J˜Jšžœž œ;ž˜aJšœžœ˜#Jšžœžœ!˜8JšžœHžœ˜SJ˜J˜—J˜š œ˜!Jšœ žœ˜J˜ šœ˜šœ˜šœžœž˜Jšœ˜Jšœ˜Jšœ&˜&Jšœ!˜!Jšœ$˜$Jšžœž˜—šžœžœ˜%Jšœ˜J˜Jšœ'˜'J•StartOfExpansion9[base: ROPE, start: INT _ 0, len: INT _ 2147483647]˜J˜(Jšœ˜—Jšžœ˜ J˜—Jšœ˜—Jšžœžœžœ˜'Jšœ4žœ˜;šžœΟbAœ™MJšœ<žœ)™hJ™—Jšœ˜—š œ™ Jšœ žœ™J™ šœ!™!šœ™šœžœž™Jšœ™Jšœ™Jšœ&™&Jšœ!™!Jšœ$™$Jšžœž™—šžœžœ™%Jšœ™J™Jšœ'™'J–9[base: ROPE, start: INT _ 0, len: INT _ 2147483647]™J™(Jšœ™—Jšžœ™ J™—Jšœ™—Jšžœžœžœ5™FJšœJžœ™Qšžœ™ Jšœ<žœ)™hJ™—Jšœ™—J˜Jšœ"žœ1žœžœ˜iJšœ"žœ)žœžœD˜§J˜J˜?JšœB-˜oJšžœ žœžœ#˜9J˜J˜Jšžœ˜J˜—…— :‡