UNPKG

harf

Version:

A small library that keeps Arabic letters look the same when seperated through several HTML elements

6 lines 2.31 kB
/* * harf.js 0.1.0 * Copyright © 2019 MrG0lden * Released under MIT license */ !function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(a=a||self).harf=e()}(this,function(){"use strict";var c={"آ":{final:"FE82"},"أ":{final:"FE84"},"ؤ":{final:"FE86"},"إ":{final:"FE88"},"ا":{final:"FE8E"},"د":{final:"FEAA"},"ذ":{final:"FEAC"},"ر":{final:"FEAE"},"ز":{final:"FEB0"},"و":{final:"FEEE"},"ى":{final:"FEF0"},"ة":{final:"FE94"},"لا":{final:"FEFC"},"لإ":{final:"FEFA"},"لأ":{final:"FEF8"},"لآ":{final:"FEF6"},"ئ":{final:"FE8A"},"ب":{final:"FE90"},"ت":{final:"FE96"},"ث":{final:"FE9A"},"ج":{final:"FE9E"},"ح":{final:"FEA2"},"خ":{final:"FEA6"},"س":{final:"FEB2"},"ش":{final:"FEB6"},"ص":{final:"FEBA"},"ض":{final:"FEBE"},"ط":{final:"FEC2"},"ظ":{final:"FEC6"},"ع":{final:"FECA"},"غ":{final:"FECE"},"ف":{final:"FED2"},"ق":{final:"FED6"},"ك":{final:"FEDA"},"ل":{final:"FEDE"},"م":{final:"FEE2"},"ن":{final:"FEE6"},"ه":{final:"FEEA"},"ي":{final:"FEF2"}};function convertToForm(a,e){var n=a[e],i="";switch(n){case"ا":case"أ":case"إ":case"آ":case"ؤ":case"ة":case"د":case"ذ":case"ر":case"ز":case"و":case"ى":isCharAttachable(a[e-1])&&(i=unicodeToChar(c[n].final)),i=n;break;case"ل":switch(a[e+1]){case"ا":case"أ":case"إ":case"آ":var f=n.concat(a[e+1]);if(isCharAttachable(a[e-1])){i=unicodeToChar(c[f].final);break}i=unicodeToChar(c[f].final,-1)}i=anAttachableLetterForm(a,e);break;case"ب":case"ت":case"ث":case"ج":case"ح":case"خ":case"س":case"ش":case"ص":case"ض":case"ط":case"ظ":case"ع":case"غ":case"ف":case"ق":case"ك":case"م":case"ن":case"ه":case"ي":i=anAttachableLetterForm(a,e);break;default:i=n}return i}function unicodeToChar(a,e){return void 0===e&&(e=0),String.fromCharCode(parseInt(a)+e)}function isCharAttachable(a){if(" "===a)return!1;for(var e=0,n=["ا","أ","إ","آ","ؤ","ة","د","ذ","ر","ز","و","ى","ء"];e<n.length;e+=1){if(a===n[e])return!1}return!0}function anAttachableLetterForm(a,e){var n=a[e];return isCharAttachable(a[e-1])?" "===a[e+1]?unicodeToChar(c[n].final):unicodeToChar(c[n].final,2):" "!==a[e+1]?unicodeToChar(c[n].final,1):n}return function(a){for(var e=a.split(""),n="",i=0;i<e.length;i++)n+=convertToForm(e,i);return n}});