flyink13 / Замена кода

// ==UserScript==
// @name         Замена кода
// @namespace    http://vk.com/
// @version      1.0
// @author       Flyink13
// @match        https://vk.com/*
// @description  Заменяет все что между ``` -- ``` в html сущности, чтобы ВК не заменял их
// @run-at       document-idle
// @copyright 2019, flyink13 (https://openuserjs.org/users/flyink13)
// @updateURL https://openuserjs.org/meta/flyink13/Замена_кода.meta.js
// @downloadURL https://openuserjs.org/install/flyink13/Замена_кода.user.js
// @license MIT
// @noframes
// ==/UserScript==
/* global ajax */

(function injectScript(fn) {
    var script = document.createElement('script');
    script.textContent = '(' + fn + ')();';
    script.id = fn.name;
    document.head.appendChild(script);
})(function replaceSendWord () {
    if (!ajax || !ajax.post) return;

    ajax.post = (function replaceFunction(ajaxPost) {
        return function ajaxPostFake() {
            var query = arguments[1];

            if (typeof query.msg === 'string' && query.act === 'a_send') {
                query.msg = query.msg.replace(/```([^]+?)```/g, (_, code) => {
                    code = Array.from(code).map((char) => {
                        return '&#' + char.codePointAt() + ';';
                    }).join('');
                    return '```' + code + '```';
                })
            }

            return ajaxPost.apply(this, arguments);
        }
    })(ajax.post);
});