Kullanıcı:ToprakBot/AWB modülleri/kaynakça

Vikipedi, özgür ansiklopedi
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;
	}