GCC Code Coverage Report


Directory: ./
File: tmp_project/PhoenixTex2Html/src/PLatexObj/pbiblio_html.cpp
Date: 2025-03-24 18:12:43
Exec Total Coverage
Lines: 91 97 93.8%
Branches: 195 223 87.4%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include "convertToString.h"
8 #include "platexobj_html.h"
9 #include "pbiblio_html.h"
10
11 ///Create the navigation menu
12 /** @param cssClassName : css class name to be used
13 * @param outputMode : mode to be used to generate the site
14 * @return output html string
15 */
16 1024 PString createNavigationMenuBiblio(const PString & cssClassName, const POutoutMode & outputMode){
17 1024 PString body("");
18
3/3
✓ Branch 1 taken 1024 times.
✓ Branch 4 taken 1024 times.
✓ Branch 7 taken 1024 times.
1024 body += "\t\t<table class=\""+cssClassName+"\">\n";
19
1/1
✓ Branch 1 taken 1024 times.
1024 body += "\t\t\t<tr>\n";
20
1/1
✓ Branch 1 taken 1024 times.
1024 body += "\t\t\t<td><a href=\"index.html\">Main Page</a></td>\n";
21
1/1
✓ Branch 1 taken 1024 times.
1024 body += "\t\t\t<td><a href=\"bibliography.html\">Bibliographie</a></td>\n";
22
2/2
✓ Branch 0 taken 512 times.
✓ Branch 1 taken 512 times.
1024 if(!outputMode.isBookTheme){
23
1/1
✓ Branch 1 taken 512 times.
512 body += "\t\t\t<td><a href=\"outline.html\">Outline</a></td>\n";
24 }
25
1/1
✓ Branch 1 taken 1024 times.
1024 body += "\t\t\t</tr>\n";
26
1/1
✓ Branch 1 taken 1024 times.
1024 body += "\t\t</table>\n";
27 1024 return body;
28 }
29
30 ///Convert a string into an entry type
31 /** @param type : type to be used
32 * @return corresponding entry type
33 */
34 1020 PString pbiblio_entryTypeToHtml(PBiblioEntryType::PBiblioEntryType type){
35
2/2
✓ Branch 0 taken 544 times.
✓ Branch 1 taken 476 times.
1020 if(type == PBiblioEntryType::ARTICLE){return "bibarticle";}
36
2/2
✓ Branch 0 taken 76 times.
✓ Branch 1 taken 400 times.
476 else if(type == PBiblioEntryType::BOOK){return "bibbook";}
37
2/2
✓ Branch 0 taken 276 times.
✓ Branch 1 taken 124 times.
400 else if(type == PBiblioEntryType::SOFTWARE){return "bibsoftware";}
38
2/2
✓ Branch 0 taken 60 times.
✓ Branch 1 taken 64 times.
124 else if(type == PBiblioEntryType::INPROCEEDINGS){return "bibinproceedings";}
39
2/2
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 44 times.
64 else if(type == PBiblioEntryType::PHDTHESIS){return "bibphdthesis";}
40
2/2
✓ Branch 0 taken 24 times.
✓ Branch 1 taken 20 times.
44 else if(type == PBiblioEntryType::TECHREPORT){return "bibtechreport";}
41 20 else {return "bibarticle";}
42 }
43
44 ///Convert a biblio attribute in html
45 /** @param attrValue : value of the attribute
46 * @param balise : balise used to display this attribute
47 * @param extraText : extra text to be printed
48 * @return html
49 */
50 6120 PString pbiblio_attributeHtml(const PString & attrValue, const PString & balise, const PString & extraText){
51
3/3
✓ Branch 1 taken 3536 times.
✓ Branch 2 taken 2584 times.
✓ Branch 4 taken 3536 times.
6120 if(attrValue == ""){return "";}
52
1/1
✓ Branch 1 taken 2584 times.
2584 PString body("");
53
3/3
✓ Branch 1 taken 2584 times.
✓ Branch 4 taken 2584 times.
✓ Branch 7 taken 2584 times.
2584 body += "\t<"+balise+">";
54
1/2
✓ Branch 1 taken 2584 times.
✗ Branch 2 not taken.
2584 if(extraText != ""){
55
2/2
✓ Branch 1 taken 2584 times.
✓ Branch 4 taken 2584 times.
2584 body += extraText + " : ";
56 }
57
5/5
✓ Branch 1 taken 2584 times.
✓ Branch 4 taken 2584 times.
✓ Branch 7 taken 2584 times.
✓ Branch 10 taken 2584 times.
✓ Branch 13 taken 2584 times.
2584 body += convertStrToHtml(attrValue)+"</"+balise+">\n";
58
1/1
✓ Branch 1 taken 2584 times.
2584 return body;
59 2584 }
60
61 ///Convert a biblio attribute in html
62 /** @param attrValue : value of the attribute
63 * @param balise : balise used to display this attribute
64 * @return html
65 */
66 1020 PString pbiblio_attributeUrlHtml(const PString & attrValue, const PString & balise){
67
3/3
✓ Branch 1 taken 604 times.
✓ Branch 2 taken 416 times.
✓ Branch 4 taken 604 times.
1020 if(attrValue == ""){return "";}
68
1/1
✓ Branch 1 taken 416 times.
416 PString body("");
69
9/9
✓ Branch 1 taken 416 times.
✓ Branch 4 taken 416 times.
✓ Branch 7 taken 416 times.
✓ Branch 10 taken 416 times.
✓ Branch 13 taken 416 times.
✓ Branch 16 taken 416 times.
✓ Branch 19 taken 416 times.
✓ Branch 22 taken 416 times.
✓ Branch 25 taken 416 times.
416 body += "\t<"+balise+"><a href=\""+attrValue+"\">"+attrValue+"</a></"+balise+">\n";
70
1/1
✓ Branch 1 taken 416 times.
416 return body;
71 416 }
72
73 ///Convert a PBiblioEntry in html
74 /** @param bibEntry : entry to be converted in html
75 * @return string
76 */
77 510 PString pbiblio_entryPageHtml(const PBiblioEntry & bibEntry){
78
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
1020 PString fileName("bib_"+valueToString(bibEntry.getId())+".html");
79
1/1
✓ Branch 1 taken 510 times.
510 PString body("");
80
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getTitle(), "h1", "Title");
81
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getAuthor(), "h2", "Authors");
82
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getJournal(), "h3", "Journal");
83
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getVolume(), "h3", "Volume");
84
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getYear(), "h3", "Year");
85
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getPages(), "h3", "Pages");
86
4/4
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
510 body += pbiblio_attributeUrlHtml(bibEntry.getUrl(), "h3");
87 //TODO : Add more info there
88
2/3
✓ Branch 1 taken 510 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 510 times.
510 if(bibEntry.getAbstract() != ""){
89 body += "<h3>Abstract</h3>\n";
90 body += bibEntry.getAbstract() + "\n";
91 }
92
93 1020 return body;
94 510 }
95
96 ///Convert a PBiblioEntry in html
97 /** @param bibEntry : entry to be converted in html
98 * @param outputMode : output mode to get info about html page
99 * @return true on success, false otherwise
100 */
101 510 bool pbiblio_entryPage(const PBiblioEntry & bibEntry, const POutoutMode & outputMode){
102
2/2
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
510 PString body(getHtmlHeader(bibEntry.getTitle(), false, false, outputMode.currentStyle));
103
3/3
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
510 body += createNavigationMenuBiblio("navigationMenu", outputMode);
104
1/1
✓ Branch 1 taken 510 times.
510 body += "\t\t<div class=\"biblioContent\">\n";
105
106
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += "\t\t\t<div class=\""+pbiblio_entryTypeToHtml(bibEntry.getType())+"\">\n";
107
2/2
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
510 body += pbiblio_entryPageHtml(bibEntry);
108
1/1
✓ Branch 1 taken 510 times.
510 body += "\t\t\t</div>\n";
109
110
1/1
✓ Branch 1 taken 510 times.
510 body += "\t\t</div>\n";
111
3/3
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
510 body += createNavigationMenuBiblio("navigationMenuBottom", outputMode);
112
2/2
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
510 body += getHtmlFooter();
113
114
6/6
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
✓ Branch 16 taken 510 times.
1020 PPath fileName("bib_"+valueToString(bibEntry.getId())+".html");
115
2/3
✓ Branch 1 taken 510 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 510 times.
510 if(!fileName.saveFileContent(body)){
116 std::cerr << "pbiblio_entryPage : can't save file '"<<fileName<<"'" << std::endl;
117 return false;
118 }
119 // else{
120 // std::cerr << "pbiblio_entryPage : save file '"<<fileName<<"'" << std::endl;
121 // }
122 510 return true;
123 510 }
124
125 ///Convert a PBiblioEntry in html
126 /** @param bibEntry : entry to be converted in html
127 * @return string
128 */
129 510 PString pbiblio_entryHtml(const PBiblioEntry & bibEntry){
130 510 PString body("");
131
9/9
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
✓ Branch 16 taken 510 times.
✓ Branch 19 taken 510 times.
✓ Branch 22 taken 510 times.
✓ Branch 25 taken 510 times.
510 body += "<div class=\""+pbiblio_entryTypeToHtml(bibEntry.getType())+"\" id=\""+valueToString(bibEntry.getId())+"\">\n";
132
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getTitle(), "h1", "Title");
133
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getAuthor(), "h2", "Authors");
134
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getJournal(), "h3", "Journal");
135
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getVolume(), "h3", "Volume");
136
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getYear(), "h3", "Year");
137
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += pbiblio_attributeHtml(bibEntry.getPages(), "h3", "Pages");
138
4/4
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
510 body += pbiblio_attributeUrlHtml(bibEntry.getUrl(), "h3");
139
5/5
✓ Branch 1 taken 510 times.
✓ Branch 4 taken 510 times.
✓ Branch 7 taken 510 times.
✓ Branch 10 taken 510 times.
✓ Branch 13 taken 510 times.
510 body += "\t<a href=\"bib_"+valueToString(bibEntry.getId())+".html\">+ informations</a>\n";
140
1/1
✓ Branch 1 taken 510 times.
510 body += "</div>\n";
141 510 return body;
142 }
143
144 ///Save the bibliography in string
145 /** @param mapBiblioEntry : full bibliography to be saved
146 * @param outputMode : output mode to get info about html page
147 * @return string
148 */
149 2 PString pbiblio_html(const PMapBiblioEntry & mapBiblioEntry, const POutoutMode & outputMode){
150
1/1
✓ Branch 2 taken 2 times.
2 PString body(getHtmlHeader("Bibliography", false, false, outputMode.currentStyle));
151
3/3
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
2 body += createNavigationMenuBiblio("navigationMenu", outputMode);
152
1/1
✓ Branch 1 taken 2 times.
2 body += "\t\t<div class=\"biblioContent\">\n";
153
154
2/2
✓ Branch 4 taken 510 times.
✓ Branch 5 taken 2 times.
512 for(PMapBiblioEntry::const_iterator it(mapBiblioEntry.begin()); it != mapBiblioEntry.end(); ++it){
155
2/2
✓ Branch 2 taken 510 times.
✓ Branch 5 taken 510 times.
510 body += pbiblio_entryHtml(it->second);
156
1/1
✓ Branch 2 taken 510 times.
510 pbiblio_entryPage(it->second, outputMode);
157 }
158
159
1/1
✓ Branch 1 taken 2 times.
2 body += "\t\t</div>\n";
160
3/3
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
2 body += createNavigationMenuBiblio("navigationMenuBottom", outputMode);
161
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 body += getHtmlFooter();
162 2 return body;
163 }
164
165 ///Save the bibliography in html
166 /** @param fileName : name of the file to be saved
167 * @param mapBiblioEntry : full bibliography to be saved
168 * @param outputMode : output mode to get info about html page
169 * @return true on success, false otherwise
170 */
171 2 bool pbiblio_html(const PPath & fileName, const PMapBiblioEntry & mapBiblioEntry, const POutoutMode & outputMode){
172
1/1
✓ Branch 1 taken 2 times.
2 PString fileContent(pbiblio_html(mapBiblioEntry, outputMode));
173
2/3
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
2 if(!fileName.saveFileContent(fileContent)){
174 std::cerr << "platexobj_html : can't save file '"<<fileName<<"'" << std::endl;
175 return false;
176 }else{
177
4/4
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
✓ Branch 10 taken 2 times.
2 std::cerr << "platexobj_html : save file '"<<fileName<<"'" << std::endl;
178 }
179 2 return true;
180
181
182 2 }
183
184
185