Skip to content

Commit

Permalink
Performance tweak to MultipleIssues: only apply when relevant templat…
Browse files Browse the repository at this point in the history
…es found on page

git-svn-id: https://svn.code.sf.net/p/autowikibrowser/code/AWB@10948 5227b50d-9349-4574-b055-4b0a7525e11c
  • Loading branch information
Rob Wilmshurst committed May 17, 2015
1 parent b063d59 commit e0563fb
Showing 1 changed file with 25 additions and 12 deletions.
37 changes: 25 additions & 12 deletions WikiFunctions/Parse/Parsers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -628,24 +628,37 @@ public string MultipleIssues(string articleText)
if (!Variables.LangCode.Equals("en"))
return articleText;

articleText = MultipleIssuesOldCleanup(articleText);
// Performance: get all the templates, only apply mulitple issues functions if relevant templates found
List<string> allTemplates = GetAllTemplates(articleText).Select(s => "{{" + s + "}}").ToList();
bool hasMI = allTemplates.Where(s => WikiRegexes.MultipleIssues.IsMatch(s)).Any();

// Remove multiple issues with zero tags, fix excess newlines
articleText = WikiRegexes.MultipleIssues.Replace(articleText, MultipleIssuesSingleTag);
if(hasMI)
{
articleText = MultipleIssuesOldCleanup(articleText);

// get sections
string[] sections = Tools.SplitToSections(articleText);
StringBuilder newarticleText = new StringBuilder();
// Remove multiple issues with zero tags, fix excess newlines
articleText = WikiRegexes.MultipleIssues.Replace(articleText, MultipleIssuesSingleTag);
}

foreach(string s in sections)
if(hasMI || allTemplates.Where(s => (WikiRegexes.MultipleIssuesArticleMaintenanceTemplates.IsMatch(s) ||
WikiRegexes.MultipleIssuesSectionMaintenanceTemplates.IsMatch(s))).Any())
{
if(!s.StartsWith("="))
newarticleText.Append(MIZerothSection(s, WikiRegexes.MultipleIssuesArticleMaintenanceTemplates));
else
newarticleText.Append(MILaterSection(s, WikiRegexes.MultipleIssuesSectionMaintenanceTemplates).TrimStart());
// get sections
string[] sections = Tools.SplitToSections(articleText);
StringBuilder newarticleText = new StringBuilder();

foreach(string s in sections)
{
if(!s.StartsWith("="))
newarticleText.Append(MIZerothSection(s, WikiRegexes.MultipleIssuesArticleMaintenanceTemplates));
else
newarticleText.Append(MILaterSection(s, WikiRegexes.MultipleIssuesSectionMaintenanceTemplates).TrimStart());
}

return newarticleText.ToString().TrimEnd();
}

return newarticleText.ToString().TrimEnd();
return articleText;
}

private string MIZerothSection(string zerothsection, Regex Templates)
Expand Down

0 comments on commit e0563fb

Please sign in to comment.