1-- io.cpkg : 0.1 : Input/Output package 2-------------------------------------------------------------- 3 4Package $io 5 6Export format; 7Export SprintTrunc; 8 9-------------------------------------------------------------- 10 11Define Print_Aliases(L) 12 -- L := Untagged(L); 13 If L=[] Then Return; EndIf; 14 S := max([len(X[1])|X In L]); 15 Foreach X In L Do 16 PrintLn; 17 Sp := spaces(S-len(X[1])); 18 Print X[1],Sp," = ",X[2]; 19 EndForeach; 20EndDefine; 21 22-- Define Cterm(O) 23-- D := $.OpenOStringCterm(""); 24-- Print O On D; 25-- S := Cast(D,STRING); 26-- Close(D); 27-- Return S; 28-- EndDefine; 29 30 31define SprintTrunc(obj,trunc) 32 S := sprint(obj); 33 if len(S) > trunc then return sum([S[i] | i in 1..trunc])+"..."; 34 else return S; 35 endif; 36enddefine; -- SprintTrunc 37 38 39Define format(O,L) Return $.FormatString(sprint(O),L); EndDefine; 40 41Define FormatString(S,L) 42 If L-len(S) >= 0 Then Return spaces(L-len(S)) + S; Else Return S; EndIf; 43EndDefine; -- FormatString 44 45 46 47Define Print_Table(Headings, Spaces, Rows) -- TODO: Check 48-- Rows is a list of Rows 49-- Each row is a list of integers 50 If len(Spaces) < len(Headings) Then 51 Spaces := Spaces + NewList(len(Headings)-len(Spaces),0); 52 EndIf; 53 Spaces := [ max(Spaces[I], len(Headings[I])) | I In 1..len(Headings) ]; 54 Dashes := sum(NewList(sum(Spaces)+len(Spaces)-1,"-")); 55 PrintLn Dashes; 56 For C := 1 To len(Headings) Do 57 Print spaces(max(Spaces[C]-len(Headings[C]),0)); 58 Print Headings[C]," "; 59 EndFor; 60 PrintLn; 61 PrintLn Dashes; 62 For R := 1 To NumCols(Rows) Do 63 For C := 1 To len(Spaces) Do 64 Print $.format(sprint(Rows[R,C]),Spaces[C])," "; 65 EndFor; 66 PrintLn; 67 EndFor; 68 PrintLn Dashes; 69EndDefine; 70 71//Define Tagged(O,T) Return Tagged(O,"a"+"."+T); EndDefine; 72 73-- Define Print_Matrix(M) 74-- N := NumRows(M); 75-- $.Print_Table(NewList(N,""), NewList(N,4), M); 76-- EndDefine; 77 78EndPackage; -- Package 79 80