Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var d = /\s+/g,
- rus = "щ ш ч ц й ё э ю я х ж а б в г д е з и к л м н о п р с т у ф ъ ы ь".split(d),
- 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);
- function detransliterate(str, reverse) {
- if (!reverse && str.substring(0, 4) !== 'ru--') return str
- if (!reverse) str = str.substring(4)
- // TODO rework this
- // (didnt placed this earlier because something is breaking and i am too lazy to figure it out ;( )
- if(!reverse) {
- // str = str.replace(/j/g, 'ь')
- // str = str.replace(/w/g, 'ъ')
- str = str.replace(/yie/g, 'ые')
- }
- else {
- // str = str.replace(/ь/g, 'j')
- // str = str.replace(/ъ/g, 'w')
- str = str.replace(/ые/g, 'yie')
- }
- var i,
- s = /[^[\]]+(?=])/g, orig = str.match(s),
- t = /<(.|\n)*?>/g, tags = str.match(t);
- if(reverse) {
- for(i = 0; i < rus.length; ++i) {
- str = str.split(rus[i]).join(eng[i]);
- str = str.split(rus[i].toUpperCase()).join(eng[i].toUpperCase());
- }
- }
- else {
- for(i = 0; i < rus.length; ++i) {
- str = str.split(eng[i]).join(rus[i]);
- str = str.split(eng[i].toUpperCase()).join(rus[i].toUpperCase());
- }
- }
- if(orig) {
- var restoreOrig = str.match(s);
- for (i = 0; i < restoreOrig.length; ++i)
- str = str.replace(restoreOrig[i], orig[i]);
- }
- if(tags) {
- var restoreTags = str.match(t);
- for (i = 0; i < restoreTags.length; ++i)
- str = str.replace(restoreTags[i], tags[i]);
- str = str.replace(/\[/g, '').replace(/\]/g, '');
- }
- return str;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement