bathome 代码高亮

将 bathome 的代码块使用 highlight.js 高亮

目前为 2019-11-03 提交的版本。查看 最新版本

// ==UserScript==
// @name         bathome 代码高亮
// @namespace    aloxaf_bat
// @version      0.0.4
// @description  将 bathome 的代码块使用 highlight.js 高亮
// @author       aloxaf
// @include      /https?://[^.]+.bathome.net/
// @run-at       document-end
// @require      https://cdn.bootcss.com/highlight.js/9.15.10/highlight.min.js
// @require      https://cdn.bootcss.com/highlight.js/9.15.10/languages/dos.min.js
// @require      https://cdn.bootcss.com/highlight.js/9.15.10/languages/vbscript.min.js
// @require      https://cdn.bootcss.com/highlight.js/9.15.10/languages/powershell.min.js
// @require      https://cdn.bootcss.com/highlight.js/9.15.10/languages/rust.min.js
// @require      https://cdn.bootcss.com/highlight.js/9.15.10/languages/awk.min.js
// @require      https://cdn.bootcss.com/highlight.js/9.15.9/languages/julia.min.js
// @require      https://cdn.bootcss.com/highlightjs-line-numbers.js/2.7.0/highlightjs-line-numbers.min.js
// ==/UserScript==

/* jshint esversion: 6 */

/*
highlight.min.js 已包含对以下语言的支持,
需要其它语言的话可以到 https://www.bootcdn.cn/highlight.js/ 查找并添加上上面
apache bash coffeescript cpp
cs css diff http ini java javascript 
json makefile xml markdown nginx 
objectivec perl php 
properties python ruby shell 
sql yaml
*/

(function() {
    'use strict';
    function extract_text(codeblock) {
        let result = document.evaluate('.//li/text()', codeblock, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
        let node = result.iterateNext();
        let str = '';
        while (node) {
            str += node.data;
            node = result.iterateNext();
        }
        return str;
    }

    let codeblocks = document.getElementsByTagName('pre');
    for (let codeblock of codeblocks) {
        let text = extract_text(codeblock)
            .replace(/&/g, "&")
            .replace(/</g, "&lt;")
            .replace(/>/g, "&gt;")
            .replace(/"/g, "&quot;")
            .replace(/'/g, "&#039;");
        codeblock.innerHTML=`<code>${text}</code>`;
        codeblock.classList.remove('blockcode');
    }

    for (let codeblock of document.getElementsByTagName('code')) {
        hljs.highlightBlock(codeblock);
        hljs.lineNumbersBlock(codeblock);
    }

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址