private static string CiteTemplateME(Match m)
{
string newValue = m.Value;
Dictionary<string, string> paramsFound = Tools.GetTemplateParameterValues(newValue);
string accessdate, date, date2, archivedate, airdate, journal;
if (!paramsFound.TryGetValue("accessdate", out accessdate) &&
!paramsFound.TryGetValue("access-date", out accessdate))
accessdate = "";
if (!paramsFound.TryGetValue("date", out date))
date = "";
if (!paramsFound.TryGetValue("date2", out date2))
date2 = "";
if (!paramsFound.TryGetValue("archivedate", out archivedate))
archivedate = "";
if (!paramsFound.TryGetValue("airdate", out airdate))
airdate = "";
if (!paramsFound.TryGetValue("journal", out journal))
journal = "";
List<string> dates = new List<string> {accessdate, archivedate, date, date2, airdate};
if (CiteTemplateMEParameterToProcess(dates))
{
// accessdate=, archivedate=
newValue = CiteTemplateIncorrectISOAccessdates.Aggregate(newValue,
(current, rr) => rr.Regex.Replace(current, rr.Replacement));
// date=, archivedate=, airdate=, date2=
newValue = CiteTemplateIncorrectISODates.Aggregate(newValue,
(current, rr) => rr.Regex.Replace(current, rr.Replacement));
newValue = CiteTemplateDateYYYYDDMMFormat.Replace(newValue, "$1-$3-$2$4"); // YYYY-DD-MM to YYYY-MM-DD
// date = YYYY-Month-DD fix, not for cite journal PubMed date format
if (journal.Length == 0)
newValue = CiteTemplateAbbreviatedMonthISO.Replace(newValue,
m2 =>
m2.Groups[1].Value + Tools.ConvertDate(m2.Groups[2].Value.Replace(".", ""), DateLocale.ISO) +
m2.Groups[3].Value);
}
// all citation dates: Remove time from date fields
newValue = CiteTemplateTimeInDateParameter.Replace(newValue, m3 =>
{
// keep end whitespace outside comment
string comm = m3.Groups[2].Value, whitespace = "";
Match whm = WhitespaceEnd.Match(comm);
if (whm.Success)
{
comm = comm.TrimEnd();
whitespace = whm.Groups[1].Value;
}
return m3.Groups[1].Value + "<!--" + comm + @"-->" + whitespace;
});
return newValue;
}