Χρήστης:P.a.a/wiki2html.user.js
Μετά την αποθήκευση πρέπει να καθαρίσετε την κρυφή μνήμη (cache) του browser σας για να δείτε τις αλλαγές: Σε Chrome, Firefox, Safari, Internet Explorer και Edge: Κρατήστε πατημένο το ⇧ Shift και κάντε κλικ στο κουμπί Ανανέωση στην μπάρα εργαλείων.
// ==UserScript==
// @id wikipedia.org-b68c13a6-22a3-492a-b79b-4d405e8f572d@el.wikipedia.org/wiki/%CE%A7%CF%81%CE%AE%CF%83%CF%84%CE%B7%CF%82:P.a.a
// @name wiki2html
// @namespace el.wikipedia.org/wiki/%CE%A7%CF%81%CE%AE%CF%83%CF%84%CE%B7%CF%82:P.a.a
// @version 0.1
// @description Turn a diff's wikitext to html
// @include *.wikipedia.org/*
// @copyright Once upon a time
// @run-at document-end
// ==/UserScript==
var css = ".wiki2htmlparent {position: relative;} " +
".wiki2htmlchild {opacity: 0; color: black; background-color: white; position: absolute; top: 0px; right: 0px;} " +
".wiki2htmlparent:hover .wiki2htmlchild{opacity: 1;} " +
".wiki2htmlchild:hover {cursor: pointer;}";
var blocks = [].filter.call(document.querySelectorAll("td[class^='diff-']"), function (el) {
return /(?:deletedline|addedline)$/.test(el.className);
});
if(blocks.length){
unsafeWindow.mw.util.addCSS(css);
}
else{
return;
}
blocks.forEach(function(el){
var cont = el.childNodes[0];
if(cont === undefined){ // empty diff?
return;
}
cont.className = "wiki2htmlparent";
var btn = document.createElement("div");
btn.className = "wiki2htmlchild";
btn.innerHTML = "☯";
btn.addEventListener("click", function(evt){
var parent = evt.target.parentNode;
var wikitext = "";
for(var i=0; i < parent.childNodes.length - 1; i++){
wikitext += parent.childNodes[i].textContent;
}
gethtml(parent, wikitext);
});
cont.appendChild(btn);
});
function gethtml(parent, wikitext){
var mw = unsafeWindow.mw;
var title = encodeURIComponent(mw.config.get("wgPageName"));
var xhr = new XMLHttpRequest();
xhr.onload = function(){
var apires = JSON.parse(this.responseText);
parent.innerHTML = apires.parse.text["*"];
}
var url = mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/api.php?" +
"action=parse&"+
"text=" + encodeURIComponent(wikitext) + "&" +
"title=" + title + "&" +
"prop=text&contentmodel=wikitext&format=json&disablepp=true";
xhr.open("get", url, true);
xhr.send();
}