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