کاربر:حجت/BehaafaridTools.js
از ویکیپدیا، دانشنامهٔ آزاد.
نکته: پس از ذخیرهسازی ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را خالی کنید. موزیلا / فایرفاکس / Safari: کلید Shift را نگهدارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-Shift-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای Cmd-Shift-R)؛ اینترنت اکسپلورر: کلید Ctrl نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید؛ Konqueror: روی دکمهٔ Reload کلیک کنید و یا کلید F5 را فشار دهید؛ اُپرا: کاربران اُپرا ممکن است لازم باشد که بطور کامل حافظهٔ نهانی مرورگر را در منوی Tools→Preferences خالی کنند.
/*<pre style="direction:ltr;text-align:left">*/
function YKarabic (obj) {
s = obj.value;
var sold= s;
//ي --> ی و ك --> ک
//برای جلوگیری از خرابکاری در پیوند تصویرها و میان\u200cویکی
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)ي(.*?)\]\]/g, '[[$1\u200c\u200c\u200cی\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)ك(.*?)\]\]/g, '[[$1\u200c\u200c\u200cک\u200c\u200c\u200c$2]]');
while (sold!=s)
{
sold =s;
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)ي(.*?)\]\]/g, '[[$1\u200c\u200c\u200cی\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)ك(.*?)\]\]/g, '[[$1\u200c\u200c\u200cک\u200c\u200c\u200c$2]]');
}
s = s.replace(/ي/g, 'ی');
s = s.replace(/ك/g, 'ک');
s= s.replace(/\u200c\u200c\u200cی\u200c\u200c\u200c/g, 'ي');
s= s.replace(/\u200c\u200c\u200cک\u200c\u200c\u200c/g, 'ك');
//اصلاح ی و ک در متنهای عربی
sold = s;
s = s.replace(/\{\{عربی([^(\}\})]*?)ی(.*?)\}\}/g, '{{عربی$1ي$2}}');
s = s.replace(/\{\{عربی([^(\}\})]*?)ک(.*?)\}\}/g, '{{عربی$1ك$2}}');
s = s.replace(/\{\{آغاز\sعربی\}\}([^(پایان\sعربی\}\})]*?)ی(.*?)پایان\sعربی\}\}/g, '{{آغاز عربی}}$1ي$2پایان عربی}}');
s = s.replace(/\{\{شروع\sعربی\}\}([^(پایان\sعربی\}\})]*?)ی(.*?)پایان\sعربی\}\}/g, '{{شروع عربی}}$1ي$2پایان عربی}}');
s = s.replace(/\{\{آغاز\sعربی\}\}([^(پایان\sعربی\}\})]*?)ک(.*?)پایان\sعربی\}\}/g, '{{آغاز عربی}}$1ك$2پایان عربی}}');
s = s.replace(/\{\{شروع\sعربی\}\}([^پایان\sعربی(\}\})]*?)ک(.*?)پایان\sعربی\}\}/g, '{{شروع عربی}}$1ك$2پایان عربی}}');
s = s.replace(/\[\[ar:(.*?)ی(.*?)\]\]/g, '[[ar:$1ي$2]]');
s = s.replace(/\[\[ar:(.*?)ک(.*?)\]\]/g, '[[ar:$1ك$2]]');
while (sold!=s)
{
sold=s;
s = s.replace(/\{\{عربی([^(\}\})]*?)ی(.*?)\}\}/g, '{{عربی$1ي$2}}');
s = s.replace(/\{\{عربی([^(\}\})]*?)ک(.*?)\}\}/g, '{{عربی$1ك$2}}');
s = s.replace(/\{\{آغاز\sعربی\}\}([^(پایان\sعربی\}\})]*?)ی(.*?)پایان\sعربی\}\}/g, '{{آغاز عربی}}$1ي$2پایان عربی}}');
s = s.replace(/\{\{شروع\sعربی\}\}([^(پایان\sعربی\}\})]*?)ی(.*?)پایان\sعربی\}\}/g, '{{شروع عربی}}$1ي$2پایان عربی}}');
s = s.replace(/\{\{آغاز\sعربی\}\}([^(پایان\sعربی\}\})]*?)ک(.*?)پایان\sعربی\}\}/g, '{{آغاز عربی}}$1ك$2پایان عربی}}');
s = s.replace(/\{\{شروع\sعربی\}\}([^پایان\sعربی(\}\})]*?)ک(.*?)پایان\sعربی\}\}/g, '{{شروع عربی}}$1ك$2پایان عربی}}');
s = s.replace(/\[\[ar:(.*?)ی(.*?)\]\]/g, '[[ar:$1ي$2]]');
s = s.replace(/\[\[ar:(.*?)ک(.*?)\]\]/g, '[[ar:$1ك$2]]');
}
//حدف نویسهٔ ممنوع ۰۶۴۹
sold = s;
//جلوگیری از تغییر متن نشان عربی خورده و تصویر و پیوندهای میانویکی
s = s.replace (/\[\[([^\]]*?\:[^\]]*?)ى(.*?)\]\]/g, '[[$1\u200c\u200c\u200cی\u200c\u200c\u200c$2]]');
s = s.replace(/\{\{عربی(.*?)ى(.*?)\}\}/g, '{{عربی$1\u200c\u200c\u200cی\u200c\u200c\u200c$2}}');
s = s.replace(/\{\{آغاز عربی(.*?)ى(.*?)پایان عربی\}\}/g, '{{آغاز عربی$1\u200c\u200c\u200cی\u200c\u200c\u200c$2پایان عربی}}');
s = s.replace(/\{\{شروع عربی(.*?)ى(.*?)پایان عربی\}\}/g, '{{شروع عربی$1\u200c\u200c\u200cی\u200c\u200c\u200c$2پایان عربی}}');
while (sold!=s)
{
sold=s;
s = s.replace (/\[\[([^\]]*?\:[^\]]*?)ى(.*?)\]\]/g, '[[$1\u200c\u200c\u200cی\u200c\u200c\u200c$2]]');
s = s.replace(/\{\{عربی(.*?)ى(.*?)\}\}/g, '{{عربی$1\u200c\u200c\u200cی\u200c\u200c\u200c$2}}');
s = s.replace(/\{\{آغاز عربی(.*?)ى(.*?)پایان عربی\}\}/g, '{{آغاز عربی$1\u200c\u200c\u200cی\u200c\u200c\u200c$2پایان عربی}}');
s = s.replace(/\{\{شروع عربی(.*?)ى(.*?)پایان عربی\}\}/g, '{{شروع عربی$1\u200c\u200c\u200cی\u200c\u200c\u200c$2پایان عربی}}');
}
s = s.replace(/ى/g, 'ی');
s = s.replace(/\u200c\u200c\u200cی\u200c\u200c\u200c/g, 'ى');
sold=s;
//اصلاح ردهها
s = s.replace(/\[\[(رده|Category|category):(.*?)(ى|ي)(.*?)\]\]/g, '[[$1:$2ی$4]]');
s = s.replace(/\[\[(رده|Category|category):(.*?)ك(.*?)\]\]/g, '[[$1:$2ک$3]]');
while(sold!=s)
{
sold=s;
s = s.replace(/\[\[(رده|Category|category):(.*?)(ى|ي)(.*?)\]\]/g, '[[$1:$2ی$4]]');
s = s.replace(/\[\[(رده|Category|category):(.*?)ك(.*?)\]\]/g, '[[$1:$2ک$3]]');
}
obj.value = s;
}
function FM (obj) {
s = obj.value;
//تبدیل الگو {{فم}} به نویسه
s = s.replace(/\{\{فم\}\}/g,'\u200c');
//تبدیل چند فاصلهٔ مجازی پشت\u200cسرهم به یک فاصله مجازی.
s = s.replace(/(\u200c)+/g, '\u200c');
//حذف فاصلهٔ مجازی بعد از آادذرزژو . ، « »
s = s.replace(/([\.،«»\:؛\sآادذرزژو])\u200c/g,'$1');
//اصلاح می پیشوندی
s = s.replace(/\sمی\s/g, ' می\u200c');
s = s.replace(/\sنمی\s/g, ' نمی\u200c');
s = s.replace(/\sمی\u200cو\s/g, ' می و');
//فعلهای مصدر بودن
s = s.replace(/ه\sام([\]\.،\:»\)\s])/g, 'ه\u200cام$1');
s = s.replace(/ه\sای([\]\.،\:»\)\s])/g, 'ه\u200cای$1');
s = s.replace(/([^ا])ه\sاست([\]\.،\:»\)\s])/g, '$1ه\u200cاست$2');
s = s.replace(/ه\sایم([\]\.،\:»\)\s])/g, 'ه\u200cایم$1');
s = s.replace(/ه\sاید([\]\.،\:»\)\s])/g, 'ه\u200cاید$1');
s = s.replace(/ه\sاند([\]\.،\:»\)\s])/g, 'ه\u200cاند$1');
/*چسباندن ها بر اساس مفاد دستور خط فرهنگستان و شیوه\u200cنامهٔ ویکی\u200cپدیا:*/
//تمام «ها» با فاصلهٔ مجازی میچسبند. و این مطابق مفاد آخرین شیوهنامه غلط نیست.
s=s.replace(/\sها([\]\.،\:»\)\s])/g, '\u200cها$1');
s=s.replace(/\sها(ی|یی|یم|یت|یش|مان|تان|شان)([\]\.،\:»\)\s])/g, '\u200cها$1$2');
//موارد جزئی دیگر: هرچند ربطی به ZWNJ ندارد. ولی فعلاً اینجا میگذاریمشان تا بعداً بفرستیمشان جایی دیگر.
s=s.replace(/ا\sً/g,'اً')
obj.value = s;
}
function NonStandard (obj) {
s = obj.value;
//همزه روی ی
s = s.replace(/ه\u200cی\s/g, 'هٔ ');
s = s.replace(/ه\sی\s/g, 'هٔ ');
s = s.replace(/ۀ/g, 'هٔ');
s = s.replace(/هء /g, 'هٔ ');
//نویسهٔ غیراستاندارد برای تنوین
s = s.replace(/ا"/g,'اً')
//فارسیسازی گیومه
s=s.replace(/"(.*?)"/g,'«$1»');
s=s.replace(/«(\w*?)»/g,'"$1"');
s=s.replace(/(\w)=«([^"]*?)»/g,'$1="$2"'); // to fix the problem with HTML double quotes.
obj.value = s;
}
function digits (obj) {
//Convert Codes to Characters
fromEntityToUtf8(obj);
s = obj.value;
var sold=s;
//برای جلوگیری از خرابکاری در پیوند تصویرها و میانویکی
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)1(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۱\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)2(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۲\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)3(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۳\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)4(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۴\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)5(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۵\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)6(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۶\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)7(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۷\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)8(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۸\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)9(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۹\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)0(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۰\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)\%(.*?)\]\]/g, '[[$1\u200c\u200c\u200c٪\u200c\u200c\u200c$2]]');
// برای جلوگیری از خرابکاری در پیوند به بیرون
s = s.replace(/(http[^\s]+?)1/g,'$1\u200c\u200c\u200c۱\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)2/g,'$1\u200c\u200c\u200c۲\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)3/g,'$1\u200c\u200c\u200c۳\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)4/g,'$1\u200c\u200c\u200c۴\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)5/g,'$1\u200c\u200c\u200c۵\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)6/g,'$1\u200c\u200c\u200c۶\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)7/g,'$1\u200c\u200c\u200c۷\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)8/g,'$1\u200c\u200c\u200c۸\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)9/g,'$1\u200c\u200c\u200c۹\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)0/g,'$1\u200c\u200c\u200c۰\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)\%/g,'$1\u200c\u200c\u200c٪\u200c\u200c\u200c');
while (sold!=s)
{
sold=s;
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)1(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۱\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)2(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۲\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)3(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۳\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)4(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۴\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)5(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۵\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)6(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۶\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)7(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۷\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)8(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۸\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)9(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۹\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)0(.*?)\]\]/g, '[[$1\u200c\u200c\u200c۰\u200c\u200c\u200c$2]]');
s=s.replace (/\[\[([^\]]*?\:[^\]]*?)\%(.*?)\]\]/g, '[[$1\u200c\u200c\u200c٪\u200c\u200c\u200c$2]]');
s = s.replace(/(http[^\s]+?)1/g,'$1\u200c\u200c\u200c۱\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)2/g,'$1\u200c\u200c\u200c۲\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)3/g,'$1\u200c\u200c\u200c۳\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)4/g,'$1\u200c\u200c\u200c۴\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)5/g,'$1\u200c\u200c\u200c۵\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)6/g,'$1\u200c\u200c\u200c۶\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)7/g,'$1\u200c\u200c\u200c۷\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)8/g,'$1\u200c\u200c\u200c۸\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)9/g,'$1\u200c\u200c\u200c۹\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)0/g,'$1\u200c\u200c\u200c۰\u200c\u200c\u200c');
s = s.replace(/(http[^\s]+?)\%/g,'$1\u200c\u200c\u200c٪\u200c\u200c\u200c');
}
s = s.replace(/1/g,'۱');
s = s.replace(/\u200c\u200c\u200c۱\u200c\u200c\u200c/g,'1');
s = s.replace(/2/g,'۲');
s = s.replace(/\u200c\u200c\u200c۲\u200c\u200c\u200c/g,'2');
s = s.replace(/3/g,'۳');
s = s.replace(/\u200c\u200c\u200c۳\u200c\u200c\u200c/g,'3');
s = s.replace(/4/g,'۴');
s = s.replace(/\u200c\u200c\u200c۴\u200c\u200c\u200c/g,'4');
s = s.replace(/5/g,'۵');
s = s.replace(/\u200c\u200c\u200c۵\u200c\u200c\u200c/g,'5');
s = s.replace(/6/g,'۶');
s = s.replace(/\u200c\u200c\u200c۶\u200c\u200c\u200c/g,'6');
s = s.replace(/7/g,'۷');
s = s.replace(/\u200c\u200c\u200c۷\u200c\u200c\u200c/g,'7');
s = s.replace(/8/g,'۸');
s = s.replace(/\u200c\u200c\u200c۸\u200c\u200c\u200c/g,'8');
s = s.replace(/9/g,'۹');
s = s.replace(/\u200c\u200c\u200c۹\u200c\u200c\u200c/g,'9');
s = s.replace(/0/g,'۰');
s = s.replace(/\u200c\u200c\u200c۰\u200c\u200c\u200c/g,'0');
s = s.replace(/\%/g,'٪');
s = s.replace(/\u200c\u200c\u200c٪\u200c\u200c\u200c/g,'%');
//آوردن دخل ارقام عربی:
s=s.replace(/٠/g,'۰');
s=s.replace(/١/g,'۱');
s=s.replace(/٢/g,'۲');
s=s.replace(/٣/g,'۳');
s=s.replace(/٤/g,'۴');
s=s.replace(/٥/g,'۵');
s=s.replace(/٦/g,'۶');
s=s.replace(/٧/g,'۷');
s=s.replace(/٨/g,'۸');
s=s.replace(/٩/g,'۹');
//ممیز و هزارگان
s = s.replace(/([۱۲۳۴۵۶۷۸۹۰])\.([۱۲۳۴۵۶۷۸۹۰])/g,'$1٫$2');
s = s.replace(/([۱۲۳۴۵۶۷۸۹۰]),([۱۲۳۴۵۶۷۸۹۰])/g,'$1٬$2');
obj.value = s;
}
function Punctuation (obj){
var s = obj.value;
// s=s.replace(/([^\n^\r])([\(«])/g,'$1 $2');
// s=s.replace(/([^(\<pre\>)])\s+/g,'$1 ');
s=s.replace(/([\(«])\s/g,'$1');
s=s.replace(/\s([\)»])/g,'$1');
obj.value=s;
}
function SuperTool (obj){
temp = obj.value;
YKarabic (obj);
FM (obj);
NonStandard (obj);
digits (obj);
Punctuation (obj);
if(temp==obj.value) window.status="No changes were necessary.";
else window.status="Changes are applied."
}
/*</pre>*/

