This script is also on greasyfork!
Last active
May 12, 2024 11:06
-
-
Save hyblocker/d652e3d8775c42c5f63b08666a6c061c to your computer and use it in GitHub Desktop.
Unity Docs Syntax Highlighting
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Unity Docs Syntax Hightligher | |
// @namespace Violentmonkey Scripts | |
// @version 1.0 | |
// @author Hekky | |
// @description 18/03/2023, 11:38:56 | |
// | |
// @match https://docs.unity3d.com/Manual/* | |
// @match https://docs.unity3d.com/ScriptReference/* | |
// @match https://docs.unity3d.com/*/Manual/* | |
// @match https://docs.unity3d.com/*/ScriptReference/* | |
// | |
// @grant GM_getResourceText | |
// @grant GM_addStyle | |
// | |
// @require https://unpkg.com/[email protected]/prism.js | |
// | |
// @require https://unpkg.com/[email protected]/components/prism-c.min.js | |
// @require https://unpkg.com/[email protected]/components/prism-clike.min.js | |
// @require https://unpkg.com/[email protected]/components/prism-csharp.min.js | |
// @require https://unpkg.com/[email protected]/components/prism-hlsl.min.js | |
// | |
// @require https://unpkg.com/[email protected]/plugins/line-numbers/prism-line-numbers.min.js | |
// @require https://unpkg.com/[email protected]/plugins/show-language/prism-show-language.min.js | |
// | |
// @resource PRISM_THEME https://unpkg.com/[email protected]/themes/prism-tomorrow.min.css | |
// | |
// @resource LINE_NUMS_THEME https://unpkg.com/[email protected]/plugins/line-numbers/prism-line-numbers.min.css | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
GM_addStyle(GM_getResourceText("PRISM_THEME")); | |
GM_addStyle(GM_getResourceText("LINE_NUMS_THEME")); | |
}()); | |
const CSHARP = 0; | |
const HLSL = 1; | |
var waitForGlobal = function(key, callback) { | |
if (window[key]) { | |
callback(); | |
} else { | |
setTimeout(function() { | |
waitForGlobal(key, callback); | |
}, 100); | |
} | |
}; | |
function waitForLangLoad(lang, callback) { | |
if (Prism.util.getLanguage(lang) != null) { | |
callback(); | |
} else { | |
setTimeout(function() { | |
waitForLangLoad(lang, callback); | |
}, 100); | |
} | |
} | |
function detectCodeLanguage(elem) { | |
if (elem.classList.contains('codeExampleCS')) { | |
return CSHARP; | |
} | |
if (elem.innerHTML.match(/CGPROGRAM|ENDCG|CGINCLUDE|#pragma|SubShader \"/g) != null) { | |
return HLSL; | |
} | |
return CSHARP; | |
} | |
waitForGlobal("Prism", () => { | |
waitForLangLoad("csharp", () => { | |
waitForLangLoad("hlsl", () => { | |
document.querySelectorAll('.content-wrap pre').forEach((el) => { | |
el.innerHTML = el.innerHTML.replace(/\<br\>/g, '\n'); | |
el.classList.add("line-numbers"); | |
if (detectCodeLanguage(el) == CSHARP) { | |
el.classList.add("language-csharp"); | |
} else { | |
el.classList.add("language-hlsl"); | |
} | |
if (el.firstChild.nodeName != 'CODE') { | |
el.innerHTML = `<code>${el.innerHTML}</code>`; | |
} | |
}); | |
}); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment