1 | :- module(pltables, [ | |
2 | new_table/2, add_column/3, | |
3 | pltable/2, pltable_header/3, | |
4 | delete_tables/0, | |
5 | pltable_row/3, add_row/3, | |
6 | tables_to_html/2, tables_to_html_stream/2, | |
7 | tables_to_latex/2, tables_to_latex_stream/2, | |
8 | tables_to_xml/2, tables_to_xml_stream/2, | |
9 | tables_to_csv/2, tables_to_csv_stream/2 | |
10 | ]). | |
11 | ||
12 | :- use_module(pltables_export). | |
13 | :- use_module(probsrc(self_check)). | |
14 | :- use_module(probsrc(module_information)). | |
15 | ||
16 | :- module_info(group,pltables). | |
17 | :- module_info(description,'This module is used to generate, store and export coverage tables.'). | |
18 | ||
19 | :- volatile pltable/2, pltable_header/3, pltable_row/3. | |
20 | :- dynamic pltable/2, pltable_header/3, pltable_row/3. | |
21 | ||
22 | :- assert_must_succeed((pltables:new_table(a,[]),pltables:delete_tables,\+(pltables:pltable(a,[])))). | |
23 | delete_tables :- | |
24 | retractall(pltable(_,_)), | |
25 | retractall(pltable_header(_,_,_)), | |
26 | retractall(pltable_row(_,_,_)). | |
27 | ||
28 | :- assert_must_succeed((pltables:new_table(a,[]),pltables:delete_tables)). | |
29 | :- assert_must_succeed((pltables:new_table(aa,[]),pltables:new_table(bb,[]),pltables:delete_tables)). | |
30 | :- assert_must_fail((pltables:new_table(x,[]),pltables:new_table(x,[]),pltables:delete_tables)). | |
31 | % As the above test fails, delete_tables is not called. The following test serves as a cleanup routine | |
32 | :- assert_must_succeed(pltables:delete_tables). | |
33 | new_table(Name, Attributes) :- | |
34 | pltable(Name,Attributes) -> false ; assert(pltable(Name, Attributes)). | |
35 | ||
36 | add_column(TableName, ColumnText, Attributes) :- | |
37 | pltable(TableName, _), | |
38 | ( retract(pltable_header(TableName, OldHeadings, OldAttributes)) -> | |
39 | append(OldAttributes, [Attributes], NewAttributes), | |
40 | append(OldHeadings, [ColumnText], NewHeadings), | |
41 | assert(pltable_header(TableName, NewHeadings, NewAttributes)) | |
42 | ; otherwise -> | |
43 | assert(pltable_header(TableName, [ColumnText], [Attributes])) | |
44 | ). | |
45 | ||
46 | add_row(TableName, Entries, Attributes) :- | |
47 | pltable_header(TableName, Columns, _), | |
48 | length(Columns, NrOfColumns), | |
49 | length(Entries, NrOfColumns), | |
50 | assert(pltable_row(TableName, Entries, Attributes)). | |
51 |