DIRECTORY Ascii, MCrossUtilityDefs, Rope USING[ROPE, Size, Fetch, Compare]; MCrossUtilities: PROGRAM IMPORTS --MessageWindow, --Rope EXPORTS MCrossUtilityDefs = BEGIN IsNumber: PUBLIC PROCEDURE[s: Rope.ROPE] RETURNS[BOOLEAN] = { FOR i: INT IN [0..Rope.Size[s]) DO IF NOT Rope.Fetch[s, i] IN ['0..'9] THEN RETURN[FALSE] ENDLOOP; RETURN[TRUE]}; IsTerminator: PUBLIC PROCEDURE[ch: CHARACTER] RETURNS [BOOLEAN] = { RETURN[SELECT ch FROM IN ['0..'9], IN ['A..'Z], IN ['a..'z] => FALSE, ENDCASE => TRUE]}; IsLineEmpty: PUBLIC PROCEDURE[line: Rope.ROPE] RETURNS[BOOLEAN] = { FOR i: INT IN [0..Rope.Size[line]) DO SELECT Rope.Fetch[line, i] FROM Ascii.SP, Ascii.TAB, Ascii.CR => NULL; ENDCASE => RETURN[FALSE] ENDLOOP; RETURN[TRUE]}; StringLessThan: PUBLIC PROCEDURE[str1, str2: Rope.ROPE] RETURNS[BOOLEAN] = {RETURN[Rope.Compare[str1, str2, FALSE] = less]}; EqualString: PUBLIC PROCEDURE[str1, str2: Rope.ROPE] RETURNS[BOOLEAN] = {RETURN[Rope.Compare[str1, str2] = equal]}; END. „MCrossUtilities.mesa P.Rovner May 2, 1983 12:42 pm MessageWindow USING[Confirm], ---------------------------------------------------------------- Confirm: PUBLIC PROCEDURE RETURNS[BOOLEAN] = {RETURN[MessageWindow.Confirm["[Confirm] "]]}; Returns TRUE if the string has only spaces, tabs and CRs Returns True if Str1 is Lexically less then Str2 Returns True if Str1 is equal to Str2 ÊX˜šœ™Jšœ™—šÏk ˜ J˜J˜—šœ™Jšœœœ˜'J˜—Jšœ@™@J˜Jšœœ˜˜JšœÏcœ˜Jšœ˜—J˜J˜Jš˜J˜Jšœ,™,Jšœ.™.J˜Jš Ïnœœ œ œœœ˜;šœœœœ˜!Jšœœœœ œœœœ˜BJšœœ˜J˜—š Ÿ œœ œ œœœ˜Ašœœœ˜Jšœ œ œ œ˜/Jšœœ˜J˜——Jšœ8™8Jš Ÿ œœ œ œœœ˜Ašœœœœ˜$šœœ˜"Jš œœœœœ˜&Jšœœœœ˜!—Jšœœ˜J˜—Jšœ0™0š Ÿœœ œœœœ˜JJšœœœ ˜1J˜—Jšœ%™%š Ÿ œœ œœœœ˜GJšœœ$˜+J˜—Jšœ˜J˜—…—Ú¶