Sponge Fourms Formatter

A script to format posts Spongepowered forums

2015-08-18 या दिनांकाला. सर्वात नवीन आवृत्ती पाहा.

// ==UserScript==
// @name        Sponge Fourms Formatter
// @description A script to format posts Spongepowered forums
// @namespace   Thefdjurt
// @include     https://forums.spongepowered.org/t/*
// @version     1.0
// @grant       none
// ==/UserScript==
function GET (URL) {
    var http = new XMLHttpRequest();
    http.open('GET', URL, false);
    http.send(null);
    return http;
}
var L=[
    "af", "ar", "ca", "cs", "da", "de", 
    "el", "en-GB", "en-PT", "en", "es-ES", "fi", 
    "fr-CA", "fr", "he", "hu", "it", "ja", 
    "ko", "nb", "nl", "no", "pl", "pt-BR", 
    "pt-PT", "ro", "ru", "sr", "sv-SE", "th", 
    "tr", "uk", "vi", "zh-CN", "zh-HK", "zh-TW", 
];
var lang=(function(){
    var l = navigator.languages || [navigator.language];
    for (var i=0;i<l.length;i++){
        if (L.indexOf(l[i])>=0) return l[i];
    }
    return "en-GB"; //Only us 'murcians use color ;D
})();
function format (str) {
    str = str.replace(/\\\[/g,"▌").replace(/\\\]/g,"▐");
    var res = str,
        ref = str.match(/(api|doc)\[(.*)\]/gi);
    for (var i=0; i<res.length; i++){
        var v = ref[i].replace(/\▌/g,"[").replace(/\▐/g,"]");
        var s = v.substr(0,3),
            m = v.substring(4,v.length-1);
        var t = (m.split("|")[1] || m.substring(m.lastIndexOf("/")+1));
        m = m.split("|")[0].replace(/\\\./g,"⬤").replace(/\./g,"/").replace(/\⬤/g,".");
        var g = null;
        if (s=="api"){
            if (m==="") g = GET("https://spongepowered.github.io/SpongeAPI/");
            var h = "https://spongepowered.github.io/SpongeAPI/org/spongepowered/api/"+m;
            g = GET(h + ".html");
            if (g.status == 404) {
                g = GET(h + "/package-summary.html");
                if (g.status == 404) continue;
            }
        } else {
            var l = navigator.language.replace(/US/gi,"");
            var h = "https://docs.spongepowered.org/"+l+"/"+m;
            g = GET(h+".html");
            if (g.status==404){
                g = GET(h+"/index.html");
                if (g.status==404) continue;
            }
        }
        res = res.replace(v, "<a href='" + g.responseURL + "'>"+t+"</a>");
    }
    return res;
}
setTimeout(function(){
    console.log("[Forumatter] Formatting the posts...")
    var cooked = document.querySelectorAll('.cooked');
    for (var i=0; i<cooked.length; i++) {
        var post = cooked[i];
        var cont = post.querySelectorAll('p');
        for (var n=0; n<cont.length; n++) {
            var p = cont[n];
            p.innerHTML = format(p.innerHTML);
        }
    }
}, 5);