public static void MakeLangSpecificRegexes()
{
TemplateStart = Variables.NamespacesCaseInsensitive[10];
if (TemplateStart[0] == '(')
{
TemplateStart = TemplateStart.Insert(TemplateStart.Length - 1, "|");
}
else
{
TemplateStart = "(?:" + TemplateStart + "|)";
}
TemplateStart = @"\{\{\s*" + TemplateStart;
Category = new Regex(@"\[\[" + Variables.NamespacesCaseInsensitive[14] + @"(.*?)\]\]|<[Gg]allery\b([^>]*?)>[\s\S]*?</ ?[Gg]allery>", RegexOptions.Compiled);
Images = new Regex(@"\[\[" + Variables.NamespacesCaseInsensitive[6] + @"(.*?)\]\]|<[Gg]allery\b([^>]*?)>[\s\S]*?</ ?[Gg]allery>", RegexOptions.Compiled);
Stub = new Regex(@"{{.*?" + Variables.Stub + @"}}", RegexOptions.Compiled);
PossiblyCommentedStub = new Regex(@"(<!-- ?\{\{[^}]*?" + Variables.Stub + @"\b\}\}.*?-->|\{\{[^}]*?" + Variables.Stub + @"\}\})", RegexOptions.Compiled);
TemplateCall = new Regex(TemplateStart + @"\s*([^\]\|]*)\s*(.*)}}", RegexOptions.Compiled | RegexOptions.Singleline);
string s;
switch (Variables.LangCode)
{
case LangCodeEnum.ar:
s = "(?:تحويل|REDIRECT)";
break;
case LangCodeEnum.bg:
s = "(?:redirect|пренасочване|виж)";
break;
case LangCodeEnum.fi:
s = "(?:OHJAUS|UUDELLEENOHJAUS|REDIRECT)";
break;
case LangCodeEnum.he:
s = "(?:הפניה|REDIRECT)";
break;
case LangCodeEnum.Is:
s = "(?:tilvísun|TILVÍSUN|REDIRECT)";
break;
case LangCodeEnum.nl:
s = "(?:REDIRECT|DOORVERWIJZING)";
break;
case LangCodeEnum.ru:
s = "(?:REDIRECT|ПЕРЕНАПРАВЛЕНИЕ|ПЕРЕНАПР)";
break;
case LangCodeEnum.sk:
s = "(?:redirect|presmeruj)";
break;
case LangCodeEnum.uk:
s = "(?:REDIRECT|ПЕРЕНАПРАВЛЕННЯ|ПЕРЕНАПР)";
break;
default:
s = "REDIRECT";
break;
}
Redirect = new Regex(@"^#" + s + @".*?\[\[\s*:?\s*([^\|]*?)\s*(|\|.*?)]\]", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline);
if (Variables.LangCode == LangCodeEnum.ru)
{
Disambigs = new Regex(TemplateStart + @"([Dd]isambiguation|[Dd]isambig|[Нн]еоднозначность)}}", RegexOptions.Compiled);
}
else
{
Disambigs = new Regex(@"{{([234]CC|[Dd]isambig|[Gg]eodis|[Hh]ndis|[Ss]urname|[Nn]umberdis|[Rr]oaddis|[Ll]etter-disambig)}}", RegexOptions.Compiled);
}
s = "(?i:defaultsort)";
if (Variables.LangCode == LangCodeEnum.en)
{
s = "(?:(?i:defaultsort|lifetime|BIRTH-DEATH-SORT)|BD)";
}
Defaultsort = new Regex(TemplateStart + s + @"\s*[:|](?<key>[^\}]*)}}",
RegexOptions.Compiled | RegexOptions.ExplicitCapture);
//if (Variables.URL == Variables.URLLong)
// s = Regex.Escape(Variables.URL);
//else
{
int pos = Tools.FirstDifference(Variables.URL, Variables.URLLong);
s = Regex.Escape(Variables.URLLong.Substring(0, pos));
s += "(?:" + Regex.Escape(Variables.URLLong.Substring(pos)) + @"index\.php(?:\?title=|/)|"
+ Regex.Escape(Variables.URL.Substring(pos)) + "/wiki/" + ")";
}
ExtractTitle = new Regex("^" + s + "([^?&]*)$", RegexOptions.Compiled);
}