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;