۷٬۰۸۸
ویرایش
Nazarzadeh (بحث | مشارکتها) بدون خلاصۀ ویرایش |
Nazarzadeh (بحث | مشارکتها) بدون خلاصۀ ویرایش |
||
خط ۴۴: | خط ۴۴: | ||
.replace(/[\u200B\u200C\uFEFF]([ء\n\s\[\]\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\\|])/g, '$1') | .replace(/[\u200B\u200C\uFEFF]([ء\n\s\[\]\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\\|])/g, '$1') | ||
.replace(/([\n\s\[\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\\|])[\u200B-\u200D\uFEFF]/g, '$1') | .replace(/([\n\s\[\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\\|])[\u200B-\u200D\uFEFF]/g, '$1') | ||
// Clean ZWNJs before | // Clean ZWNJs before brackets which have space after/before them | ||
.replace(/[\u200B-\u200D\uFEFF](\]\][\s\n])/g, '$1') | .replace(/[\u200B-\u200D\uFEFF](\]\][\s\n])/g, '$1') | ||
.replace(/([\n\s]\[\[)[\u200B-\u200D\uFEFF]/g, '$1'); | .replace(/([\n\s]\[\[)[\u200B-\u200D\uFEFF]/g, '$1'); | ||
خط ۱۸۴: | خط ۱۸۴: | ||
* Replaces Persian characters with Arabic's ones so an Arabic sorter can sort Persian lines | * Replaces Persian characters with Arabic's ones so an Arabic sorter can sort Persian lines | ||
*/ | */ | ||
function | function prepareForArabicSort(text) { | ||
return text | return text | ||
.replace(/ی/g, 'ي') | .replace(/ی/g, 'ي') | ||
خط ۱۹۱: | خط ۱۹۱: | ||
.replace(/ژ/g, 'زی') | .replace(/ژ/g, 'زی') | ||
.replace(/چ/g, 'جی') | .replace(/چ/g, 'جی') | ||
.replace(/پ/g, 'بی'); | .replace(/پ/g, 'بی') | ||
.replace(/و/g, 'نی') | |||
// 1728 === '۰'.charCodeAt(0) - '0'.charCodeAt(0) | |||
.replace(/([۰-۹])/g, function (x) { return String.fromCharCode(x.charCodeAt(0) - 1728) }); | |||
} | } | ||
function | function persianSort(array) { | ||
return | return array.sort(function (x, y) { | ||
var keyX = | var keyX = prepareForArabicSort(x), | ||
keyY = | keyY = prepareForArabicSort(y); | ||
return keyX < keyY ? -1 : keyX > keyY ? 1 : 0; | |||
}); | |||
} | |||
} | } | ||
خط ۳۹۲: | خط ۳۸۹: | ||
.replace(/(. ) +(?=[^= ])/g, '$1') | .replace(/(. ) +(?=[^= ])/g, '$1') | ||
//فاصله بعد از سجاوندی به جز ! به دلیل (<!-- و !! در بالای جدولها) | //فاصله بعد از سجاوندی به جز ! به دلیل (<!-- و !! در بالای جدولها) | ||
.replace(/([،\.\؛\؟»])([^\ | .replace(/([،\.\؛\؟»])([^\s،\.\(\)«»\"\[\]<>\d\w\{\}\|۰۱۲۳۴۵۶۷۸۹\'])/g, '$1 $2') | ||
// افزودن فاصله به بعد از سجاوندی | // افزودن فاصله به بعد از سجاوندی | ||
.replace(new RegExp('([' + persianCharacters + ']+|\\]|\\)|»)([؟،؛\\!\\.])([' + persianCharacters +persianDigits + ']+|\\[|\\(|«)', 'g'), '$1$2 $3') | .replace(new RegExp('([' + persianCharacters + ']+|\\]|\\)|»)([؟،؛\\!\\.])([' + persianCharacters +persianDigits + ']+|\\[|\\(|«)', 'g'), '$1$2 $3') | ||
// حذف فاصله بعد از گیومه، پرانتز، براکت باز | // حذف فاصله بعد از گیومه، پرانتز، براکت باز | ||
.replace(/([\(«\[]) /g, '$1') | .replace(/([\(«\[]) /g, '$1') | ||
// حذف فاصله قبل از گیومه، | // حذف فاصله قبل از گیومه، پرانتز | ||
.replace(/ ([\)»\ | .replace(/ ([\)»])/g, '$1') | ||
//.replace(/ (\])/g, '$1') // فاصله پیش از پراکت را حذف نکن زیرا در ویکی کاربرد مهمی دارد | |||
// افزودن فاصله قبل از گیومه باز | // افزودن فاصله قبل از گیومه باز | ||
.replace(/([^ \(\[\|\r\n>'])(«)/g, '$1 $2') | .replace(/([^ \(\[\|\r\n>'])(«)/g, '$1 $2') | ||
خط ۴۵۹: | خط ۴۵۷: | ||
applyZwnj: applyZwnj, | applyZwnj: applyZwnj, | ||
normalizeZwnj: normalizeZwnj, | normalizeZwnj: normalizeZwnj, | ||
persianSort: persianSort, | |||
punctuation: punctuation, | punctuation: punctuation, | ||
toPersianDigits: toPersianDigits, | toPersianDigits: toPersianDigits, |