WikiFunctions.Parse.Parsers.CiteTemplateME C# (CSharp) Method

CiteTemplateME() private static method

convert invalid date formats like DD-MM-YYYY, MM-DD-YYYY, YYYY-D-M, YYYY-DD-MM, YYYY_MM_DD etc. to iso format of YYYY-MM-DD
private static CiteTemplateME ( Match m ) : string
m System.Text.RegularExpressions.Match
return string
        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;
        }
Parsers