Kullanıcı:ToprakBot/AWB modülleri/kaynakça
- Kaynakça ekleme modülü
Sayfada kaynak varsa ancak kaynakça yoksa, ya da not varsa ancak not listesi yoksa kaynakçayı ve/veya not listesini mümkün olan en doğru yere ekler.
//AutoWikiBrowser - Kaynakça modülü V3.2
//Yazar: ToprakM
public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip) {
Skip = false;
Summary = "";
//Kaynakça
Match kat = Regex.Match(ArticleText, @"\[\[[KkCc]ategor[yi]\s*?:");
Match disbag = Regex.Match(ArticleText, @"==\s*?d[ıiİ][Şşs]\s*ba[Ğğg]lant[İiı]lar\s*?==", RegexOptions.IgnoreCase);
Match taslak = Regex.Match(ArticleText, @"{{(?:.{1,}\-|)[Tt]aslak\s*?}}");
Regex one = new Regex(@"(kaynak[çÇ]a|==\s*?kaynak\s*?==)", RegexOptions.IgnoreCase);
Regex two = new Regex(@"(R|r)eferences", RegexOptions.IgnoreCase);
Regex three = new Regex(@"==\s*(R|r)eferans(lar)\s*==", RegexOptions.IgnoreCase);
Regex four = new Regex(@"{{\s*reflist", RegexOptions.IgnoreCase);
Regex five = new Regex(@"==\s*[Kk]aynaklar\s*==", RegexOptions.IgnoreCase);
Regex six = new Regex(@"\={2,}\s*(?:Kaynakça|Kaynaklar)\s*\={2,}(?:\r\n){1,}\[\[(Kategori|Category)\:\s*", RegexOptions.Singleline);
Regex seven = new Regex(@"\={2,}\s*(?:Kaynakça|Kaynaklar)\s*\={2,}(?:\n)*?\={2,}.*?\={2,}", RegexOptions.Singleline);
Regex eight = new Regex(@"\{\{\s*([Kk]aynakça|[Rr]eflist|[Rr]eferences|[Rr]eference|[Kk]aynak listesi|[Rr]eferanslar|[Rr]efs)\s*(\||\}\})");
Regex nine = new Regex(@"<\s*references\s*(\/|)\s*\>");
if(ArticleText.Contains("<ref")&&(!(eight.Match(ArticleText).Success||nine.Match(ArticleText).Success))) {
if(!(one.Match(ArticleText).Success||two.Match(ArticleText).Success||three.Match(ArticleText).Success||four.Match(ArticleText).Success||five.Match(ArticleText).Success)) {
if(disbag.Success) ArticleText = ArticleText.Insert(disbag.Index, "== Kaynakça ==\n{{kaynakça}}\r\n\n");
else if(taslak.Success) ArticleText = ArticleText.Insert(taslak.Index, "\n== Kaynakça ==\n{{kaynakça}}\r\n\n");
else if(kat.Success) ArticleText = ArticleText.Insert(kat.Index, "== Kaynakça ==\n{{kaynakça}}\r\n\n");
else ArticleText += "\r\n\r\n== Kaynakça ==\n{{kaynakça}}";
ArticleText = ArticleText.Replace("\n\n== Kaynakça ==", "\n== Kaynakça ==");
Summary += "Kaynakça başlığı ekleniyor";
}
if(six.Match(ArticleText).Success||seven.Match(ArticleText).Success) {
Regex R1 = new Regex(@"\={2,}\s*(?:Kaynakça|Kaynaklar)\s*\={2,}", RegexOptions.IgnoreCase);
ArticleText = R1.Replace(ArticleText, "== Kaynakça ==\r\n{{kaynakça}}");
Summary = "Kaynakça şablonu ekleniyor";
}
Regex kaydz = new Regex(@"(\S\n{1})(\=\= Kaynakça ==)");
ArticleText = kaydz.Replace(ArticleText, "$1\n$2");
}
//Not listesi
Regex şablon = new Regex(@"{{\s*?(efn|adn|adn\-la|adş)\s*?(\||\})", RegexOptions.IgnoreCase);
Regex notlistesi = new Regex(@"{{\s*?(not\slistesi|notlar|notes|notelist)\s*?(\||\})", RegexOptions.IgnoreCase);
Regex notbaslik = new Regex(@"==\s*(not listesi|notlar|note list|notes|notelist)\s*==", RegexOptions.IgnoreCase);
Regex refgroup = new Regex(@"(\<|{{)\s*?(references|ref|kaynakça)\s*?\|?(group|grup)", RegexOptions.IgnoreCase);
if (şablon.Match(ArticleText).Success) {
if (!notlistesi.Match(ArticleText).Success&&!refgroup.Match(ArticleText).Success&&!notbaslik.Match(ArticleText).Success) {
Match kategori = Regex.Match(ArticleText, @"\[\[\s*?[kc]ategor[iy]\s*?\:", RegexOptions.IgnoreCase);
Match dışbağ = Regex.Match(ArticleText, @"\=\=\s*?Dış\sbağlantılar\s*?\=\=", RegexOptions.IgnoreCase);
Match kaynakça = Regex.Match(ArticleText, @"\=\=\s*?Kaynakça\s*?\=\=", RegexOptions.IgnoreCase);
//Match taslak = Regex.Match(ArticleText, @"{{.*(-|)taslak(\s*|)}}", RegexOptions.IgnoreCase);
if (kaynakça.Success) ArticleText = ArticleText.Insert(kaynakça.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
else if (dışbağ.Success) ArticleText = ArticleText.Insert(dışbağ.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
else if (taslak.Success) ArticleText = ArticleText.Insert(taslak.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
else if (kategori.Success) ArticleText = ArticleText.Insert(kategori.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
else ArticleText += "\r\n\r\n== Not listesi ==\n{{not listesi}}";
Summary = "Not listesi ekleniyor";
Regex notdz = new Regex(@"(\S\n{1})(\=\= Not listesi ==)");
ArticleText = notdz.Replace(ArticleText, "$1\n$2");
}
}
return ArticleText;
}