本文整理汇总了C#中WikiFunctions.Parse.Parsers.FixDatesAInternal方法的典型用法代码示例。如果您正苦于以下问题:C# Parsers.FixDatesAInternal方法的具体用法?C# Parsers.FixDatesAInternal怎么用?C# Parsers.FixDatesAInternal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WikiFunctions.Parse.Parsers
的用法示例。
在下文中一共展示了Parsers.FixDatesAInternal方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FixCitationTemplatesME
//.........这里部分代码省略.........
// date = YYYY --> year = YYYY if year the same
// with Lua no need to rename date to year when date = YYYY
if (TheDate.Length == 4)
{
if(TheYear.Equals(TheDate))
newValue = Tools.RemoveTemplateParameter(newValue, "date");
}
// year = full date --> date = full date
if (TheYear.Length > 5)
{
string TheYearCorected = IncorrectCommaInternationalDates.Replace(TheYear, @"$1 $2");
TheYearCorected = IncorrectCommaAmericanDates.Replace(TheYearCorected, @"$1 $2, $3");
if(!TheYearCorected.Equals(TheYear))
{
newValue = Tools.UpdateTemplateParameterValue(newValue, "year", TheYearCorected);
TheYear = TheYearCorected;
}
}
if (TheYear.Length > 5 && (WikiRegexes.ISODates.IsMatch(TheYear) || WikiRegexes.InternationalDates.IsMatch(TheYear)
|| WikiRegexes.AmericanDates.IsMatch(TheYear)))
{
TheDate = TheYear;
TheYear = "";
newValue = Tools.RenameTemplateParameter(newValue, "year", "date");
}
// year=YYYY and date=...YYYY -> remove year; not for year=YYYYa
if (TheYear.Length == 4 && TheDate.Contains(TheYear) && YearOnly.IsMatch(TheYear))
{
Parsers p = new Parsers();
TheDate = p.FixDatesAInternal(TheDate);
if(WikiRegexes.InternationalDates.IsMatch(TheDate) || WikiRegexes.AmericanDates.IsMatch(TheDate)
|| WikiRegexes.ISODates.IsMatch(TheDate))
{
TheYear = "";
newValue = Tools.RemoveTemplateParameter(newValue, "year");
}
}
// month=Month and date=...Month... OR month=Month and date=same month (by conversion from ISO format)Ors month=nn and date=same month (by conversion to ISO format)
int num;
if ((TheMonth.Length > 2 && TheDate.Contains(TheMonth)) // named month within date
|| (TheMonth.Length > 2 && Tools.ConvertDate(TheDate, DateLocale.International).Contains(TheMonth))
|| (int.TryParse(TheMonth, out num) && Regex.IsMatch(Tools.ConvertDate(TheDate, DateLocale.ISO), @"\-0?" + TheMonth + @"\-")))
newValue = Tools.RemoveTemplateParameter(newValue, "month");
// date = Month DD and year = YYYY --> date = Month DD, YYYY
if (!YearOnly.IsMatch(TheDate) && YearOnly.IsMatch(TheYear))
{
if (!WikiRegexes.AmericanDates.IsMatch(TheDate) && WikiRegexes.AmericanDates.IsMatch(TheDate + ", " + TheYear))
{
if(!TheDate.Contains(TheYear))
newValue = Tools.SetTemplateParameterValue(newValue, "date", TheDate + ", " + TheYear);
newValue = Tools.RemoveTemplateParameter(newValue, "year");
}
else if (!WikiRegexes.InternationalDates.IsMatch(TheDate) && WikiRegexes.InternationalDates.IsMatch(TheDate + " " + TheYear))
{
if(!TheDate.Contains(TheYear))
newValue = Tools.SetTemplateParameterValue(newValue, "date", TheDate + " " + TheYear);
newValue = Tools.RemoveTemplateParameter(newValue, "year");
}
}
示例2: CompletePersonDataDate
/// <summary>
/// Sets persondata date of birth/death fields based on unformatted info in zeroth section of article, provided dates match existing birth/death categories
/// </summary>
/// <param name="personData">Persondata template call</param>
/// <param name="articletext">The article text</param>
/// <returns>The updated persondata template call</returns>
private static string CompletePersonDataDate(string personData, string articletext)
{
// get the existing values
string existingBirthYear = Tools.GetTemplateParameterValue(personData, "DATE OF BIRTH", true);
string existingDeathYear = Tools.GetTemplateParameterValue(personData, "DATE OF DEATH", true);
if (existingBirthYear.Length == 4 || existingDeathYear.Length == 4)
{
Parsers p = new Parsers();
string birthDateFound = "", deathDateFound = "";
string zerothSection = Tools.GetZerothSection(articletext);
// remove references, wikilinks, templates
zerothSection = WikiRegexes.Refs.Replace(zerothSection, " ");
zerothSection = WikiRegexes.SimpleWikiLink.Replace(zerothSection, " ");
if (WikiRegexes.CircaTemplate.IsMatch(zerothSection))
zerothSection = zerothSection.Substring(0, WikiRegexes.CircaTemplate.Match(zerothSection).Index);
zerothSection = Tools.NestedTemplateRegex("ndash").Replace(zerothSection, " –");
zerothSection = WikiRegexes.NestedTemplates.Replace(zerothSection, " ");
// clean up any format errors in birth/death dates we may want to use
zerothSection = p.FixDatesAInternal(zerothSection);
// look for date in bracketed text, check date matches existing value (from categories)
foreach (Match m in BracketedBirthDeathDate.Matches(zerothSection))
{
string bValue = m.Value;
if (!UncertainWordings.IsMatch(bValue) && !ReignedRuledUnsure.IsMatch(bValue) && !FloruitTemplate.IsMatch(bValue))
{
string bBorn, bDied = "";
// split on died/spaced dash
if (FreeFormatDied.IsMatch(bValue))
{
bBorn = bValue.Substring(0, FreeFormatDied.Match(bValue).Index);
bDied = bValue.Substring(FreeFormatDied.Match(bValue).Index);
}
else
bBorn = bValue;
// born
if (existingBirthYear.Length == 4)
{
if (WikiRegexes.AmericanDates.Matches(bBorn).Count == 1 && WikiRegexes.AmericanDates.Match(bBorn).Value.Contains(existingBirthYear))
birthDateFound = WikiRegexes.AmericanDates.Match(bBorn).Value;
else if (WikiRegexes.InternationalDates.Matches(bBorn).Count == 1 && WikiRegexes.InternationalDates.Match(bBorn).Value.Contains(existingBirthYear))
birthDateFound = WikiRegexes.InternationalDates.Match(bBorn).Value;
}
// died
if (existingDeathYear.Length == 4)
{
if (WikiRegexes.AmericanDates.Matches(bDied).Count == 1 && WikiRegexes.AmericanDates.Match(bDied).Value.Contains(existingDeathYear))
deathDateFound = WikiRegexes.AmericanDates.Match(bDied).Value;
else if (WikiRegexes.InternationalDates.Matches(bDied).Count == 1 && WikiRegexes.InternationalDates.Match(bDied).Value.Contains(existingDeathYear))
deathDateFound = WikiRegexes.InternationalDates.Match(bDied).Value;
}
if (birthDateFound.Length > 0 || deathDateFound.Length > 0)
break;
}
}
if (birthDateFound.Length > 4)
personData = Tools.SetTemplateParameterValue(personData, "DATE OF BIRTH", Tools.ConvertDate(birthDateFound, DeterminePredominantDateLocale(articletext, true)), false);
if (deathDateFound.Length > 4)
personData = Tools.SetTemplateParameterValue(personData, "DATE OF DEATH", Tools.ConvertDate(deathDateFound, DeterminePredominantDateLocale(articletext, true)), false);
}
return personData;
}
示例3: FixCitationTemplatesME
//.........这里部分代码省略.........
paramsFound.Remove("pages");
paramsFound.Add("pages", pages);
}
// with Lua no need to rename date to year when date = YYYY, just remove year and date duplicating each other
if (TheDate.Length == 4 && TheYear.Equals(TheDate))
newValue = Tools.RemoveTemplateParameter(newValue, "date");
// year = full date --> date = full date
if (TheYear.Length > 5)
{
string TheYearCorected = IncorrectCommaInternationalDates.Replace(TheYear, @"$1 $2");
TheYearCorected = IncorrectCommaAmericanDates.Replace(TheYearCorected, @"$1 $2, $3");
if (!TheYearCorected.Equals(TheYear))
{
newValue = Tools.UpdateTemplateParameterValue(newValue, "year", TheYearCorected);
TheYear = TheYearCorected;
}
if (WikiRegexes.ISODates.IsMatch(TheYear) || WikiRegexes.InternationalDates.IsMatch(TheYear)
|| WikiRegexes.AmericanDates.IsMatch(TheYear))
{
TheDate = TheYear;
TheYear = "";
newValue = Tools.RenameTemplateParameter(newValue, "year", "date");
}
}
// year=YYYY and date=...YYYY -> remove year; not for year=YYYYa
else if (TheYear.Length == 4 && TheDate.Contains(TheYear) && YearOnly.IsMatch(TheYear))
{
Parsers p = new Parsers();
TheDate = p.FixDatesAInternal(TheDate);
if (WikiRegexes.InternationalDates.IsMatch(TheDate) || WikiRegexes.AmericanDates.IsMatch(TheDate)
|| WikiRegexes.ISODates.IsMatch(TheDate))
{
TheYear = "";
newValue = Tools.RemoveTemplateParameter(newValue, "year");
}
}
// month=Month and date=...Month... OR month=Month and date=same month (by conversion from ISO format) Or month=nn and date=same month (by conversion to ISO format)
int num;
if ((TheMonth.Length > 2 && TheDate.Contains(TheMonth)) // named month within date
|| (TheMonth.Length > 2 && Tools.ConvertDate(TheDate, DateLocale.International).Contains(TheMonth))
||
(int.TryParse(TheMonth, out num) &&
Regex.IsMatch(Tools.ConvertDate(TheDate, DateLocale.ISO), @"\-0?" + TheMonth + @"\-")))
{
newValue = Tools.RemoveTemplateParameter(newValue, "month");
}
// date = Month DD and year = YYYY --> date = Month DD, YYYY
if (!YearOnly.IsMatch(TheDate) && YearOnly.IsMatch(TheYear))
{
if (!WikiRegexes.AmericanDates.IsMatch(TheDate) &&
WikiRegexes.AmericanDates.IsMatch(TheDate + ", " + TheYear))
{
if (!TheDate.Contains(TheYear))
{
newValue = Tools.SetTemplateParameterValue(newValue, "date", TheDate + ", " + TheYear);
}
newValue = Tools.RemoveTemplateParameter(newValue, "year");
}