کاربر:Sepehrnoush/BehaafaridTools.js

از ویکی‌پدیا، دانشنامهٔ آزاد.

نکته: پس از ذخیره‌سازی ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را خالی کنید. موزیلا / فایرفاکس / Safari: کلید Shift را نگه‌دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-Shift-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های Cmd-Shift-Rاینترنت اکسپلورر: کلید Ctrl نگه‌دارید و روی دکمهٔ Refresh کلیک‌ کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید؛ Konqueror: روی دکمهٔ Reload کلیک کنید و یا کلید F5 را فشار دهید؛ اُپرا: کاربران اُپرا ممکن است لازم باشد که بطور کامل حافظهٔ نهانی مرورگر را در منوی Tools→Preferences خالی کنند.

/*{{چپ‌چین}}*/
/*<pre>*/
function URLfix (obj) {
   s = obj.value;
   s = s.replace(/(http[^\s]+?)\%20/g,'$1\u200c\u200c\u200c_\u200c\u200c\u200c');
   s = s.replace(/(http[^\s]+)/g,function(s,p){return decodeURI(p)});
   s = s.replace(/\u200c\u200c\u200c_\u200c\u200c\u200c/g,'%20');
 
   obj.value = s;
}
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,'اً')
 
//تبدیل الگو {{ی}} به نویسه
 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');
 
 // برای جلوگیری از خرابکاری در فرمولهای ریاضی
  s=s.replace (/\<math\>(.*?)1(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۱\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)2(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۲\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)3(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۳\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)4(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۴\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)5(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۵\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)6(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۶\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)7(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۷\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)8(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۸\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)9(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۹\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)0(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c۰\u200c\u200c\u200c$2</math>');
  s=s.replace (/\<math\>(.*?)%(.*?)\<\/math\>/g,
    '<math>$1\u200c\u200c\u200c٪\u200c\u200c\u200c$2</math>');
 
 
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){
   YKarabic (obj);
   FM (obj);
   NonStandard (obj);
   digits (obj);
   Punctuation (obj);
 
 
}
 
function InterwikiSorter(obj)
{
 
var ref = /\[\[(\w\w\w?|bat-smg|be-x-old|cbk-zam|fiu-vro|nds-nl|roa-tara|ru-sib|simple|tokipona|zh-classical|zh-min-nan|zh-yue)\:(.*?)\]\]\n?(\s*)/g
 
var s = obj.value;
 
//extract interwiki's and delete them temply from string
 interwikis = s.match(ref)
 s = s.replace(ref,"")
 
//sort interwikis
 interwikis = interwikis.sort()
//put interwiki's back
 s = s + interwikis.join("");
 
//update string.
obj.value=s;
}
 
/*</pre>*//*{{پایان چپ‌چین}} */