Wikipedia:Bots/Requests for approval/BHGbot 6/AWB module
Appearance
// AWB module used by BHGbot 6 // v1.01, 29 May 2020 // // Yes, the code is ugly and crude. But it's good enough to do the job // Changes: v1.01 adds some safety checks public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip) { Skip = false; Summary = "[[WP:BHGbot 6]]: "; if (wikiNamespace != 0) { // This page is not in article space, so skip it Skip = true; return ArticleText; } string nuText = ArticleText; string fixedText = ""; string escapedArticleTitle = Regex.Escape(ArticleTitle); string startEponCatPattern = @"\[\[Category[_ ]*:[_ ]*" + escapedArticleTitle; string startEponCatText = "[[Category:" + ArticleTitle; string fullEponCatFixedText = startEponCatText + "| ]]"; string fullEponCatPattern = startEponCatPattern + @"[_ ]*(\|[^\]]*)?\]\]"; Match fullEponCatMatch = Regex.Match(ArticleText, fullEponCatPattern); if (!fullEponCatMatch.Success) { // We haven't found an eponymous category, so skip this article Skip = true; return ArticleText; } string foundCat = fullEponCatMatch.Value; string catBeforeEponCatPattern = @"(?<othercat>\[\[Category:[^\]]*\]\].*)(?<eponcat>" + Regex.Escape(foundCat) + @")"; fixedText = Regex.Replace(nuText, catBeforeEponCatPattern, "${eponcat}\n${othercat}", RegexOptions.Singleline | RegexOptions.ExplicitCapture); if (fixedText != nuText) { Summary = Summary + "eponymous category first, per [[MOS:CATORDER]]; "; nuText = fixedText; } fixedText = Regex.Replace(nuText, fullEponCatPattern, fullEponCatFixedText); if (fixedText != nuText) { Summary = Summary + "fixed sort key; "; nuText = fixedText; } if (nuText == "") { // This is a safety check. Don't return a blank page Skip = true; return ArticleText; } if (nuText != ArticleText) { Summary = Summary + "[[WP:GENFIXES]]"; return nuText; } // If we get here, there was no replacement, so skip Skip = true; return ArticleText; }