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.1.1
//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]:");
Match disbag = Regex.Match(ArticleText, @"==(\s*|)[Dd][Iıİi][SsŞş]\s*[Bb][Aa][ĞğGg][Ll][Aa][Nn][Tt][Iıİi][Ll][Aa][[Rr](\s*|)==");
Match taslak = Regex.Match(ArticleText, @"{{.*(-|)[Tt]aslak(\s*|)}}");
Regex one = new Regex(@"([Kk][Aa][Yy][Nn][Aa][Kk][ÇçCc][Aa]|==(\s*|)[Kk][Aa][Yy][Nn][Aa][Kk](\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(@"\=\=\s*Kaynakça\s*\=\=\r\n\[\[(Kategori|Category)\:\s*", RegexOptions.Singleline);
Regex seven = new Regex(@"\=\=\s*Kaynakça\s*\=\=\r\n\r\n\[\[(Kategori|Category)\:\s*", 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")) {
if(!(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|30em}}\r\n\n");
else if(taslak.Success) ArticleText = ArticleText.Insert(taslak.Index, "\n== Kaynakça ==\n{{kaynakça|30em}}\r\n\n");
else if(kat.Success) ArticleText = ArticleText.Insert(kat.Index, "== Kaynakça ==\n{{kaynakça|30em}}\r\n\n");
else ArticleText += "\r\n\r\n== Kaynakça ==\n{{kaynakça|30em}}";
ArticleText = ArticleText.Replace("\n\n== Kaynakça ==", "\n== Kaynakça ==");
Summary = "kaynakça başlığı ekleniyor";
}
if(six.Match(ArticleText).Success) {
Regex R1 = new Regex(@"\=\=\s*Kaynakça\s*\=\=");
ArticleText = R1.Replace(ArticleText, "== Kaynakça ==\r\n{{kaynakça|30em}}\n");
Summary = "kaynakça şablonu ekleniyor";
} else if(seven.Match(ArticleText).Success) {
Regex R2 = new Regex(@"\=\=\s*Kaynakça\s*\=\=");
ArticleText = R2.Replace(ArticleText, "== Kaynakça ==\r\n{{kaynakça|30em}}");
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 kaynakça = Regex.Match(ArticleText, @"\=\=\s*?Kaynakça\s*?\=\=", RegexOptions.IgnoreCase);
if (kaynakça.Success) ArticleText = ArticleText.Insert(kaynakça.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
else if (disbag.Success) ArticleText = ArticleText.Insert(disbag.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 (kat.Success) ArticleText = ArticleText.Insert(kat.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;
}