Kullanıcı:ToprakBot/AWB modülleri/tartışma
Görünüm
- 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;
}