User:Reza1615/smalltools.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/*<pre>*/
// این اسکریپت دکمههای ویرایشی پس از انتخاب توسط کاربر به ویکیپدیا اضافه میکند
// بخش زیادی از این ابزار توسط [[User:Behaafarid]] نوشته شدهاست.
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 setFocusToFirstInput() {
for (var i = 0; i < document.forms.length; i++)
for (var j = 0; j < document.forms[i].elements.length; j++)
if (document.forms[i].elements[j].type != 'hidden' && document.forms[i].elements[j].style.display != 'none' && document.forms[i].elements[j].style.visibility != 'hidden' && document.forms[i].elements[j].className == 'wrong') {
document.forms[i].elements[j].focus();
if (document.forms[i].elements[j].type == 'text' || document.forms[i].elements[j].type == 'password') document.forms[i].elements[j].select();
return true;
}
for (var i = 0; i < document.forms.length; i++)
for (var j = 0; j < document.forms[i].elements.length; j++)
if (document.forms[i].elements[j].type != 'hidden' && document.forms[i].elements[j].style.display != 'none' && document.forms[i].elements[j].style.visibility != 'hidden') {
document.forms[i].elements[j].focus();
if (document.forms[i].elements[j].type == 'text' || document.forms[i].elements[j].type == 'password') document.forms[i].elements[j].select();
return true;
}
return true;
}
// slightly modified by mohsens
function fromEntityToUtf8(obj, isStr) {
var f = function (s, n, ofs, all) {
return String.fromCharCode(n);
};
if (isStr) {
return obj.replace(/&#([0-9]+);/g, f);
} else {
obj.value = obj.value.replace(/&#([0-9]+);/g, f);
}
}
function fromUtf8ToEntity(obj_id) {
var obj = document.getElementById(obj_id);
obj.value = obj.value.replace(/([^\x00-\x7f])/g, function (s, c, ofs, all) {
c = String(c);
return "&#" + c.charCodeAt(0) + ";";
});
}
function escapeHTMLEntities(obj_id) {
var obj = document.getElementById(obj_id);
s = obj.value;
s = s.replace(/&/g, '&');
s = s.replace(/</g, '<');
s = s.replace(/>/g, '>');
s = s.replace(/'/g, ''');
s = s.replace(/"/g, '"');
obj.value = s;
}
function unescapeHTMLEntities(obj_id) {
var obj = document.getElementById(obj_id);
s = obj.value;
s = s.replace(/</g, '<');
s = s.replace(/>/g, '<');
s = s.replace(/'/g, '\'');
s = s.replace(/"/g, '"');
s = s.replace(/&/g, '&');
obj.value = s;
}
function AtSignReplace(obj) {
var s = obj.value;
s = s.replace(/(\S+?)@(\S+?)/g, '$1{{at}}$2');
obj.value = s;
}
function URLfix(obj) {
s = obj.value;
var old = "";
while (old != s) {
old = s;
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(/\n\*\s*(\=+.+?\=+\n)/g, "\n$1");
// برای حذف فاصلههای اضافی در پیوندها
s = s.replace(/\[\[\s*(.*?)\s*]]/g, "[[$1]]");
// عضو علامتهای نقل قول تکی از عنوانها
s = s.replace(/(\n=+)(.*?)(?:'+)(.*?)(?:'+)(.*?)(=+\n)/g, "$1$2$3$4$5");
//حذف فاصلهٔ مجازی بعد از آادذرزژو . ، « »
s = s.replace(/([\.،«»\:؛\sزرذدواژؤإأآءةa-zA-Z])\u200c/g, '$1');
// اول و آخر هم خط اگر فاصلهٔ مجازی باشد، حذف شود
s = s.replace(/(^\u200c|\u200c$)/mg, '');
//حذف فاصلهٔ مجازی پیش از حروف لاتین و نیز نشانههای سجاوندی
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, 'اً');
// ویکی پدیا و ویکیپدیا به ویکیپدیا
s = s.replace(/ویکی\s?پدیا/g, 'ویکی\u200cپدیا');
// اسثنائات، اینها بایست که بعداً به طور دقیقتری بررسی شوند
// می۸ به می ۸ تبدیل شود، به خاطر replace(/\sمی\s/g, ' می\u200c') اشتباه شده
s = s.replace(/\sمی\u200c[\d۰-۹]\s/g, ' می $1');
// میوزیک؟ می + بن مضارع وز + ی
s = s.replace(/میوزیک/g, "میوزیک");
// لوییز می الکات، با replace(/\sمی\s/g, ' می\u200c') تغییر میکند
s = s.replace(/میالکات/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(/"([^\w\n]*?)"/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 digits(obj, selectionMode) {
// Convert Codes to Characters
var f = function (s) {
s = fromEntityToUtf8(s, true);
var old = s;
var entofa = new Array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹");
var entoar = new Array("٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩");
var faChrs = "آأإئؤبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیيك"
var faNums = "۰۱۲۳۴۵۶۷۸۹"
var arNums = "٠١٢٣٤٥٦٧٨٩"
// فارسی به انگلیسی
while (1==1) {
for (var i = 0; i < 10; i++) {
var reFaToEn = new RegExp("([A-Za-z0-9][^"+faChrs+faNums+"\\n\\{}\\|=]*)"+entofa[i]+"([^"+faNums+"\\n\\{\\}\\|=]*?[A-Za-z0-9])", "g");
old = old.replace(reFaToEn, "$1¬¬¬"+i+"$2");
}
if (old==s) break;
s = old;
}
s = s.replace(/¬¬¬/g, "");
// انگلیسی به فارسی
old = s;
while (1==1) {
for (var i = 0; i < 10; i++) {
var reEnToFa = new RegExp("(["+faChrs+"][^A-Za-z0-9\\n\\{\\}\\|=]*)"+i+"([^A-Za-z\\n\\{\\}\\|=]*?["+faChrs+faNums+"])", "g");
old = old.replace(reEnToFa, "$1"+entofa[i]+"$2");
}
if (old==s) break;
s = old;
}
// عربی به فارسی
for (var i = 0; i < 10; i++) {
s = s.replace(new RegExp(entoar[i], 'g'), entofa[i]);
}
// برای ارقام درون جدولها
old = s;
while (1==1) {
for (var i = 0; i < 10; i++) {
var reEnToFa = new RegExp('(\\|\\||["\\n] *\\|)([^A-Za-z0-9\\n\\{\\}\\|=]*)'+i+"([^A-Za-z\\n\\{\\}\\|=]*?)( *\\|\\||\\n)", "g");
old = old.replace(reEnToFa, "$1$2"+entofa[i]+"$3$4");
}
if (old==s) break;
s = old;
}
return s;
};
if (selectionMode) {
applyOnSelection(f);
} else {
obj.value = f(obj.value);
}
}
function Punctuation(obj, selectionMode) {
var f = function (s) {
s = s.replace(/\<br ?\/?\>/g, "{{سخ}}");
// s=s.replace(/([^\n^\r])([\(«])/g,'$1 $2');
// s=s.replace(/([^(\<pre\>)])\ئ+/g,'$1 ');
s = s.replace(/ ([؟،:!\.\}])/g, "$1");
s = s.replace(/([،\.])([^\s\.\(\)«»\"\[\]\<\>\d\w\{\}\|۰-۹])/g, "$1 $2");
s = s.replace(/([\(«])\s/g, '$1');
s = s.replace(/\s([\)»])/g, '$1');
s = s.replace(/٬\s/g, "، ");
s = s.replace(/(\<\/ref\>)\s+(\<ref)/g, "$1$2");
// تغییرات جزئی که برای رباتها تعریف شده بود
s = s.replace(/^(\=+)\s*(.*?)\s*(\=+)$/mg, "$1 $2 $3");
s = s.replace(/((?:^|\n)\=.*?\=\n)\n*/g, "$1");
s = s.replace(/([^=])\n+(\=.*?\=\n)/g, "$1\n\n$2");
s = s.replace(/^([*#]+)([^*#:\s])/mg, "$1 $2");
// پاک کردن فاصلهها بین خطوط * دار
s = s.replace(/(\n\*.*?)\n(?=\n\*)/g, '$1');
// فاصله را از آخر خط پاک میکند
s = s.replace(/([^ =]) *$/mg, "$1");
// اصلاح {{•}}
s = s.replace(/[\n ]*( )?(\{\{?[•·ن]\}\}|•|•) */g, "{{•}} ");
// برای گذاشتن گیومه برای خاصیتهای برچسب طبق اکسامال
// اشکال مشخصی که دارد این است که همهٔ نویسههای قابل قبول برای اکسامال را نمیپذیرد، چه نویسههایی لازم است؟
var sold = "";
while (sold != s) {
sold = s;
s = s.replace(/(\<\w*(?:\s\w*=['"\w\d]+)*\s+\w*=)([\w\d_]+)((?:\s\w*=['"\w\d]+)*\s?\/?\>)/g, "$1\"$2\"$3")
// first version: .replace(/\<(\w*\s+\w*=)(\w+[\w\d]*)\>/, "<$1\"$2\">");
}
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 toggleDir(obj) {
var isrtl = 0;
if (obj) {
isrtl = obj.style.direction != 'ltr';
if (isrtl) {
obj.style.textAlign = "left";
obj.style.direction = "ltr";
} else {
obj.style.textAlign = "right";
obj.style.direction = "rtl";
}
}
}
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)\:(.*?)\]\]\r?\n?(\s*)/g
var s = obj.value;
//extract interwiki's and delete them temporarily from the string
interwikis = s.match(ref);
if (interwikis == null) return;
s = s.replace(ref, "");
//sort interwikis
interwikis = interwikis.sort();
//put interwiki's back
s = s + interwikis.join("");
//update string.
obj.value = s;
}
function SortText(obj, selectionMode) {
function sortPreparation(instr){ // solve persian problem on sorting by replace characters in strings
return instr.replace(/ی/g,"ي")
.replace(/ک/g,"ك")
.replace(/گ/g,"كی")
.replace(/ژ/g,"زی")
.replace(/چ/g,"جی")
.replace(/پ/g,"بی");
}
var f = function (s) {
temp = s.split('\n');
temp.sort(function(a,b){
var keyA = sortPreparation(a);
var keyB = sortPreparation(b);
if (keyA < keyB) return -1;
if (keyA > keyB) return 1;
return 0;
});
var result = temp.join('\n');
return result;
};
if (selectionMode) {
applyOnSelection(f);
} else {
obj.value = f(obj.value);
}
}
function buttonHTMLGenerator(javascriptCode, imageSuffix, title, alt) {
return "<a href=\"javascript:" + javascriptCode + "\"><img src=" +
"\"http://upload.wikimedia.org/wikipedia/" + imageSuffix + "\"" +
" title=\"" + title + "\"" +
" alt=\"" + alt + "\"></a>";
}
/* تغییر جهت */
var toggleDirection = buttonHTMLGenerator(
"toggleDir(document.editform.wpTextbox1);", "fa/d/d0/Button_toggle_dir.png", "تغییر جهت جعبهٔ ویرایش", "تغییرجهت"
);
/* ی ک */
var YKArabic = buttonHTMLGenerator(
"YKarabic(document.editform.wpTextbox1);", "fa/8/88/Button_YehKeh.png", "اصلاح ی و ک", "ی و ک"
);
/* فاصله مجازی */
var zwnj = buttonHTMLGenerator(
"FM(document.editform.wpTextbox1);", "fa/d/d0/Button_ZWNJ.png", "فاصلهٔ مجازی", "فاصلهٔ مجازی"
);
/* نویسهٔ غیراستاندارد */
var nonS = buttonHTMLGenerator(
"NonStandard(document.editform.wpTextbox1);", "fa/9/94/Button_non_standard.png", "نویسههای غیراستاندارد", "نویسههای غیراستاندارد"
);
/* فارسیسازی ارقام */
var Dig = buttonHTMLGenerator(
"digits(document.editform.wpTextbox1,true);", "fa/4/4a/Button_numbers.png", "فارسی سازی ارقام", "ارقام"
);
/* تبدیل به یونیکد در آدرسهای وب */
var URLFIX = buttonHTMLGenerator(
"URLfix(document.editform.wpTextbox1);", "fa/b/ba/Button_decode_URI.png", "یونیکدسازی نشانیها", "یونیکدسازی"
);
/* اَبَرابزار */
var STool = buttonHTMLGenerator(
"SuperTool(document.editform.wpTextbox1);", "fa/f/fc/Button_super_tool.png", "ابرابزار", "ابرابزار"
);
/* اصلاح علامت @ */
var AtSignFix = buttonHTMLGenerator(
"AtSignReplace(document.editform.wpTextbox1);", "fa/7/7f/Button_at_sign.png", "اصلاح علامت @", "@"
);
/* ویکیسازی */
var Wikify = buttonHTMLGenerator(
"void(document.editform.wpTextbox1.value='{{ویکیسازی}}\\n'+document.editform.wpTextbox1.value);", "fa/3/38/Button_wikify.png", "ویکیسازی", "ویکیسازی"
);
/* شد! */
var shod = buttonHTMLGenerator(
"void(document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+'\n:{{شد}}--~~~~');", "commons/5/5b/Button_check.png", "شد", "شد"
);
/* بدون منبع */
var NoS = buttonHTMLGenerator(
"void(document.editform.wpTextbox1.value='{{بدون منبع}}\\n'+document.editform.wpTextbox1.value)", "fa/8/8a/Button_no_source_fa.png", "بدون منبع", "بدون منبع"
);
/* ملزومات مقاله */
var AddEssentialThings = buttonHTMLGenerator(
"insertTags('== جستارهای وابسته ==\\n\\n== منابع ==\\n\\n{{پانویس}}','','');", "commons/e/ef/Add_note.jpg", "ملزومات مقاله", "ملزومات مقاله"
);
/* حق تکثیر مشکوک */
var Sus = "<a href=\"javascript:document.editform.wpTextbox1.value='{{حق تکثیر مشکوک}}\\n'+document.editform.wpTextbox1.value;void(document.getElementById('wpSummary').value='حق تکثیر مشکوک')\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/c/c7/Button_Sus.png\" title=\"حق تکثیر مشکوک\" alt=\"حق تکثیر مشکوک\"></a>";
/* نقض حق تکثیر */
var CopyR = "<a href=\"javascript:document.editform.wpTextbox1.value='';insertTags('{{جا:نقض حق تکثیر|url=','}}','Address');void(document.getElementById('wpSummary').value='نقض حق تکثیر');\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/6/6f/Button_CopyR.png\" title=\"نقض حق تکثیر\" alt=\"نقض حق تکثیر\"></a>";
/* لحن نامناسب */
var Tone = "<a href=\"javascript:document.editform.wpTextbox1.value='{{لحن نامناسب}}\\n'+document.editform.wpTextbox1.value;void(document.getElementById('wpSummary').value='لحن نامناسب')\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/f/fc/Button_Tone.png\" title=\"لحن نامناسب\" alt=\"لحن\"></a>";
/* اصلاحات نقطه گذاری */
var Punc = "<a href=\"javascript:Punctuation(document.editform.wpTextbox1)\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/e/ed/Button_punctuation.png\" title=\"نقطهگذاری\" alt=\"نقطهگذاری\"></a>";
/* اصلاح ترتیب میانویکیها */
var InterW = "<a href=\"javascript:InterwikiSorter(document.editform.wpTextbox1)\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/9/96/Button_interwiki.png\" title=\"اصلاح ترتیب میانویکیها\" alt=\"ترتیب میانویکیها\"></a>";
/* چپچین */
var ChapChin = "<a href=\"javascript:insertTags('{{چپچین}}\\n','\\n{{پایان چپچین}}','متن چپچین شده')\"><img src=\"http://upload.wikimedia.org/wikipedia/en/e/ea/Button_align_left.png\" title=\"چپچینکردن متن\" alt=\"چپچین\"></a>";
/* سر سطر */
var SareSatr = "<a href=\"javascript:insertTags('<br />','','');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png\" title=\"سرخط\" alt=\"سرخط\"></a>";
/* اندیس بالا */
var UpperText = "<a href=\"javascript:insertTags('<sup>','</sup>','اندیس');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png\" title=\"اندیس بالا\ alt=\"اندیس بالا\"></a>";
/* اندیس پایین */
var LowerText = "<a href=\"javascript:insertTags('<sub>','</sub>','اندیس');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png\" title=\"اندیس پایین\" alt=\"اندیس پایین\"></a>";
/* حذف سریع */
var SpeedyDel = "<a href=\"javascript:temp1=document.editform.wpTextbox1;temp2=temp1.value;temp1.value='';insertTags('{{حذف سریع|','}}\\n'+temp2,'معیار');void(document.getElementById('wpSummary').value='حذف سریع');\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/c/c1/Button_delete_vote.png\" title=\"حذف سریع\" alt=\"حذف سریع\"></a>";
/* منبع تصویر نامعلوم */
var PicSource = "<a href=\"javascript:document.editform.wpTextbox1.value='{{منبع تصویر نامعلوم}}\\n'+ document.editform.wpTextbox1.value;void(document.getElementById('wpSummary').value='منبع تصویر نامعلوم')\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/5/59/Button_image_source.png\" title=\"منبع تصویر نامعلوم\" alt=\"منبع تصویر نامعلوم\"></a>";
/* حق تکثیر تصویر نامعلوم */
var PicCopy = "<a href=\"javascript:document.editform.wpTextbox1.value='{{جا:حق تکثیر تصویر نامعلوم}}\\n'+ document.editform.wpTextbox1.value;void(document.getElementById('wpSummary').value='حق تکثیر تصویر نامعلوم')\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/7/7e/Button_image_copyright.png\" title=\"حق تکثیر تصویر نامعلوم\" alt=\"حق تکثیر تصویر نامعلوم\"></a>";
/* تمیزکاری */
var Cleanup = "<a href=\"javascript:void(document.editform.wpTextbox1.value='{{تمیزکاری}}\\n'+document.editform.wpTextbox1.value);\"><img src=\"http://upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png\" title=\"تمیزکاری\" alt=\"تمیزکاری\"></a>";
/* تغییر مسیر */
var RedirectButton = "<a href=\"javascript:document.editform.wpTextbox1.value='';insertTags('#تغییرمسیر [[',']]','پیوند');void(document.getElementById('wpSummary').value='تغییر مسیر');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png\" title=\"تغيير مسير\" alt=\"تغيير مسير\"></a>";
/* سال میلادی */
var GregYear = "<a href=\"javascript:insertTags('{{میلادی|','|ماه\u200cاختیاری|روز\u200cاختیاری|قبل\u200cاز\u200cمیلاد\u200cاختیاری}}','سال');\"><img src=\"http://upload.wikimedia.org/wikibooks/fa/a/a7/Button_cal.png\" title=\"سال میلادی\" alt=\"میلادی\"></a>";
/* کد */
var CodeButton = "<a href=\"javascript:insertTags('<code>','</code>','کد');\"><img src=\"http://upload.wikimedia.org/wikibooks/fa/2/23/Button_code.png\" title=\"کد\" alt=\"کد\"></a>";
/* خوشامدید */
var Welcome = "<a href=\"javascript:insertTags('{{جا:خوشامدید|~~~~}}','','');void(document.getElementById('wpSummary').value='خوشامد')\"><img src=\"http://upload.wikimedia.org/wikipedia/commons/4/4a/Smilies_Alien_cool.png\" title=\"خوشامدگویی\" alt=\"خوشامد\"></a>";
/* جدول */
var TableButton = "<a href=\"javascript:insertTags('\\n{| border=1 \\n|- \\n| ش۱ || ش۲ \\n|- \\n| ش۳ || ش۴','\\n|}\\n','');\"><img src=\"http://upload.wikimedia.org/wikibooks/fa/6/60/Button_insert_table.png\" title=\"جدول\" alt=\"جدول\"></a>";
/* توضیح */
var CommentButton = "<a href=\"javascript:insertTags('<!--','-->','توضیح');\"><img src=\"http://upload.wikimedia.org/wikibooks/fa/3/34/Button_hide_comment.png\" title=\"توضیح\" alt=\"توضیح\"></a>";
/* گالری */
var GalleryButton = "<a href=\"javascript:insertTags('\\n<gallery>\\n','\\n</gallery>','تصویر:PictureFileName.jpg|شرح\\nتصویر:PictureFileName.jpg|شرح');\"><img src=\"http://upload.wikimedia.org/wikibooks/fa/1/12/Button_gallery.png\" title=\"نگارخانه\" alt=\"نگارخانه\"></a>";
/* متن خط خورده */
var StrikeTextButton = "<a href=\"javascript:insertTags('<s>','</s>','متن خط خورده');\"><img src=\"http://upload.wikimedia.org/wikibooks/fa/c/c9/Button_strike.png\" title=\"متن خطخورده\" alt=\"متن خطخورده\"></a>";
/* اخطار نگاره */
var ImgWarn = "<a href=\"javascript:document.editform.wpTextbox1.value='';insertTags('{{جا:اخطار نگاره|','}}','نگاره');void(document.getElementById('wpSummary').value='اخطار نگاره');\"><img src=\"http://upload.wikimedia.org/wikipedia/commons/e/ec/Button_aviso.png\" title=\"اخطار نگاره\" alt=\"اخطار نگاره\"></a>";
/* پیوند ویکی */
var wikilink = "<a href=\"javascript:insertTags('[[',']]','مقاله');\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png\" title=\"پیوند\" alt=\"پیوند\"></a>";
/* مرتب سازی */
var sorttext = "<a href=\"javascript:SortText(document.editform.wpTextbox1,true);\"><img src=\"http://upload.wikimedia.org/wikipedia/fa/3/33/Button_sort.png\" title=\"مرتبسازی\" alt=\"مرتبسازی\"></a>";
var Spacer = " ";
var NewRow = "<br />";
if (typeof(mytools) === "undefined") {
var mytools = '';
}
function InsertButtonsToToolBar() {
var before = document.getElementById("wpTextbox1");
if (before == null) {
return;
}
var tooly = document.createElement("tooly");
tooly.innerHTML = toggleDirection + Spacer + mytools + Spacer + YKArabic + zwnj + STool;
before.parentNode.insertBefore(tooly, before);
}
hookEvent('load', InsertButtonsToToolBar);
/*</pre>*/