User:Doc James/cosmetics.js

// /** * هذا السكريبت يقوم بعمليات تجميلية عند الضغط على زر نشر التغييرات * أو زر أظهر معاينة؛ وذلك فقط عندما يقوم المستخدم بأي تعديل على الصفحة ذاتها * قائمة التعديلات: **تصحيح الفاصلة الأجنبية **إزالة المسافة بين القوسين **إزالة الفراغات والمسافات المتكررة **إزالة الأسطر المتكررة **توحيد عناوين الأقسام في المقالات، كالمراجع، والوصلات الخارجية **ترتيب التصنيفات **تعريب خواص الصور **ترتيب القوالب في أسفل الصفحة * */

/*التحقق إذا ما كان المستخدم قد قام بأي تعديل على الصفحة*/ /*التحقق إذا كان المستخدم يعدل في النطاق الرئيسي*/ if (mw.config.get( 'wgNamespaceNumber' ) === 0	&& mw.config.get('wgAction') === "edit"){ /*هل غير المستخدم أي شيء في نص المقالة؟*/ $('#wpTextbox1').change(function {   	/*عند الضغط على زر الحفظ، أو المعاينة ستتم العمليات*/	$('#wpSave,#wpPreview').click (function{ run ; });  }); }

/*الدالة الرئيسية*/

function run { var content = $('#wpTextbox1').val;

/*التحقق إذا كان المستخدم لا يعدل في التحويلات وصفحات التوضيح*/ if (!content.match (/\#تحويل/g) 	&& !content.match (/\#REDIRECT/g)	&& !content.match (/\{\{توضيح\}\}/g)	&& !mw.config.get('wgTitle').match (/توضيح/g)){ content = commaFix (content); content = arDate (content); //content = tagging (content); content = decodeUrl (content); content = sorting (content); content = replacing (content); $('#wpTextbox1').val(content); } }

/*تصحيح الفاصلة الأجنبية*/ function commaFix (content){ var commaPattern = content.match(/.{3},.{3}/g); if (commaPattern) { for (var i = 0; i < commaPattern.length; i++) { var is = new RegExp(".*[ا-ي].*"); var num = new RegExp(".*\\d+.*"); /*التحقق أن الفاصلة الأجنبية موجودة داخل نص عربي*/ if (is.test(commaPattern[i]) && !num.test(commaPattern[i])) { content = content.replace(commaPattern[i],commaPattern[i].replace(/ ,/g, ",").replace(/,/g, ", ").replace (/\s{2,}/g," ")); content = content.replace(commaPattern[i], commaPattern[i].replace(", ", "، ")); content = content.replace(commaPattern[i], commaPattern[i].replace(" ,", "،")); content = content.replace(commaPattern[i], commaPattern[i].replace(", ", "، ")); content = content.replace(", ", ", "); content = content.replace(" ، ", "، "); content = fixSpaceComma (content); }		}	}	return content; }

/** * دالة لتعريب التاريخ المنقول من الويكيات الأجنبية * على سبيل المثال * يناير 26, * ستصبح * 26 يناير */

function arDate (content){ var arDate = content.match(/(يناير|فبراير|مارس|أبريل|إبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر) \d{1,2},/g ); if (arDate) { for (var i = 0; i < arDate.length; i++) { content = content.replace (arDate[0], arDate[0].match(/\d+/g).map(Number)+" "+arDate[0].replace (/\d{1,2},/g,"").trim); }	}	return content; }

function fixSpaceComma (content){ var commaPattern = content.match(/.{3}،.{3}/g); if (commaPattern) { for (var i = 0; i < commaPattern.length; i++) { var num = new RegExp(".*\\d+.*"); if (!num.test(commaPattern[i])) { content = content.replace(commaPattern[i],commaPattern[i].replace(/ ،/g, "،").replace(/،/g, "، ").replace (/\s{2,}/g," ")); }		}	}	return content; }

/*جلب الشهر والتاريخ لاستخدامهما في قوالب الصيانة*/ function getMonthYear { var months = ["يناير", "فبراير", "مارس", "إبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"]; var date = new Date; var currentDate = months[date.getMonth]+" "+date.getFullYear; return currentDate; }

/*وسم المقالات*/ function tagging (content){ /*وسم المقالات التي لا تحتوي على شريط بوابات*/ if (!content.includes ("{{شريط بوابات") && !content.includes ("مقالات بحاجة لشريط بوابات")	&& !$("#firstHeading").text.includes ("تعديل قسم")){ content = content + "\n\n"; }

/*وسم المقالات التي لا تحتوي على وصلات داخلية*/ if (!content.includes ("\[\\[") && !content.includes ("{{نهاية مسدودة")	&& !$("#firstHeading").text.includes ("تعديل قسم")){ content = "{{نهاية مسدودة|"+getMonthYear+"}}\n"+content; }	/*وسم المقالات التي لا تحتوي تصانيف*/ if (!content.includes ("\[\\[تصنيف:") && !content.includes ("{{غير مصنفة")	&& !$("#firstHeading").text.includes ("تعديل قسم")){ content = content.replace ("[[تصنيف:","{{غير مصنفة|"+getMonthYear+"}}\n"+"[[تصنيف:");	}	return content;	}

/*تدقيق إملائي*/ function spellCheck (content){ content = content.replace (/إست.{3}/g, function replacer(match){   	return match.replace ("إست","است");	}); //استفعال content = content.replace (" الى ", " إلى "); content = content.replace (" فى ", " في "); content = content.replace (" اول ", " أول "); content = content.replace (" اكثر ", " أكثر "); content = content.replace (" امريكي ", " أمريكي "); content = content.replace (" اول ", " أول "); content = content.replace (" إثنان ", " اثنان "); content = content.replace (" إمرأة ", " امرأة "); content = content.replace (" إبنة ", " ابنة "); content = content.replace (" إبن ", " ابن "); content = content.replace (" إثنتان ", " اثنتان "); content = content.replace (" إسم ", " اسم "); }

/*استبدالات*/ function replacing (content){ content = content.replace(/ \( /g, " ("); content = content.replace(/ \. /g, ". "); content = content.replace(/ \) /g, ") "); content = content.replace(/\[file:/g, "[ملف:"); content = content.replace(/\[File:/g, "[ملف:"); content = content.replace(/\|thumbnail/g, "|تصغير"); content = content.replace(/\|thumb/g, "|تصغير"); content = content.replace(/\|left\|/g, "|يسار|"); content = content.replace(/\|right\|/g, "|يمين|"); content = content.replace(/\|center\|/g, "|مركز|"); content = content.replace("==اقرأ أيضاً==", "==انظر أيضًا=="); content = content.replace("==طالع أيضاً==", "==انظر أيضًا=="); content = content.replace("==مقالات متعلقة==", "==انظر أيضًا=="); content = content.replace("==صفحات ذات صلة==", "==انظر أيضًا=="); content = content.replace("==See also==", "==انظر أيضًا=="); content = content.replace("==المصادر==", "==مصادر=="); content = content.replace("==الهوامش==", "==هوامش=="); content = content.replace("==المراجع==", "==مراجع=="); content = content.replace("==روابط خارجية==", "==وصلات خارجية=="); content = content.replace("==مصادر خارجية==", "==وصلات خارجية=="); content = content.replace(/ \)\./g, ")."); content = content.replace(/ \)،/g, ")،"); content = content.replace(/ و /g, " و"); content = content.replace(/ {3,}/g,' '); content = content.replace(/\{\{قالب:/g, "{{"); content = content.replace(/\[\[Category:/g, "[[تصنيف:");	content = content.replace(/\[\[ /g, "");	content = content.replace(/ \]\]/g, "");	content = content.replace(/\/g, "{{مراجع}}");	content = content.replace(new RegExp('(\n){3,}', 'gim'), '\n\n');	content = content.replace(/\{\{قالب:/g, "{{");	content = content.replace(/\{\{ /g, "{{");	content = content.replace(/ \}\}/g, "}}");	content = content.replace(/\[\[ /g, "[[");	content = content.replace(/ \]\]/g, "]]");	content = content.replace(/\/g, " ");	content = content.replace(/\<\\br\>/g, " ");	content = content.replace(/\/g, " ");	content = content.replace (/([\uE000-\uF8FF])/g, "");	content = content.replace (/ \n/g, "\n");	content = content.replace (/\[\[تصنيف : /g, "[[تصنيف:");	content = content.replace (/\[\[تصنيف :/g, "[[تصنيف:");	content = content.replace (/\[\[تصنيف: /g, "[[تصنيف:");	content = content.replace (/–/g, "–");	content = content.replace (/&mdash;/g, "—");	content = content.replace (/\{\{بذرة\|.{1,}}\n/g, "{{بذرة}}");	content = content.replace (/\{\{شريط بوابات\}\}\n/g, "");	content = content.replace (/\[\[تصنيف:بذرة.{1,}\]\]\n/g, ""); //إزالة تصنيفات البذور من المقالات

/**أخطاء 16**/ content = content.replace(/\u00A0/g, ' '); // خطأ 16 content = content.replace(/\u200B/g, ''); // خطأ 16 content = content.replace(/\u007F/g, ''); // خطأ 16 content = content.replace(/\u200E/g, ''); // خطأ 16 content = content.replace(/\u202C/g, ''); // خطأ 16 content = content.replace(/\u202D/g, ''); // خطأ 16

return content; }

/*ترتيب القوالب في أسفل المقالة، وترتيب التصنيفات*/ function sorting (content){

var portal = content.match (/\{\{شريط بوابات.{1,}\}\}/g); var stub = content.match (/\{\{بذرة.{0,}\}\}/g); var auth = content.match (/\{\{ضبط استنادي{0,}\}\}/g); var finals = ""; if (auth){ for (var i=0;i<auth.length;i++){ finals = finals + auth[i]+"\n"; content = content.replace (auth[i],""); }	}	if (portal){ for (var i=0;i<portal.length;i++){ finals = finals + portal[i]+"\n"; content = content.replace (portal[i],""); }	}	if (stub){ for (var i=0;i<stub.length;i++){ finals = finals + stub[i]+"\n"; content = content.replace (stub[i],""); }	}	var cats = content.match(/\[\[تصنيف:.{3,}\]\]/g); if (cats){ for (var i=0;i<cats.length;i++){ content = content.replace (cats[i],""); }		cats.sort; cats = cats.filter (function (value, index, array) {    		return array.indexOf (value) == index;		}); for (var i=0;i<cats.length;i++){ finals = finals + "\n" +cats[i]; }	}

content = content + "\n"+finals; return content; }

/*جلب الوصلات داخل المقالة*/ function getLinks (content){ }

/*تخصيص البذور، والبوابات*/ function specify (cats){ }

/*فك تشفير الروابط العربية*/ function decodeUrl (content){ content = content.replace(/\%D8%A7/g, "ا"); content = content.replace(/\%D9%B1/g, "ٱ"); content = content.replace(/\%D8%A5/g, "إ"); content = content.replace(/\%D8%A3/g, "أ"); content = content.replace(/\%D8%A2/g, "آ"); content = content.replace(/\%D8%A1/g, "ء"); content = content.replace(/\%D9%94/g, " ٔ"); content = content.replace(/\%D9%B4/g, "ٴ"); content = content.replace(/\%D9%95/g, "ٕ"); content = content.replace(/\%D8%A6/g, "ئ"); content = content.replace(/\%D8%A4/g, "ؤ"); content = content.replace(/\%D8%A8/g, "ب"); content = content.replace(/\%D8%AA/g, "ت"); content = content.replace(/\%D8%A9/g, "ة"); content = content.replace(/\%D8%AB/g, "ث"); content = content.replace(/\%D8%AC/g, "ج"); content = content.replace(/\%D8%AD/g, "ح"); content = content.replace(/\%D8%AE/g, "خ"); content = content.replace(/\%D8%AF/g, "د"); content = content.replace(/\%D8%B0/g, "ذ"); content = content.replace(/\%D8%B1/g, "ر"); content = content.replace(/\%D8%B2/g, "ز"); content = content.replace(/\%D8%B3/g, "س"); content = content.replace(/\%D8%B4/g, "ش"); content = content.replace(/\%D8%B5/g, "ص"); content = content.replace(/\%D8%B6/g, "ض"); content = content.replace(/\%D8%B7/g, "ط"); content = content.replace(/\%D8%B8/g, "ظ"); content = content.replace(/\%D8%B9/g, "ع"); content = content.replace(/\%D8%BA/g, "غ"); content = content.replace(/\%D9%81/g, "ف"); content = content.replace(/\%D9%82/g, "ق"); content = content.replace(/\%D9%83/g, "ك"); content = content.replace(/\%DA%A9/g, "ک"); content = content.replace(/\%D9%84/g, "ل"); content = content.replace(/\%D9%85/g, "م"); content = content.replace(/\%D9%86/g, "ن"); content = content.replace(/\%D9%87/g, "ه"); content = content.replace(/\%D9%87%E2%80%8D/g, "ه‍"); content = content.replace(/\%D9%88/g, "و"); content = content.replace(/\%D9%8A/g, "ي"); content = content.replace(/\%D9%89/g, "ى"); content = content.replace(/\%D9%80/g, "ـ"); content = content.replace(/\%D9%AA/g, "٪"); content = content.replace(/\%D9%AD/g, "٭"); content = content.replace(/\%D8%8C/g, "،"); content = content.replace(/\%D9%A0/g, "٠"); content = content.replace(/\%D9%A1/g, "١"); content = content.replace(/\%D9%A2/g, "٢"); content = content.replace(/\%D9%A3/g, "٣"); content = content.replace(/\%D9%A4/g, "٤"); content = content.replace(/\%D9%A5/g, "٥"); content = content.replace(/\%D9%A6/g, "٦"); content = content.replace(/\%D9%A7/g, "٧"); content = content.replace(/\%D9%A8/g, "٨"); content = content.replace(/\%D9%A9/g, "٩");

return content; } //