Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text.RegularExpressions;
- using WikiSharpAPI;
- namespace AAB
- {
- public class RegularAfdVoteRetriever : AfdVoteRetriever
- {
- public override string RetrieveAfdVotes(string discussionPage)
- {
- if (string.IsNullOrEmpty(discussionPage))
- return null;
- DataPage wikiPage = new DataPage(Data, discussionPage);
- if (!wikiPage.Read(ReadPart.NonTalkPage))
- return null;
- wikiPage.Content = Regex.Replace(wikiPage.Content, @"<s>[^<]+</s>", @"");
- int deleteMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)(soft[\s\-]*)?(delete|deletion|speedied)", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
- int keepMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)(do not delete|don't delete|keep|save)", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
- int mergeMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)merge", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
- int redirectMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)redirect", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
- int userfyMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)userfy", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
- int moveMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)(?:rename|move)", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
- MatchCollection mc = Regex.Matches(wikiPage.Content, @"\|Relisted\]\] to generate");
- Match sort = Regex.Match(wikiPage.Content, @"^.{0,20}<small>\s*(''')?Note(''')?\s*:\s*This debate", RegexOptions.Multiline | RegexOptions.IgnoreCase);
- PageRevisionList pageRevisionList = new PageRevisionList();
- if (!pageRevisionList.AddRevisionsFromPage(discussionPage, ListOrder.NewerToOlder))
- return null;
- int pc =
- Math.Max(0,
- pageRevisionList.UniqueUsersExcludingSuffix("bot", true).Count - 1 - (mc.Count > 0 ? 1 : 0) - (sort.Success ? 1 : 0) // excl. nominator and excl. relist and excl. delsort
- );
- string info = "{{tooltip|";
- info += "'''" + pc + "''' participant" + (pc > 1 || pc == 0 ? "s" : "");
- info += "|del: " + deleteMatches + ", keep: " + keepMatches;
- if (moveMatches > 0) info += ", move: " + moveMatches;
- if (mergeMatches > 0) info += ", merge: " + mergeMatches;
- if (redirectMatches > 0) info += ", redir: " + redirectMatches;
- if (userfyMatches > 0) info += ", userfy: " + userfyMatches;
- info += "}}";
- if (mc.Count > 0)
- info += "; '''{{color|#FF4F00|relisted}}'''";
- return info;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement