Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2023
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.21 KB | None | 0 0
  1. using System;
  2. using System.Text.RegularExpressions;
  3. using WikiSharpAPI;
  4.  
  5. namespace AAB
  6. {
  7.     public class RegularAfdVoteRetriever : AfdVoteRetriever
  8.     {
  9.         public override string RetrieveAfdVotes(string discussionPage)
  10.         {
  11.             if (string.IsNullOrEmpty(discussionPage))
  12.                 return null;
  13.  
  14.             DataPage wikiPage = new DataPage(Data, discussionPage);
  15.  
  16.             if (!wikiPage.Read(ReadPart.NonTalkPage))
  17.                 return null;
  18.  
  19.             wikiPage.Content = Regex.Replace(wikiPage.Content, @"<s>[^<]+</s>", @"");
  20.  
  21.             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;
  22.             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;
  23.             int mergeMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)merge", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
  24.             int redirectMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)redirect", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
  25.             int userfyMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)userfy", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
  26.             int moveMatches = Regex.Matches(wikiPage.Content, @"^[:*]{0,15}?(?:.(?<!''')){0,30}?(?<!<s>)'''?(?<!<s>)[^']{0,15}?(?<!<s>)(?:rename|move)", RegexOptions.IgnoreCase | RegexOptions.Multiline).Count;
  27.  
  28.             MatchCollection mc = Regex.Matches(wikiPage.Content, @"\|Relisted\]\] to generate");
  29.             Match sort = Regex.Match(wikiPage.Content, @"^.{0,20}<small>\s*(''')?Note(''')?\s*:\s*This debate", RegexOptions.Multiline | RegexOptions.IgnoreCase);
  30.  
  31.             PageRevisionList pageRevisionList = new PageRevisionList();
  32.             if (!pageRevisionList.AddRevisionsFromPage(discussionPage, ListOrder.NewerToOlder))
  33.                 return null;
  34.  
  35.             int pc =
  36.                 Math.Max(0,
  37.                     pageRevisionList.UniqueUsersExcludingSuffix("bot", true).Count - 1 - (mc.Count > 0 ? 1 : 0) - (sort.Success ? 1 : 0) // excl. nominator and excl. relist and excl. delsort
  38.                 );
  39.  
  40.             string info = "{{tooltip|";
  41.  
  42.             info += "'''" + pc + "''' participant" + (pc > 1 || pc == 0 ? "s" : "");
  43.            
  44.             info += "|del: " + deleteMatches + ", keep: " + keepMatches;
  45.             if (moveMatches > 0) info += ", move: " + moveMatches;
  46.             if (mergeMatches > 0) info += ", merge: " + mergeMatches;
  47.             if (redirectMatches > 0) info += ", redir: " + redirectMatches;
  48.             if (userfyMatches > 0) info += ", userfy: " + userfyMatches;
  49.  
  50.             info += "}}";
  51.  
  52.             if (mc.Count > 0)
  53.                 info += "; '''{{color|#FF4F00|relisted}}'''";
  54.  
  55.             return info;
  56.         }
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement