کاربر:Behaafarid/BehaafaridTools.js
ظاهر
کدهایی که در این صفحه قرار میدهید، ممکن است حاوی محتوای مخربی باشند که حساب کاربری شما را به خطر میاندازند. اگر با استفاده از دستور «importScript» یا الگوی «نصب اسکریپت کاربری» اسکریپتی را از صفحهای دیگر درونریزی میکنید، دقت داشتهباشید که این کار باعث میشود تا بهطور سیال اسکریپتی را بارگیری کنید که امکان تغییر آن توسط دیگران وجود دارد. اگر از امنیت کدهایی که به این صفحه میافزایید مطمئن نیستید، در قهوهخانهٔ فنی درخواست کمک کنید. هرگاه پیشنمایش تغییراتی که در این صفحه اعمال کردهاید را مشاهده کنید، کد اجرا خواهد شد. |
مستندات این اسکریپت کاربری را میتوان در کاربر:Behaafarid/BehaafaridTools قرار داد. |
/*{{چپچین}}*/
/*<pre>*/
// توجه:
// نسخهٔ جدید این ابزار به همراه تاریخچهٔ ویرایشش در [[MediaWiki:Gadget-Extra-Editbuttons.js]] قرار دارد.
// This method executes callback argument, with a string parameter.
// The string parameter is selected part of textarea, if any,
// or the whole content of the text area if no part of this element is selected.
// Tested under FF 3.0.x, Chrome 2.x, Opera 9.6x and IE 6.0, 7.0.
// Known issues: on IE (6 and 7), when selecting a whole line (including RETURN character), it removes the RETURN from that line.
function applyOnSelection(callback) {
var txtarea = document.editform.wpTextbox1;
var selText;
if (document.selection && document.selection.createRange) { // IE/Opera
// get current selection
txtarea.focus();
var range = document.selection.createRange();
selText = range.text;
if (selText) {
range.text = callback.apply(this, [selText]);
range.select();
} else {
txtarea.value = callback.apply(this, [txtarea.value]);
}
} else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla
// get current selection
txtarea.focus();
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
selText = txtarea.value.substring(startPos, endPos);
//insert tags
if (selText) {
txtarea.value = txtarea.value.substring(0, startPos)
+ callback.apply(this, [selText])
+ txtarea.value.substring(endPos, txtarea.value.length);
txtarea.selectionStart = startPos + selText.length;
txtarea.selectionEnd = txtarea.selectionStart;
} else {
txtarea.value = callback.apply(this, [txtarea.value]);
}
}
}
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, selectionMode) {
var f = function(s) {
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]]');
}
return s;
};
if (selectionMode) {
applyOnSelection(f);
} else {
obj.value = f(obj.value);
}
}
function FM (obj, selectionMode) {
var f = function(s) {
//بنهای ماضی
var a01 = "(آراست|آرامید|آزرد|آزمود|آسود|آشامید|آشفت|آغازید|آغشت|آفرید|آگند|آلود|آمد|آمرزید";
var a02 = "|آموخت|آمیخت|آورد|آویخت|آهیخت|ارزید|افتاد|افراشت|افروخت|اف��ود|افسرد|افشاند|افگند";
var a03 = "|انباشت|انجامید|انداخت|اندوخت|اندود|اندیشید|انگاشت|انگیخت|اوباشت|ایستاد|باخت";
var a04 = "|بارید|بافت|بالید|بایست|بخشود|بخشید|برازید|برد|برید|بست|بسود|بسیجید|بلعید|بود";
var a05 = "|بوسید|بویید|بیخت|پاشید|پالود|پخت|پذیرفت|پراکند|پرداخت|پرستید|پرسید|پرورد|پرید";
var a06 = "|پژمرد|پژوهید|پسندید|پلاسید|پلکید|پناهید|پنداشت|پوسید|پوشید|پویید|پیچید|پیراست";
var a07 = "|پیمود|پیوست|تاخت|تافت|تپید|تراشید|تراوید|ترسید|ترشید|ترکید|تکاند|تکانید|تنید|توانست";
var a08 = "|جست|جُست|جَست|جنبید|جنگید|جوشید|جوید|جهید|چاپید|چایید|چپید|چربید|چرخید|چرید|چسبید|چشید";
var a09 = "|چکید|چلاند|چلانید|چمید|چید|خارید|خاست|خایید|خراشید|خرامید|خروشید|خرید|خزید|خست";
var a10 = "|خشکید|خلید|خمید|خوابید|خواست|خواند|خورد|خوفید|خیسید|داد|داشت|دانست|درخشید|دروید";
var a11 = "|درید|دزدید|دمید|دوخت|دوشید|دوید|دیدم|ربود|رخشید|رسید|رست|رَست|رُست|رشت|رفت|رُفت|روفت";
var a12 = "|رقصید|رمید|رنجید|رندید|رویید|ریخت|رید|زارید|زایید|زد|زدود|زیست|ساخت|سپرد|سپوخت";
var a13 = "|ستد|سترد|ستود|ستیزید|سرود|سرشت|سرید|سزید|سفت|سگالید|سنجید|سوخت|سود|شاشید|شایست";
var a14 = "|شتافت|شد|شست|شکافت|شکست|شکفت|شکیفت|شگفت|شمرد|شناخت|شنید|شورید|طلبید|طوفید|غارتید";
var a15 = "|غرید|غلطید|غنود|فرستاد|فرسود|فرمود|فروخت|فریفت|فشرد|فهمید|قاپید|قبولاند|کاست";
var a16 = "|کاشت|کاوید|کرد|کشت|کشید|مکشید|کفت|کفید|کند|کوچید|کوشید|کوفت|گایید|گداخت|گذاشت";
var a17 = "|گذشت|گرازید|گرایید|گردید|گرفت|گروید|گریخت|گریست|گزارد|گزید|گُزید|گَزید|گسارد|گسترد|گسست";
var a18 = "|گشت|گشود|گفت|گماشت|گنجید|گندید|گوارید|گوزید|لرزید|لغزید|لمدنی|لندید|لنگید|لهید";
var a19 = "|لیسید|ماسید|مالید|ماند|مرد|مکید|مولید|مویید|نازید|نالید|نامید|نشست|نکوهید|نگاشت";
var a20 = "|نگریست|نمود|نواخت|نوردید|نوشت|نوشید|نهاد|نهفت|نیوشید|ورزید|وزید|هراسید|هشت";
var a21 = "|یارست|یازید|یافت)";
var verbs = a01+a02+a03+a04+a05+a06+a07+a08+a09+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+a20+a21;
var hoohaahaahaa = "(می|نمی)" + verbs + "(م|ی|یم|ید|ند|\\s|\\.|،|!|؛)"
var re = new RegExp(hoohaahaahaa, "g");
s=s.replace (re, '$1\u200c$2$3');
//بنهای مضارع
var b01 = "(آرای|آرام|آزار|آزمای|آسای|آشام|آشوب|آغاز|آغار|آفرین|آگن|آلای|آی|آمرز";
var b02 = "|آموز|آمیز|آور|آویز|آهنج|ارز|افت|افراز|افروز|افزای|افسر|افشان|افگن";
var b03 = "|انبار|انجام|انداز|اندوز|اندای|اندیش|انگار|انگیز|اوبار|ایست|باز";
var b04 = "|بار|باش|باف|بال|بای|بخشای|بخش|براز|بر|بُر|بَر|بند|بساو|بسیج|بلع|بو";
var b05 = "|بوس|بوی|بیز|پاش|پالای|پز|پذیر|پراکن|پرداز|پرست|پرس|پرور|پر";
var b06 = "|پژمر|پژوه|پسند|پلاس|پلک|پناه|پندار|پوس|پوش|پوی|پیچ|پیرای";
var b07 = "|پیمای|پیوند|تاز|تاب|تپ|توپ|تراش|تراو|ترس|ترش|ترک|تکان|تن|توان";
var b08 = "|جه|جوی|جنب|جنگ|جوش|جو|چاپ|چای|چپ|چرب|چرخ|چر|چسب|چش";
var b09 = "|چک|چلان|چم|چین|خار|خیز|خای|خراش|خرام|خروش|خر|خز|خست";
var b10 = "|خشک|خل|خم|خواب|خواه|خوان|خور|خوف|خیس|ده|دار|دان|درخش|درو";
var b11 = "|در|دزد|دم|دوز|دوش|دو|بین|ربای|رخش|رس|ره|روی|رشت|رو|روب";
var b12 = "|رقص|رم|رنج|رند|روی|ریز|رین|زار|زای|زن|زدای|زی|ساز|سپر|سپوز";
var b13 = "|ستان|ستر|ستان|ستیز|سرای|سرشت|سر|سز|سنب|سگال|سنج|سوز|سای|شاش|شای";
var b14 = "|شتاب|شو|شوی|شکاف|شکن|شکوف|شکیب|شمر|شناس|شنو|شور|طلب|طوف|غارت";
var b15 = "|غر|غلط|غنو|فرست|فرسای|فرمای|فروش|فریب|فشر|فهم|قاپ|قبولان|کاه";
var b16 = "|کار|کاو|کن|کار|کُش|کش|کِش|کَش|کف|کن|کوچ|کوش|کوب|گای|گداز|گذار";
var b17 = "|گذر|گراز|گرای|گرد|گیر|گرو|گریز|گری|گزار|گز|گزین|گسار|گستر|گسل";
var b18 = "|گشای|گو|گمار|گنج|گند|گوار|گوز|لرز|لغز|لم|لند|لنگ|لهید";
var b19 = "|لیس|ماس|مال|مان|میر|مک|مول|موی|ناز|نال|نام|نشین|نکوه|نگار";
var b20 = "|نگر|نمای|نواز|نورد|نویس|نوش|نه|نهنب|نیوش|ورز|وز|هراس|هل";
var b21 = "|یار|یاز|یاب)";
var verbs = b01+b02+b03+b04+b05+b06+b07+b08+b09+b10+b11+b12+b13+b14+b15+b16+b17+b18+b19+b20+b21;
var hoohbbhbbhbb = "(می|نمی)" + verbs + "(م|ی|د|یم|ید|ند)"
var re = new RegExp(hoohbbhbbhbb, "g");
s=s.replace (re, '$1\u200c$2$3');
//ای «توان» ناقلا!
s = s.replace (/(می|نمی)توان/g,"$1\u200cتوان");
//تبدیل الگو {{فم}} به نویسه
s = s.replace(/\{\{فم\}\}/g,'\u200c');
//تبدیل چند فاصلهٔ مجازی پشت\u200cسرهم به یک فاصله مجازی.
s = s.replace(/(\u200c)+/g, '\u200c');
//حذف فاصلهٔ مجازی بعد از آادذرزژو . ، « »
s = s.replace(/([\.،«»\:؛\sآادذرزژوة])\u200c/g,'$1');
//حذف فاصلهٔ مجازی پیش از حروف لاتین و نیز نشانههای سجاوندی
s = s.replace(/\u200c([\w\[\]\n\s\.،«»\:؛])/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,'اً')
return s;
};
if (selectionMode) {
applyOnSelection(f);
} else {
obj.value = f(obj.value);
}
}
function NonStandard (obj, selectionMode) {
var f = function(s) {
//همزه روی ی
s = s.replace(/ه\u200cی\s/g, 'هٔ ');
s = s.replace(/ه\u200eی\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.
return s;
};
if (selectionMode) {
applyOnSelection(f);
} else {
obj.value = f(obj.value);
}
}
function bringBackLDigits(r,s)
{
//Given the regular expression this function brings back L Numerals
var sold = "";
while (s != sold){
sold = s;
m = s.match(r);
if (m){
subs = s.match(r)[0];
b = s.indexOf(subs);
e = b + subs.length;
la = s.substring(b,e);
la = la.replace(/۱/g, "1");
la =la.replace(/۲/g, "2");
la =la.replace(/۳/g, "3");
la =la.replace(/۴/g, "4");
la =la.replace(/۵/g, "5");
la =la.replace(/۶/g, "6");
la =la.replace(/۷/g, "7");
la =la.replace(/۸/g, "8");
la =la.replace(/۹/g, "9");
la =la.replace(/۰/g, "0");
s = s.substring(0,b) + la + s.substring(e,s.length);
}
}
return s;
}
function digits (obj, mohsenMode) {
// Convert Codes to Characters
var f = function(s) {
s = fromEntityToUtf8(s, true);
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');
//لاتینکردن شمارهٔ ISBN
var sold = "";
var d = "[۱۲۳۴۵۶۷۸۹۰][\\s\\-]?";
var exd = "[۱۲۳۴۵۶۷۸۹۰]?[\\s\\-]?";
var r = new RegExp("ISBN[\\s\\-]?"+d+d+d+d+d+d+d+d+d+exd+exd+exd+exd);
s = bringBackLDigits(r,s);
//لاتینکردن اندازهٔ تصویر در الگوها که با px میآید.
var r = new RegExp("[۱۲۳۴۵۶۷۸۹۰]*px");
s = bringBackLDigits(r,s);
//لاتین کردن رقمها در زیرمتن لاتین
var g = "\\w[\\s,]*[۱۲۳۴۵۶۷۸۹۰]+[۱۲۳۴۵۶۷۸۹۰,\\s]*[\\w\\.\\)]";
var r = new RegExp(g);
return bringBackLDigits(r,s);
};
if (mohsenMode) {
applyOnSelection(f);
} else {
obj.value = f(obj.value);
}
}
function Punctuation (obj,selectionMode){
var f = function(s) {
// 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');
s=s.replace(/٬\s/g, "، "); //بدجوری حرصم میدهد.
return s;
};
if (selectionMode) {
applyOnSelection(f);
} else {
obj.value = f(obj.value);
}
}
function SuperTool (obj,selectionMode){
YKarabic (obj,selectionMode);
FM (obj,selectionMode);
NonStandard (obj,selectionMode);
digits (obj,selectionMode);
Punctuation (obj,selectionMode);
}
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>*//*{{پایان چپچین}} */