Directory: | ./ |
---|---|
File: | tmp_project/PhoenixTex2Html/src/PTimeTable/ptimetable_invitation.cpp |
Date: | 2025-03-24 18:12:43 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 117 | 141 | 83.0% |
Branches: | 220 | 369 | 59.6% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /*************************************** | ||
2 | Auteur : Pierre Aubert | ||
3 | Mail : pierre.aubert@lapp.in2p3.fr | ||
4 | Licence : CeCILL-C | ||
5 | ****************************************/ | ||
6 | |||
7 | #include <iomanip> | ||
8 | #include <time.h> | ||
9 | |||
10 | #include "platexobj_rawtext.h" | ||
11 | |||
12 | #include "ptimetable_invitation.h" | ||
13 | |||
14 | |||
15 | ///Begins an invitation | ||
16 | /** @param name : name of entity which create this invitation | ||
17 | * @param motif : motif of the invitation | ||
18 | * @return begining of the invitation | ||
19 | */ | ||
20 | 8 | PString ptimetable_beginInvitation(const PString & name, const PString & motif){ | |
21 | 8 | PString body(""); | |
22 |
1/1✓ Branch 1 taken 8 times.
|
8 | body += "BEGIN:VCALENDAR\n"; |
23 |
1/1✓ Branch 1 taken 8 times.
|
8 | body += "VERSION:2.0\n"; |
24 |
5/5✓ Branch 1 taken 8 times.
✓ Branch 4 taken 8 times.
✓ Branch 7 taken 8 times.
✓ Branch 10 taken 8 times.
✓ Branch 13 taken 8 times.
|
8 | body += "PRODID:-//"+name+"//"+motif+"/\n"; |
25 | 8 | return body; | |
26 | } | ||
27 | |||
28 | ///Ends an invitation | ||
29 | /** @return end of the invitation | ||
30 | */ | ||
31 | 8 | PString ptimetable_endInvitation(){ | |
32 | 8 | return "END:VCALENDAR\n\n"; | |
33 | } | ||
34 | |||
35 | ///Convert the given date and time into calendar time | ||
36 | /** @param date : date of the event | ||
37 | * @param texTime : time of the event | ||
38 | * @return corresponding calendar time | ||
39 | */ | ||
40 | 1308 | PString ptimetable_dateTimeToCalendarTime(const PLatexDate & date, const PLatexTime & texTime){ | |
41 |
1/1✓ Branch 1 taken 1308 times.
|
1308 | std::stringstream timeStr; |
42 |
10/10✓ Branch 1 taken 1308 times.
✓ Branch 4 taken 1308 times.
✓ Branch 8 taken 1308 times.
✓ Branch 12 taken 1308 times.
✓ Branch 15 taken 1308 times.
✓ Branch 18 taken 1308 times.
✓ Branch 22 taken 1308 times.
✓ Branch 26 taken 1308 times.
✓ Branch 29 taken 1308 times.
✓ Branch 32 taken 1308 times.
|
1308 | timeStr << date.getYear() << std::setfill('0') << std::setw(2) << date.getMonth() << std::setfill('0') << std::setw(2) << date.getDay(); |
43 |
10/10✓ Branch 1 taken 1308 times.
✓ Branch 5 taken 1308 times.
✓ Branch 9 taken 1308 times.
✓ Branch 12 taken 1308 times.
✓ Branch 15 taken 1308 times.
✓ Branch 19 taken 1308 times.
✓ Branch 23 taken 1308 times.
✓ Branch 26 taken 1308 times.
✓ Branch 29 taken 1308 times.
✓ Branch 32 taken 1308 times.
|
1308 | timeStr << "T" << std::setfill('0') << std::setw(2) << texTime.getHour() << std::setfill('0') << std::setw(2) << texTime.getMinute() << "00"; |
44 |
2/2✓ Branch 1 taken 1308 times.
✓ Branch 4 taken 1308 times.
|
3924 | return timeStr.str(); |
45 | 1308 | } | |
46 | |||
47 | ///Convert the current time into the calendar time | ||
48 | /** @return corresponding calendar time | ||
49 | */ | ||
50 | 654 | PString ptimetable_currentTimeToCalendarTime(){ | |
51 | 654 | time_t timestamp = time(NULL); | |
52 | 654 | struct tm * currentDate = localtime(×tamp); | |
53 |
1/1✓ Branch 1 taken 654 times.
|
654 | std::stringstream timeStr; |
54 |
7/7✓ Branch 1 taken 654 times.
✓ Branch 5 taken 654 times.
✓ Branch 9 taken 654 times.
✓ Branch 12 taken 654 times.
✓ Branch 16 taken 654 times.
✓ Branch 20 taken 654 times.
✓ Branch 23 taken 654 times.
|
654 | timeStr << (currentDate->tm_year + 1900) << std::setfill('0') << std::setw(2) << (currentDate->tm_mon + 1) << std::setfill('0') << std::setw(2) << currentDate->tm_mday; |
55 |
8/8✓ Branch 1 taken 654 times.
✓ Branch 5 taken 654 times.
✓ Branch 9 taken 654 times.
✓ Branch 12 taken 654 times.
✓ Branch 16 taken 654 times.
✓ Branch 20 taken 654 times.
✓ Branch 23 taken 654 times.
✓ Branch 26 taken 654 times.
|
654 | timeStr << "T" << std::setfill('0') << std::setw(2) << (currentDate->tm_hour - currentDate->tm_gmtoff/3600) << std::setfill('0') << std::setw(2) << currentDate->tm_min << "00"; |
56 |
2/2✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
|
1962 | return timeStr.str(); |
57 | 654 | } | |
58 | |||
59 | ///Convert a block into a event calendar | ||
60 | /** @param[out] counter : counter of block to make sure UID is unique | ||
61 | * @param block : PTimeTableBlock to be converted | ||
62 | * @return corresponding event calendar | ||
63 | */ | ||
64 | 1323 | PString ptimetable_blockToEvent(size_t & counter, const PTimeTableBlock & block){ | |
65 |
4/4✓ Branch 1 taken 1323 times.
✓ Branch 4 taken 669 times.
✓ Branch 5 taken 654 times.
✓ Branch 7 taken 669 times.
|
1323 | if(block.getVecSpeaker().size() == 0lu){return "";} |
66 |
2/2✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
|
654 | PString body(""), currentTimeStamp(ptimetable_currentTimeToCalendarTime()); |
67 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "BEGIN:VEVENT\n"; |
68 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "CLASS:PUBLIC\n"; |
69 |
3/3✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
|
654 | body += "DTSTAMP:"+currentTimeStamp+"\n"; |
70 | |||
71 |
1/1✓ Branch 1 taken 654 times.
|
654 | std::stringstream uidStr; |
72 |
3/3✓ Branch 2 taken 654 times.
✓ Branch 6 taken 654 times.
✓ Branch 9 taken 654 times.
|
654 | uidStr << std::setfill('0') << std::setw(4) << counter; |
73 | 654 | ++counter; | |
74 |
6/6✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
✓ Branch 10 taken 654 times.
✓ Branch 13 taken 654 times.
✓ Branch 16 taken 654 times.
|
654 | body += "UID:TH8WMR_PNR"+uidStr.str()+"_"+currentTimeStamp+"\n"; |
75 |
6/6✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
✓ Branch 10 taken 654 times.
✓ Branch 13 taken 654 times.
✓ Branch 16 taken 654 times.
|
654 | body += "DTSTART;TZID=Europe/Paris:"+ptimetable_dateTimeToCalendarTime(block.getDate(), block.getBeginTime())+"\n"; |
76 |
6/6✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
✓ Branch 10 taken 654 times.
✓ Branch 13 taken 654 times.
✓ Branch 16 taken 654 times.
|
654 | body += "DTEND;TZID=Europe/Paris:"+ptimetable_dateTimeToCalendarTime(block.getDate(), block.getEndTime())+"\n"; |
77 |
5/5✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
✓ Branch 10 taken 654 times.
✓ Branch 13 taken 654 times.
|
654 | body += "SUMMARY:"+platexobj_rawtext(block.getTitle())+"\n"; |
78 |
5/5✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
✓ Branch 10 taken 654 times.
✓ Branch 13 taken 654 times.
|
654 | body += "LOCATION:"+platexobj_rawtext(block.getLocation())+"\n"; |
79 |
5/5✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
✓ Branch 10 taken 654 times.
✓ Branch 13 taken 654 times.
|
654 | body += "DESCRIPTION:"+platexobj_rawtext(block.getTitle())+"\\n\n"; |
80 |
3/4✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 6 taken 654 times.
✗ Branch 7 not taken.
|
654 | if(block.getMainUrl() != ""){ |
81 |
7/7✓ Branch 1 taken 654 times.
✓ Branch 4 taken 654 times.
✓ Branch 7 taken 654 times.
✓ Branch 10 taken 654 times.
✓ Branch 13 taken 654 times.
✓ Branch 16 taken 654 times.
✓ Branch 19 taken 654 times.
|
654 | body += " "+block.getMainUrl() + "redirect.html?label=sec_"+block.getInvitation()+"\\n\n"; |
82 | } | ||
83 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "BEGIN:VALARM\n"; |
84 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "TRIGGER:-PT10M\n"; |
85 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "ACTION:DISPLAY\n"; |
86 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "DESCRIPTION:Reminder\n"; |
87 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "END:VALARM\n"; |
88 |
1/1✓ Branch 1 taken 654 times.
|
654 | body += "END:VEVENT\n"; |
89 |
1/1✓ Branch 1 taken 654 times.
|
654 | return body; |
90 | 654 | } | |
91 | |||
92 | ///Convert a day into a event calendar | ||
93 | /** @param[out] counter : counter of block to make sure UID is unique | ||
94 | * @param day : TexDay to be converted | ||
95 | * @return corresponding event calendar | ||
96 | */ | ||
97 | 135 | PString ptimetable_dayToVecEvent(size_t & counter, const TexDay & day){ | |
98 | 135 | PString body(""); | |
99 | 135 | const std::map<PString, PTimeTableBlock> & mapBlock = day.mapBlock; | |
100 |
2/2✓ Branch 3 taken 1152 times.
✓ Branch 4 taken 135 times.
|
1287 | for(std::map<PString, PTimeTableBlock>::const_iterator it(mapBlock.begin()); it != mapBlock.end(); ++it){ |
101 |
2/2✓ Branch 2 taken 1152 times.
✓ Branch 5 taken 1152 times.
|
1152 | body += ptimetable_blockToEvent(counter, it->second); |
102 | } | ||
103 | 135 | return body; | |
104 | } | ||
105 | |||
106 | ///Convert a week into a event calendar | ||
107 | /** @param[out] counter : counter of block to make sure UID is unique | ||
108 | * @param week : TexWeek to be converted | ||
109 | * @return corresponding event calendar | ||
110 | */ | ||
111 | 16 | PString ptimetable_weekToVecEvent(size_t & counter, const TexWeek & week){ | |
112 | 16 | PString body(""); | |
113 | 16 | const std::map<PString, TexDay> & mapDay = week.mapDay; | |
114 |
2/2✓ Branch 3 taken 84 times.
✓ Branch 4 taken 16 times.
|
100 | for(std::map<PString, TexDay>::const_iterator it(mapDay.begin()); it != mapDay.end(); ++it){ |
115 |
2/2✓ Branch 2 taken 84 times.
✓ Branch 5 taken 84 times.
|
84 | body += ptimetable_dayToVecEvent(counter, it->second); |
116 | } | ||
117 | 16 | return body; | |
118 | } | ||
119 | |||
120 | ///Convert a timetable into a event calendar | ||
121 | /** @param[out] counter : counter of block to make sure UID is unique | ||
122 | * @param texTimeTable : TexTimetable to be converted | ||
123 | * @return corresponding event calendar | ||
124 | */ | ||
125 | 4 | PString ptimetable_timetableToVecEvent(size_t & counter, const TexTimetable & texTimeTable){ | |
126 | 4 | PString body(""); | |
127 | 4 | const std::vector<TexWeek> & vecWeek = texTimeTable.vecWeek; | |
128 |
2/2✓ Branch 3 taken 10 times.
✓ Branch 4 taken 4 times.
|
14 | for(std::vector<TexWeek>::const_iterator it(vecWeek.begin()); it != vecWeek.end(); ++it){ |
129 |
2/2✓ Branch 2 taken 10 times.
✓ Branch 5 taken 10 times.
|
10 | body += ptimetable_weekToVecEvent(counter, *it); |
130 | } | ||
131 | 4 | return body; | |
132 | } | ||
133 | |||
134 | ///Create an invitation | ||
135 | /** @param outputDirectory : output directory where to put all generated invitations | ||
136 | * @param timetable : TexTimetable to be used to generate invitations | ||
137 | * @return true on success, false otherwise | ||
138 | */ | ||
139 | ✗ | bool ptimetable_createInvitation(const PPath & outputDirectory, const TexTimetable & timetable){ | |
140 | ✗ | bool b(true); | |
141 | ✗ | size_t counter(0lu); | |
142 | ✗ | PString bevt(ptimetable_beginInvitation("PhoenixTex2Html", timetable.invitation)), eevt(ptimetable_endInvitation()); | |
143 | ✗ | b &= outputDirectory.createDirectory(); | |
144 | ✗ | const std::vector<TexWeek> & vecWeek = timetable.vecWeek; | |
145 | ✗ | for(std::vector<TexWeek>::const_iterator itWeek(vecWeek.begin()); itWeek != vecWeek.end(); ++itWeek){ | |
146 | ✗ | const std::map<PString, TexDay> & mapDay = itWeek->mapDay; | |
147 | ✗ | for(std::map<PString, TexDay>::const_iterator itDay(mapDay.begin()); itDay != mapDay.end(); ++itDay){ | |
148 | ✗ | const std::map<PString, PTimeTableBlock> & mapBlock = itDay->second.mapBlock; | |
149 | ✗ | for(std::map<PString, PTimeTableBlock>::const_iterator it(mapBlock.begin()); it != mapBlock.end(); ++it){ | |
150 | ✗ | if(it->second.getInvitation() != ""){ | |
151 | ✗ | b &= PPath(outputDirectory + PPath("/") + it->second.getInvitation() + PPath(".ics")).saveFileContent( | |
152 | ✗ | bevt+ptimetable_blockToEvent(counter, it->second)+eevt); | |
153 | } | ||
154 | } | ||
155 | ✗ | if(itDay->second.invitation != ""){ | |
156 | ✗ | b &= PPath(outputDirectory + PPath("/") + itDay->second.invitation + PPath(".ics")).saveFileContent( | |
157 | ✗ | bevt+ptimetable_dayToVecEvent(counter, itDay->second)+eevt); | |
158 | } | ||
159 | } | ||
160 | ✗ | if(itWeek->invitation != ""){ | |
161 | ✗ | b &= PPath(outputDirectory + PPath("/") + itWeek->invitation + PPath(".ics")).saveFileContent( | |
162 | ✗ | bevt+ptimetable_weekToVecEvent(counter, *itWeek)+eevt); | |
163 | } | ||
164 | } | ||
165 | ✗ | if(timetable.invitation != ""){ | |
166 | ✗ | b &= PPath(outputDirectory + PPath("/") + timetable.invitation + PPath(".ics")).saveFileContent( | |
167 | ✗ | bevt+ptimetable_timetableToVecEvent(counter, timetable)+eevt); | |
168 | } | ||
169 | ✗ | return b; | |
170 | } | ||
171 | |||
172 | ///Create invitations for timetable, weeks and days | ||
173 | /** @param[out] counter : counter of block to make sure UID is unique | ||
174 | * @param outputDirectory : output directory where to put all generated invitations | ||
175 | * @param timetable : TexTimetable to be used to generate invitations | ||
176 | * @return true on success, false otherwise | ||
177 | */ | ||
178 | 4 | bool ptimetable_createFullWeekDayInvitation(size_t & counter, const PPath & outputDirectory, const TexTimetable & timetable){ | |
179 | 4 | bool b(true); | |
180 |
3/3✓ Branch 1 taken 4 times.
✓ Branch 4 taken 4 times.
✓ Branch 7 taken 4 times.
|
8 | PString bevt(ptimetable_beginInvitation("PhoenixTex2Html", timetable.invitation)), eevt(ptimetable_endInvitation()); |
181 |
1/1✓ Branch 1 taken 4 times.
|
4 | b &= outputDirectory.createDirectory(); |
182 | 4 | const std::vector<TexWeek> & vecWeek = timetable.vecWeek; | |
183 |
2/2✓ Branch 4 taken 10 times.
✓ Branch 5 taken 4 times.
|
14 | for(std::vector<TexWeek>::const_iterator itWeek(vecWeek.begin()); itWeek != vecWeek.end(); ++itWeek){ |
184 | 10 | const std::map<PString, TexDay> & mapDay = itWeek->mapDay; | |
185 |
2/2✓ Branch 4 taken 51 times.
✓ Branch 5 taken 10 times.
|
61 | for(std::map<PString, TexDay>::const_iterator itDay(mapDay.begin()); itDay != mapDay.end(); ++itDay){ |
186 |
2/3✓ Branch 2 taken 51 times.
✓ Branch 4 taken 51 times.
✗ Branch 5 not taken.
|
51 | if(itDay->second.invitation != ""){ |
187 |
11/11✓ Branch 1 taken 51 times.
✓ Branch 4 taken 51 times.
✓ Branch 8 taken 51 times.
✓ Branch 11 taken 51 times.
✓ Branch 14 taken 51 times.
✓ Branch 17 taken 51 times.
✓ Branch 20 taken 51 times.
✓ Branch 23 taken 51 times.
✓ Branch 26 taken 51 times.
✓ Branch 29 taken 51 times.
✓ Branch 32 taken 51 times.
|
153 | b &= PPath(outputDirectory + PPath("/") + itDay->second.invitation + PPath(".ics")).saveFileContent( |
188 |
3/3✓ Branch 2 taken 51 times.
✓ Branch 5 taken 51 times.
✓ Branch 8 taken 51 times.
|
102 | bevt+ptimetable_dayToVecEvent(counter, itDay->second)+eevt); |
189 | } | ||
190 | } | ||
191 |
3/3✓ Branch 2 taken 10 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 4 times.
|
10 | if(itWeek->invitation != ""){ |
192 |
11/11✓ Branch 1 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 8 taken 6 times.
✓ Branch 11 taken 6 times.
✓ Branch 14 taken 6 times.
✓ Branch 17 taken 6 times.
✓ Branch 20 taken 6 times.
✓ Branch 23 taken 6 times.
✓ Branch 26 taken 6 times.
✓ Branch 29 taken 6 times.
✓ Branch 32 taken 6 times.
|
18 | b &= PPath(outputDirectory + PPath("/") + itWeek->invitation + PPath(".ics")).saveFileContent( |
193 |
3/3✓ Branch 2 taken 6 times.
✓ Branch 5 taken 6 times.
✓ Branch 8 taken 6 times.
|
12 | bevt+ptimetable_weekToVecEvent(counter, *itWeek)+eevt); |
194 | } | ||
195 | } | ||
196 |
2/3✓ Branch 1 taken 4 times.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
|
4 | if(timetable.invitation != ""){ |
197 |
11/11✓ Branch 1 taken 4 times.
✓ Branch 4 taken 4 times.
✓ Branch 7 taken 4 times.
✓ Branch 10 taken 4 times.
✓ Branch 13 taken 4 times.
✓ Branch 16 taken 4 times.
✓ Branch 19 taken 4 times.
✓ Branch 22 taken 4 times.
✓ Branch 25 taken 4 times.
✓ Branch 28 taken 4 times.
✓ Branch 31 taken 4 times.
|
12 | b &= PPath(outputDirectory + PPath("/") + timetable.invitation + PPath(".ics")).saveFileContent( |
198 |
3/3✓ Branch 1 taken 4 times.
✓ Branch 4 taken 4 times.
✓ Branch 7 taken 4 times.
|
8 | bevt+ptimetable_timetableToVecEvent(counter, timetable)+eevt); |
199 | } | ||
200 | 4 | return b; | |
201 | 4 | } | |
202 | |||
203 | ///Create the map of invitation blocks | ||
204 | /** @param[out] mapInviteVecBlock : map of vector of blocks sorted by invitation | ||
205 | * @param timetable : TexTimetable to be used to generate invitations | ||
206 | */ | ||
207 | 4 | void ptimetable_createMapInviteBlock(std::map<PString, std::vector<PTimeTableBlock> > & mapInviteVecBlock, const TexTimetable & timetable){ | |
208 | 4 | const std::vector<TexWeek> & vecWeek = timetable.vecWeek; | |
209 |
2/2✓ Branch 4 taken 10 times.
✓ Branch 5 taken 4 times.
|
14 | for(std::vector<TexWeek>::const_iterator itWeek(vecWeek.begin()); itWeek != vecWeek.end(); ++itWeek){ |
210 | 10 | const std::map<PString, TexDay> & mapDay = itWeek->mapDay; | |
211 |
2/2✓ Branch 4 taken 51 times.
✓ Branch 5 taken 10 times.
|
61 | for(std::map<PString, TexDay>::const_iterator itDay(mapDay.begin()); itDay != mapDay.end(); ++itDay){ |
212 | 51 | const std::map<PString, PTimeTableBlock> & mapBlock = itDay->second.mapBlock; | |
213 |
2/2✓ Branch 4 taken 396 times.
✓ Branch 5 taken 51 times.
|
447 | for(std::map<PString, PTimeTableBlock>::const_iterator it(mapBlock.begin()); it != mapBlock.end(); ++it){ |
214 |
4/4✓ Branch 2 taken 396 times.
✓ Branch 5 taken 396 times.
✓ Branch 7 taken 171 times.
✓ Branch 8 taken 225 times.
|
396 | if(it->second.getInvitation() != ""){ |
215 |
3/3✓ Branch 2 taken 171 times.
✓ Branch 5 taken 171 times.
✓ Branch 9 taken 171 times.
|
171 | mapInviteVecBlock[it->second.getInvitation()].push_back(it->second); |
216 | } | ||
217 | } | ||
218 | } | ||
219 | } | ||
220 | 4 | } | |
221 | |||
222 | ///Create the map of invitation blocks | ||
223 | /** @param[out] counter : counter of block to make sure UID is unique | ||
224 | * @param outputDirectory : output directory where to put all generated invitations | ||
225 | * @param mapInviteVecBlock : map of vector of blocks sorted by invitation to be saved | ||
226 | * @param bevt : begining of invitations | ||
227 | * @param eevt : anding of invitations | ||
228 | * @return true on success, false otherwise | ||
229 | */ | ||
230 | 4 | bool ptimetable_saveMapInviteBlock(size_t & counter, const PPath & outputDirectory, | |
231 | const std::map<PString, std::vector<PTimeTableBlock> > & mapInviteVecBlock, | ||
232 | const PString & bevt, const PString & eevt) | ||
233 | { | ||
234 | 4 | bool b(true); | |
235 |
2/2✓ Branch 4 taken 111 times.
✓ Branch 5 taken 4 times.
|
115 | for(std::map<PString, std::vector<PTimeTableBlock> >::const_iterator itInvite(mapInviteVecBlock.begin()); itInvite != mapInviteVecBlock.end(); ++itInvite){ |
236 |
1/1✓ Branch 1 taken 111 times.
|
111 | PString fullInvitation(bevt); |
237 | 111 | const std::vector<PTimeTableBlock> & vecBlock = itInvite->second; | |
238 |
2/2✓ Branch 3 taken 171 times.
✓ Branch 4 taken 111 times.
|
282 | for(std::vector<PTimeTableBlock>::const_iterator it(vecBlock.begin()); it != vecBlock.end(); ++it){ |
239 |
2/2✓ Branch 2 taken 171 times.
✓ Branch 5 taken 171 times.
|
171 | fullInvitation += ptimetable_blockToEvent(counter, *it); |
240 | } | ||
241 |
1/1✓ Branch 1 taken 111 times.
|
111 | fullInvitation += eevt; |
242 |
9/9✓ Branch 1 taken 111 times.
✓ Branch 4 taken 111 times.
✓ Branch 8 taken 111 times.
✓ Branch 11 taken 111 times.
✓ Branch 14 taken 111 times.
✓ Branch 17 taken 111 times.
✓ Branch 20 taken 111 times.
✓ Branch 23 taken 111 times.
✓ Branch 26 taken 111 times.
|
222 | PPath outputFile(outputDirectory + PPath("/") + itInvite->first + PPath(".ics")); |
243 |
1/1✓ Branch 1 taken 111 times.
|
111 | b &= outputFile.saveFileContent(fullInvitation); |
244 | 111 | } | |
245 | 4 | return b; | |
246 | } | ||
247 | |||
248 | ///Create invitations but merge blocks with the same invitation | ||
249 | /** @param outputDirectory : output directory where to put all generated invitations | ||
250 | * @param timetable : TexTimetable to be used to generate invitations | ||
251 | * @return true on success, false otherwise | ||
252 | */ | ||
253 | 4 | bool ptimetable_createInvitationMergBlock(const PPath & outputDirectory, const TexTimetable & timetable){ | |
254 | 4 | std::map<PString, std::vector<PTimeTableBlock>> mapInviteVecBlock; | |
255 |
1/1✓ Branch 1 taken 4 times.
|
4 | ptimetable_createMapInviteBlock(mapInviteVecBlock, timetable); |
256 | |||
257 | 4 | bool b(true); | |
258 |
3/3✓ Branch 1 taken 4 times.
✓ Branch 4 taken 4 times.
✓ Branch 7 taken 4 times.
|
8 | PString bevt(ptimetable_beginInvitation("PhoenixTex2Html", timetable.invitation)), eevt(ptimetable_endInvitation()); |
259 |
1/1✓ Branch 1 taken 4 times.
|
4 | b &= outputDirectory.createDirectory(); |
260 | 4 | size_t counter(0lu); | |
261 |
1/1✓ Branch 1 taken 4 times.
|
4 | b &= ptimetable_saveMapInviteBlock(counter, outputDirectory, mapInviteVecBlock, bevt, eevt); |
262 |
1/1✓ Branch 1 taken 4 times.
|
4 | b &= ptimetable_createFullWeekDayInvitation(counter, outputDirectory, timetable); |
263 | 4 | return b; | |
264 | 4 | } | |
265 | |||
266 | |||
267 |