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 |