public static string StickyLinks(string articleText)
{
foreach (Match m in WikiRegexes.PipedWikiLink.Matches(articleText))
{
string a = m.Groups[1].Value;
string b = m.Groups[2].Value;
if (b.Trim().Length == 0 || a.Contains(","))
continue;
if (Tools.TurnFirstToLower(a).StartsWith(Tools.TurnFirstToLower(b), StringComparison.Ordinal))
{
bool hasSpace = false;
if (a.Length > b.Length)
hasSpace = a[b.Length] == ' ';
string search = @"\[\[" + Regex.Escape(a) + @"\|" + Regex.Escape(b) +
@"\]\]" + (hasSpace ? "[ ]+" : "") + Regex.Escape(a.Remove(0,
b.Length + (hasSpace ? 1 : 0))) + @"\b";
//first char should be capitalized like in the visible part of the link
a = a.Remove(0, 1).Insert(0, b[0] + "");
articleText = Regex.Replace(articleText, search, "[[" + a + @"]]");
}
}
return articleText;
}