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
//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, @"{{.*(-|)taslak(\s*|)}}", RegexOptions.IgnoreCase);
			
			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")||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}}";
						
						Summary += "Kaynakça başlığı ekleniyor";
						ArticleText = ArticleText.Replace("\n\n== Kaynakça ==", "\n== Kaynakça ==");
					} 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";
					}
				}
			}
		
		//Not listesi
		Match kaynakça = Regex.Match(ArticleText, @"\=\=\s*?Kaynakça\s*?\=\=", RegexOptions.IgnoreCase);
		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);
		
		Regex şablon = new Regex(@"{{\s*?(efn|adn|adn\-la|adş)\s*?(\||\})", RegexOptions.IgnoreCase);
		Regex notlistesi = new Regex(@"{{\s*?(not\slistesi|notes|notelist)\s*?(\||\})", RegexOptions.IgnoreCase);
		Regex refgroup = new Regex(@"\<\s?(references|ref)\s*?group", RegexOptions.IgnoreCase);
		
		if (şablon.Match(ArticleText).Success) {
				if (!(notlistesi.Match(ArticleText).Success||refgroup.Match(ArticleText).Success)) {
					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";
				}
			}
		
		return ArticleText;
	}