TieqViet-ize

Script này sẽ biến mọi trang web của bạn thành Tiếng Việt sau cải cách :). Thanh menu hiện ở góc phải của màn hình

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         TieqViet-ize
// @version      1.1.1
// @description  Script này sẽ biến mọi trang web của bạn thành Tiếng Việt sau cải cách :). Thanh menu hiện ở góc phải của màn hình
// @author       Dogekutesky's
// @match        *://*/*
// @run-at       document-end
// @require      https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js
// @resource     https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css
// @grant        none
// @namespace https://greasyfork.org/users/123835
// ==/UserScript==

$('body').after('<tieqviet><div class="popup-tieqviet"> Bạn kó muốn Việt hoá page này?<div><button class="yes">Có</button><button class="no gray">Để sau</button></div></div><style>.popup-tieqviet button{font-family: Arial;font-weight: bold;font-size: 18px;cursor: pointer;width: 90px;height: 45px;margin: 15px 0 0 3px!important;transition: all 0.2s;color: #fff;background: #226fbe;border: 2px dashed #226fbe;border-radius: 7px}.popup-tieqviet button:hover{background: transparent;color: #226fbe}.popup-tieqviet .gray{background: gray;border: 2px dashed gray}.popup-tieqviet .gray:hover{color: gray}.popup-tieqviet{color: black!important;box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)!important;right: -220px;top: 10px;padding: 20px!important;background: #fff;border-radius: 5px;width: 200px;position: fixed;font-family: verdana;font-size: 16px;z-index: 99999999;transition: all 0.5s;}.popup-tieqviet:hover{right: 5px;}</style></tieqviet>');
$('.popup-tieqviet button').on('click',function(){
    $('.popup-tieqviet').remove();
});
$('.popup-tieqviet .yes').on('click',function(){
    tieqVietize();
});
function tieqVietize(){
    var _typeof='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(a){return typeof a;}:function(a){return a&&'function'==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?'symbol':typeof a;},maps=[['k(h|H)','x'],['K(h|H)','X'],['c(?!(h|H))|q','k'],['C(?!(h|H))|Q','K'],['t(r|R)|c(h|H)','c'],['T(r|R)|C(h|H)','C'],['d|g(i|I)|r','z'],['D|G(i|I)|R','Z'],['g(i|\xEC|\xED|\u1EC9|\u0129|\u1ECB|I|\xCC|\xCD|\u1EC8|\u0128|\u1ECA)','z$1'],['G(i|\xEC|\xED|\u1EC9|\u0129|\u1ECB|I|\xCC|\xCD|\u1EC8|\u0128|\u1ECA)','Z$1'],['\u0111','d'],['\u0110','D'],['p(h|H)','f'],['P(h|H)','F'],['n(g|G)(h|H)?','q'],['N(g|G)(h|H)?','Q'],['(g|G)(h|H)','$1'],['t(h|H)','w'],['T(h|H)','W'],['(n|N)(h|H)','$1\'']];var tieqViet=function(a){if('string'!=typeof a)throw new TypeError('Expected a string, got '+('undefined'==typeof a?'undefined':_typeof(a)));return maps.reduce(function(b,c){return a=a.replace(new RegExp(c[0],'g'),c[1]),a;},a);};
    //minified modified version of https://github.com/phanan/tieqviet/blob/master/dist/tieqviet.min.js

    function modifyV(f){
        $(f).find('*:not(iframe):not(style):not(span[data-text="true"])').contents().filter(function(){return (this.nodeType == 3) && this.nodeValue.match(/[a-zA-Z_ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠàáâãèéêìíòóôõùúăđĩũơƯĂẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼỀỀỂưăạảấầẩẫậắằẳẵặẹẻẽềềểỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪễệỉịọỏốồổỗộớờởỡợụủứừỬỮỰỲỴÝỶỸửữựỳỵỷỹ]/); }).each(function() {
            if (!$(this).parent().hasClass('viet-hoa-ed')){
                var text = tieqViet($(this).text());
                //console.log(text);
                this.nodeValue=text;
                $(this).parent().addClass('viet-hoa-ed');
            }
        });
    }
    modifyV('body');
    var observer = new MutationObserver(function(mutations) {
        $(mutations).each(function(){
            modifyV($(this.target));
            //console.log($(this.target));

        });
    });

    var config = {  childList: true, subtree: true };
    observer.observe(document.body,config);
}