Advertisement
Guest User

Untitled

a guest
Jan 15th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var d = /\s+/g,
  2.     rus = "щ    ш  ч  ц  й  ё  э  ю  я  х  ж  а б в г д е з и к л м н о п р с т у ф ъ  ы ь".split(d),
  3.     eng = "shch sh ch cz ij yo ye yu ya kh zh a b v g d e z i k l m n o p r s t u f xx y x".split(d);
  4.  
  5. function detransliterate(str, reverse) {
  6.     if (!reverse && str.substring(0, 4) !== 'ru--') return str
  7.     if (!reverse) str = str.substring(4)
  8.  
  9.     // TODO rework this
  10.     // (didnt placed this earlier because something is breaking and i am too lazy to figure it out ;( )
  11.     if(!reverse) {
  12.     //    str = str.replace(/j/g, 'ь')
  13.     //    str = str.replace(/w/g, 'ъ')
  14.         str = str.replace(/yie/g, 'ые')
  15.     }
  16.     else {
  17.     //    str = str.replace(/ь/g, 'j')
  18.     //    str = str.replace(/ъ/g, 'w')
  19.         str = str.replace(/ые/g, 'yie')
  20.     }
  21.  
  22.     var i,
  23.         s = /[^[\]]+(?=])/g, orig = str.match(s),
  24.         t = /<(.|\n)*?>/g, tags = str.match(t);
  25.  
  26.     if(reverse) {
  27.         for(i = 0; i < rus.length; ++i) {
  28.             str = str.split(rus[i]).join(eng[i]);
  29.             str = str.split(rus[i].toUpperCase()).join(eng[i].toUpperCase());
  30.         }
  31.     }
  32.     else {
  33.         for(i = 0; i < rus.length; ++i) {
  34.             str = str.split(eng[i]).join(rus[i]);
  35.             str = str.split(eng[i].toUpperCase()).join(rus[i].toUpperCase());
  36.         }
  37.     }
  38.  
  39.     if(orig) {
  40.         var restoreOrig = str.match(s);
  41.  
  42.         for (i = 0; i < restoreOrig.length; ++i)
  43.             str = str.replace(restoreOrig[i], orig[i]);
  44.     }
  45.  
  46.     if(tags) {
  47.         var restoreTags = str.match(t);
  48.  
  49.         for (i = 0; i < restoreTags.length; ++i)
  50.             str = str.replace(restoreTags[i], tags[i]);
  51.  
  52.         str = str.replace(/\[/g, '').replace(/\]/g, '');
  53.     }
  54.  
  55.     return str;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement