// ==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);