Skip to content

Instantly share code, notes, and snippets.

@shtrih
Created June 23, 2013 10:36
Show Gist options
  • Save shtrih/5844565 to your computer and use it in GitHub Desktop.
Save shtrih/5844565 to your computer and use it in GitHub Desktop.
Исправляет «абракадабру» в чате модификации к Minecraft, dynmap (https://dl.dropboxusercontent.com/u/23033545/Archives/minecraft-map-translit.png). Тестировалось на Chrome 27 в расширении Tampermonkey 3.1.
// ==UserScript==
// @name Minecraft dynmap translator
// @namespace https://gist.github.com/shtrih/
// @version 0.1
// @description Отображение чатлога мода «dynmap» нормальными сообщениями на русском языке, если нет возможности исправить мод на сервере (русский отображается как «ÝÞßàáâãäå»)
// @match http://95.31.22.222:8123/*
// @copyright 2013+, shtrih
// ==/UserScript==
function scriptBody() {
/* http://www.cyberforum.ru/post1808126.html */
String.prototype.translit = (function(){
var L = {},
/*L = {
'А':'A','а':'a','Б':'B','б':'b','В':'V','в':'v','Г':'G','г':'g',
'Д':'D','д':'d','Е':'E','е':'e','Ё':'Yo','ё':'yo','Ж':'Zh','ж':'zh',
'З':'Z','з':'z','И':'I','и':'i','Й':'Y','й':'y','К':'K','к':'k',
'Л':'L','л':'l','М':'M','м':'m','Н':'N','н':'n','О':'O','о':'o',
'П':'P','п':'p','Р':'R','р':'r','С':'S','с':'s','Т':'T','т':'t',
'У':'U','у':'u','Ф':'F','ф':'f','Х':'Kh','х':'kh','Ц':'Ts','ц':'ts',
'Ч':'Ch','ч':'ch','Ш':'Sh','ш':'sh','Щ':'Sch','щ':'sch','Ъ':'"','ъ':'"',
'Ы':'Y','ы':'y','Ь':"'",'ь':"'",'Э':'E','э':'e','Ю':'Yu','ю':'yu',
'Я':'Ya','я':'ya'
},*/
r = '',
k
;
// init L
'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'.split('').forEach(function (tr, index) {
L[tr] = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'.split('')[index];
});
for (k in L) r += k;
r = new RegExp('[' + r + ']', 'g');
k = function(a){
return a in L ? L[a] : '';
};
return function(){
return this.replace(r, k);
};
})();
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
element = $('.messagelist'),
chathistory = $('<div/>', {
class: 'chat-history messagelist',
css: { 'max-height': 'none' }
}),
observer = new MutationObserver(function(mutationRecords) {
mutationRecords.forEach(function(mutation) {
if (mutation.addedNodes.length) {
for (var i = 0; i < mutation.addedNodes.length; i++) {
var messagerow = $(mutation.addedNodes[i]).clone();
// translit message
messagerow.find('.messagetext').each(function () {
$(this).text(
$(this).text().translit()
);
});
// append to chatlog
chathistory.append(
messagerow
);
// console.log(messagerow);
}
}
});
});
var interval = setInterval(function () {
console.log(element.length);
if (element.length) {
clearInterval(interval);
element
.before(chathistory)
.before(
$('<hr/>', {
css: {
'border': '1px #aaa dotted',
'border-top': '1px'
}
})
)
;
observer.observe(element[0], {
childList: true, // include information childNode insertion/removals
});
}
else {
element = $('.messagelist');
}
}, 1000);
}
var script = document.createElement('script');
script.textContent = '(' + scriptBody.toString() + ')()';
(document.head || document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment