Kullanıcı:ToprakBot/AWB modülleri/tartışma

Vikipedi, özgür ansiklopedi
Tartışma şablonu düzeltme modülü

YİB, Eski SAS, Vikiproje gibi şablonları tartışma şablonuna entegre eder.

//AutoWikiBrowser - Tartışma Şablonu Düzeltici - V1.5.1
//Yazar: ToprakM
public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip)
{

	Summary = "Tartışma şablonu düzeltiliyor";
	Skip = false;
	
	var tartismasablonu = "";
	var sayfauyumsuzlugu = false;
	
	//Düzeltilecek şablon yoksa geç
	Regex sablonbulucu = new Regex(@"\{\{\s*?(vikiproje|eski sa|yib|YİB|vpbanner|VPBanner|eski\u005Fsa)", RegexOptions.IgnoreCase);
	if (!(sablonbulucu.Match(ArticleText).Success)) {
		Skip = true;
		Summary = "Düzeltilecek şablon yok";
	}
		
	//Tartışma şablonunda parametre varsa geç
	Regex tartismaparametre = new Regex(@"(\{\{\s*?tartışma\s*?\n*?\s*?(\||\}\})\s*)", RegexOptions.IgnoreCase);

	if (tartismaparametre.Match(ArticleText).Success) {
		var esles1 = tartismaparametre.Match(ArticleText);
		if (esles1.Groups[2].Value == "|") {
			Skip = true;
			Summary = "Tartışma şablonunda parametre tespit edildi";
		}
	}

	//Sayfada PAGENAME varsa geç
	Regex PAGENAME = new Regex(@"\{\{\s*?PAGENAME\s*?\}\}");
	if (PAGENAME.Match(ArticleText).Success) {
		Skip = true;
		Summary = "PAGENAME tespit edildi";
	}

	if (Skip != true) {
		
		//Tartışma şablonunu kaldır
		if (tartismaparametre.Match(ArticleText).Success) {
			var esles2 = tartismaparametre.Match(ArticleText);
			ArticleText = ArticleText.Replace(esles2.Groups[1].Value, "");
		}
		
		//Vikiproje şablonları tespit edici
		
		string vpr = "";
		bool bosmu = false;
		var teksablon = "";
		
		while (bosmu == false) 
		{
			Regex sablon = new Regex(@"(\{\{\s*?vikiproje\s*\|.*?\}\}\s*)", RegexOptions.IgnoreCase);
			
			var esles3 = sablon.Match(ArticleText);
			teksablon = esles3.Groups[1].Value;
			
			if (teksablon == "") {
				bosmu = true;
			} else {
				if (vpr == "") {
					vpr = teksablon + "\n";
				} else {
				vpr += "\n" + teksablon + "\n";
				}
				
				ArticleText = ArticleText.Replace(esles3.Groups[1].Value, "");
			}
		}
		
		Regex TRyerlesim = new Regex (@"(\{\{\s*vikiproje türkiye yerleşim birimleri.*?\}\})", RegexOptions.IgnoreCase);
		var TResles = TRyerlesim.Match(ArticleText);
		var TRsablon = TResles.Groups[1].Value;
		if (TRsablon != "") {
			ArticleText = ArticleText.Replace(TResles.Groups[1].Value, "");
			if (vpr == "") {
				vpr = TRsablon + "\n";
			} else {
			vpr += "\n" + TRsablon + "\n";
			}
		}
			
		//Vikiproje şablonları son
		//Eski SAS tespit edici
		
		bosmu = false;
		var sassablon = "";
		var sas = "";
		int i = 0;
		string arasonuç = "";
		string aratarih = "";
		string sonuç = "";
		string tarih = "";
		
		while (bosmu == false)
		{
			i++;
			
			Regex sasregex = new Regex(@"(\{\{\s*eski( |\u005F)sa[ms].*?\}\}\s*)", RegexOptions.IgnoreCase | RegexOptions.Singleline);
			
			var sasesles = sasregex.Match(ArticleText);
			sassablon = sasesles.Groups[1].Value;
			
			if (sassablon == "") {
				bosmu = true;
			} else {
				Regex sonucreg = new Regex(@"\|\s*sonuç\s*\=\s*(.*?)\s*[\|\}]", RegexOptions.IgnoreCase | RegexOptions.Multiline);
				
				var esss = sonucreg.Match(ArticleText);
				arasonuç = esss.Groups[1].Value;
				
				if ((arasonuç.Contains("fikir")) || (arasonuç.Contains("varıla"))) {
					arasonuç = "kararsız";
				} if (arasonuç.Contains("kal")) {
					arasonuç = "kalsın";
				} if (arasonuç.Contains("sil")) {
					arasonuç = "silinsin";
				} if ((arasonuç.Contains("birleş")) || (arasonuç.Contains("aktar"))) {
					arasonuç = "birleştirilsin";
				}
				
				if (sonuç == "") {
					sonuç = "|sonuç" + i + " = " + arasonuç;
				} else {
					sonuç = "\n|sonuç" + i + " = " + arasonuç;
				}
				
				Regex sassayfaregex = new Regex(@"\|\s*(oylamasayfası|sayfa)\s*\=\s*(.*?)\s*[\|\}]", RegexOptions.IgnoreCase | RegexOptions.Multiline);
				var ssassayfa = sassayfaregex.Match(ArticleText);
				var sassayfa = ssassayfa.Groups[2].Value;
				var sayfaadı = ArticleTitle.Replace("Tartışma:", "");
				
				Regex cokadaylik = new Regex(@"(.*?)(\s\(\d*?\. aday gösterme\))", RegexOptions.IgnoreCase);
				sassayfa = cokadaylik.Replace(sassayfa, "$1");
				
				if (!(sassayfa == "")) {
					if (!(sassayfa == sayfaadı)) {
						sayfauyumsuzlugu = true;
					}
				}
				
				Regex sastarih = new Regex(@"\|\s*tarih\s*\=\s*(.*?)\s*[\|\}]", RegexOptions.IgnoreCase | RegexOptions.Multiline);
				
				var ssse = sastarih.Match(ArticleText);
				aratarih = ssse.Groups[1].Value;
				
				tarih = "\n|tarih" + i + " = " + aratarih;
				
				sas = "" + sas + sonuç + tarih;
				ArticleText = ArticleText.Replace(sasesles.Groups[1].Value, "");
			}
		}
		
		//Eski SAS son
		//YİB şablonu tespit edici
		
		bool yib = false;
		Regex yibsablonregex = new Regex(@"\{\{\s*y[iİ]b\s*\}\}\s*", RegexOptions.IgnoreCase);
		if (yibsablonregex.Match(ArticleText).Success) {
			yib = true;
		}
		ArticleText = yibsablonregex.Replace(ArticleText, "");
		
		//YİB son
		//Tartışma şablonu ekle
		tartismasablonu = "{{tartışma";
		if (yib == true) {
			tartismasablonu += " | yib = evet";
		}
		if (vpr != "") {
			tartismasablonu += "\n| proje = \n" + vpr + "\n";
		}
		if (sas != "") {
			if (vpr != "") {
				tartismasablonu += sas + "\n";
			} else {
				tartismasablonu += "\n" + sas + "\n";
			}
		}
		tartismasablonu += "}}";
		
		if (sayfauyumsuzlugu == true) {
			tartismasablonu += "\n[[Kategori:SAS adı ile madde adı uyuşmayan maddeler]]";
		}
	}
	
	//Son düzeltmeler
	Regex vpbanner = new Regex(@"\{\{\s*((Şablon|Ş)\s*?\:\s*?|)(vpbanner|VikiProjeAfişKabuğu|Vikiproje kapsama kutusu)\s*\|(1\=|)\s*?\}\}", RegexOptions.Multiline | RegexOptions.IgnoreCase);
	ArticleText = vpbanner.Replace(ArticleText, "");
	
	//Boş satır silici
	tartismasablonu = Regex.Replace(tartismasablonu, @"^\s+$[\r\n]*", string.Empty, RegexOptions.Multiline);
	
	tartismasablonu = tartismasablonu.Replace("}}}}", "}}\n}}");
	tartismasablonu = tartismasablonu.Replace("\n\n}}", "\n}}");
	
	if (ArticleText == "") {
		ArticleText = tartismasablonu + ArticleText;
	} else {
		ArticleText = tartismasablonu + "\n" + ArticleText;
	}
	
	ArticleText = ArticleText.Replace("}}\n\r\n\r\n", "}}\n\n");
	ArticleText = ArticleText.Replace("}}\n\r\n{{", "}}\n{{");
	
	ArticleText = ArticleText.Replace("]]\n\r\n\r\n", "]]\n\n");
	
	//Hata avcısı
	Regex hata1 = new Regex(@"VPBanner", RegexOptions.IgnoreCase);
	if (hata1.Match(ArticleText).Success) {
		if (Skip != true) {
			Skip = true;
			Summary = "HATA - 01 - Düzenlemede hata tespit edildi.";
		}
	}
	
	return ArticleText;
}