package body HTML_Table is procedure Print(Items: Item_Array; Column_Heads: Header_Array) is function Blanks(N: Natural) return String is -- indention for better readable HTML begin if N=0 then return ""; else return " " & Blanks(N-1); end if; end Blanks; procedure Print_Row(Row_Number: Positive) is begin Put(Blanks(4) & "" & Positive'Image(Row_Number) & ""); for I in Items'Range(2) loop Put("" & To_String(Items(Row_Number, I)) & ""); end loop; Put_Line(""); end Print_Row; procedure Print_Body is begin Put_Line(Blanks(2)&""); for I in Items'Range(1) loop Print_Row(I); end loop; Put_Line(Blanks(2)&""); end Print_Body; procedure Print_Header is function To_Str(U: U_String) return String renames Ada.Strings.Unbounded.To_String; begin Put_Line(Blanks(2) & ""); Put(Blanks(4) & ""); for I in Column_Heads'Range loop Put("" & To_Str(Column_Heads(I)) & ""); end loop; Put_Line(""); Put_Line(Blanks(2) & ""); end Print_Header; begin if Items'Length(2) /= Column_Heads'Length then raise Constraint_Error with "number of headers /= number of columns"; end if; Put_Line(""); Print_Header; Print_Body; Put_Line("
"); end Print; end HTML_Table;