[% echo "" %] [% macro buildPrint(useDay,sUseSection,sStartDay,ssFirstSection,sTitle,sStartTime,sStopTime,sDeVenue,sDescript,sDeContact,sCost,sWebsite) %][% if sUseSection == true; echo "

" + (ssFirstSection | titlecase) + "

\r\n"; end; /* if useDay == true; echo "

" + sStartDay + "

\r\n"; end; */ echo "

" + (sTitle | uppercase) + " " ; if (sStartTime == "12 a.m."); echo "on " + sStartDay + ","; elseif (sStopTime == false); echo "at " + sStartTime + " " + sStartDay + ","; else; echo "from " + sStartTime + sStopTime + " " + sStartDay + ","; end; echo sDeVenue; echo sDescript; echo sDeContact; if sCost == true; echo " Cost: $" + sCost; end; echo "

\r\n"; %][% end %][%/* --- MAIN MACRO --- */%][% macro buildcal (sDisDate, desSections, deIndex) %][% sEvent2 = []; dEvent2 = []; kEvents = []; useDay = false; x = 0; yy = 0; xx = 0; for each sDisDate as item; sDisDatex = sDisDate[xx]; sDisSection = desSections; foreach results as event; sDupe = false; dMatch = false; sMatch = false; if kEvents|exists(event.uuid); sDupe = false; end; kEvents[event.uuid] = ""; sDeStartDay = true; if (!sDupe); sDeStartDay = true; sStartDay = event.eventstarttime('l, F j'); foreach event.tags('section') as path, tag; sFirstSection = path; ssFirstSection = tag; break; end; if sStartDay == sDisDatex; dMatch = true; end; if ssFirstSection == sDisSection; sMatch = true; end; if ((sMatch == 1) && (dMatch==1)); sTagDay = event.eventstarttime('ymd'); if sEvent2|exists(ssFirstSection); sUseSection = false; else; sUseSection = true; end; sEvent2[ssFirstSection] = ''; if (baseDate != sDisDatex); useDay = true; baseDate = sDisDatex; else; useDay = false; end; sStopDay = event.eventstoptime('F d') ; sStartTime = event.eventstarttime('g:i a'); sStartCycle = event.eventstarttime('a'); sStopTime = event.eventstoptime('g:i a'); sStopCycle = event.eventstoptime('a'); if (sStartCycle == sStopCycle) && (sStopTime != '11:59 pm'); sStartTime = event.eventstarttime('g:i'); else; sStartTime = event.eventstarttime('g:i a'); end; if sStopTime== '11:59 pm'; sStopTime= ""; else; sStopTime = "-" + sStopTime ; end; sStartTime = sStartTime | regex ('/am/i','a.m.') | regex ('/pm/i','p.m.') | replace (':00',''); sStopTime = sStopTime | regex ('/am/i','a.m.') | regex ('/pm/i','p.m.') | replace (':00',''); sCost = event.cost; if sCost == '' || sCost =='0'; sCost = ""; else; sCost = sCost + '.'; end; sWebsite= event.website; if sWebsite != ''; sWebsite= " " + sWebsite + '.'; end; sVenueName = event.venue.name; sVenueAddress = event.venue.address; sVenueCity = event.venue.city; sDeVenue = ''; x1 = 0; x2 = 0; x3 = 0; if sVenueName !=''; x1 = 1; end; if sVenueAddress != ''; x2 = 3; end; if sVenueCity != ''; x3 = 5; end; deXtotal = x1 + x2 + x3; if deXtotal == 0; sDeVenue = ''; end; if deXtotal == 1; sDeVenue = ' ' + sVenueName + "."; end; if deXtotal == 3; sDeVenue = ' ' + sVenueAddress + "."; end; if deXtotal == 4; sDeVenue = ' ' + sVenueName + ", " + sVenueAddress + "."; end; if deXtotal == 5; sDeVenue = ' ' + sVenueCity + "."; end; if deXtotal == 6; sDeVenue = ' ' + sVenueName + ", " + sVenueCity + "."; end; if deXtotal == 8; sDeVenue = ' ' + sVenueAddress + ", " +sVenueCity + "."; end; if deXtotal == 9; sDeVenue = ' ' + sVenueName + ", " + sVenueAddress + ", " +sVenueCity + "."; end; sDeVenue = sDeVenue | replace("..","."); sContact= event.contact.name; sContactEmail= event.contact.email; sContactPhone = event.contact.phone; sDecontact = ''; y1 = 0; y2 = 0; y3 = 0; if sContact!=''; y1 = 1; end; if sContactEmail != ''; y2 = 3; end; if sContactPhone != ''; y3 = 5; end; deYtotal = y1 + y2 + y3; if deYtotal == 0; sDecontact = ''; end; if deYtotal == 1; sDecontact = ' ' + sContact+ "."; end; if deYtotal == 3; sDecontact = ' ' + sContactEmail+ "."; end; if deYtotal == 4; sDecontact = ' ' + sContact + ", " + sContactEmail+ "."; end; if deYtotal == 5; sDecontact = ' ' + sContactPhone + "."; end; if deYtotal == 6; sDecontact = ' ' + sContact + ", " + sContactPhone + "."; end; if deYtotal == 8; sDecontact = ' ' + sContactEmail + ", " + sContactPhone + "."; end; if deYtotal == 9; sDecontact = ' ' + sContact + ", " + sContactEmail + ", " + sContactPhone + "."; end; ssFirstSection = ssFirstSection | replace("-"," "); ssFirstSection = ssFirstSection | replace("_"," "); sTitle = deTextCleaner(event.title); sDescript = deTextCleaner(event.content); if (sDescript != ''); sDescript = " " + sDescript; end; sDeVenue = deTextCleaner(sDeVenue); sContact = deTextCleaner(sDeContact); buildPrint(useDay,sUseSection,sStartDay,ssFirstSection,sTitle,sStartTime,sStopTime,sDeVenue,sDescript,sDeContact,sCost,sWebsite); end; end; end; xx = xx + 1;end;/*END OF THE Date LOOP */ %][% end %][% /*------------ text clean up ---------------*/ %][% macro deTextCleaner (deText) %][% deText = deText | regex('/\x0a/i'," "); deText = deText | regex ('/\x20/i', ' ') | regex ('/\xA0/'," "); deText = deText | regex ('/

/i','') | regex ('/<\/p>\s?/i','') | regex ('/“/i','"') | regex ('/”/i','"') | regex ("/’/i","'") | regex ('/ – /i'," — ") | regex ('/ — /i'," — ") ; deText = deText | regex ('/<.*?>/i',''); deText = deText | regex ('/\&/i',"&") | regex ('/\ /i'," ") | regex ('/\–/i', '<0x2013>'); deText = deText | replace('–',"<0x2013>"); deText = deText | regex ('/\\\\/i','/'); deText = deText | replace("‘","'") | replace("—"," <0x2014> ") | replace("’","'") | replace ("”","'") | replace ('’',"'") | replace (' – ', ' <0x2013> '); deText = deText | regex ('/\xAE/i', "<0x00AE>"); deText = deText | replace("..",".") | replace(' ',' ') | replace(' ',' ')| replace(' ',' '); return(deText); %][% end %][% /*------------ section and send macro ---------------*/ %][% macro deSectioning (disHereDay, desSections, deCall) %][% xx = 0; for each desSections as item; if xx==0; deFirst = "newDay"; else; deFirst = "oldDay";end; buildcal (disHereDay, desSections[xx], deFirst); xx = xx + 1; end; %][% end %][% /*----------- sorting macro ----------------*/ %][% macro leSort (foo) %][% w= ((foo | length)); i=0; for 1 .. w; valueToInsert = foo[i]; holePos = i; while (holePos > 0)&& (valueToInsert < foo[holePos - 1]); foo[holePos] = foo[holePos - 1]; holePos = holePos - 1; end; foo[holePos] = valueToInsert; i = i + 1; end; return(foo) %][% end %][% /*------------- start here --------------*/ %][% sFirstSection = ""; ssFirstSection = ""; kEvents = []; dEvents = []; sEvents = []; sDeList = []; dDeList = []; dDayList = []; i=0; z=0; foreach results as event; /* it is not necessary to skip duplicate uuid entries if search has been filtered by run date; but makes it easier to test code if enabled */ ; if kEvents|exists(event.uuid); bDupe = false; end; kEvents[event.uuid] = ""; if (!bDupe); /* up to the break - grabs the first section entry per of the asset */; foreach event.tags('section') as path, tag; ssFirstSection = tag; break; end; if not ( sEvents | exists(ssFirstSection)); sDeList[sDeList.length] = ssFirstSection; end; sEvents[ssFirstSection] = ''; sStartDay = event.eventstarttime('l, F j'); if not ( dEvents | exists(sStartDay)); dDayList[dDayList.length] = sStartDay; end; dEvents[sStartDay] = ''; end; end; if (sDeList.length > 2) /*&& (sDeList.length < 9)*/; sDeList = leSort(sDeList); end; for each sDeList; buildcal(dDayList, sDeList[z], "newDay"); z = z + 1; end; %]