wiky
Version:
A Bidirectional WikiText Markup Converter.
62 lines (59 loc) • 2.67 kB
JavaScript
var Wiky = require('wiky/wiky')
require('wiky/wiky-lang')
require('wiky/wiky-math')
global.output = {
menu: "outmnu",
item: 0,
inbox: null,
outbox: null,
init: function() {
this.inbox = document.getElementById("inbox");
this.outbox = document.getElementById("outbox");
this.inbox.curScroll = this.inbox.scrollTop;
this.toggle(0);
},
onkeyup: [
function() { output.outbox.innerHTML = Wiky.toHtml(output.inbox.value); output.scroll(); },
function() { output.outbox.innerHTML = Wiky.toHtml(output.inbox.value).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/ /g," ").replace(/(\r?\n)/g,"<br/>"); output.scroll(); },
function() { output.outbox.innerHTML = Wiky.toWiki(Wiky.toHtml(output.inbox.value)).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/ /g," ").replace(/(\r?\n)/g,"<br/>"); output.scroll(); }
],
toggle: function(idx) {
var items = document.getElementById(this.menu).getElementsByTagName("a");
items[this.item].className = "";
items[this.item=idx].className = "active";
this.outbox.style.fontFamily = idx==0 ? "serif" : "monospace";
this.inbox.onkeyup = this.inbox.onfocus = this.onkeyup[idx];
this.inbox.onmouseup = function(){output.scroll();}
this.inbox.focus();
},
scroll: function() {
if (this.inbox.curScroll != this.inbox.scrollTop) {
this.inbox.curScroll = this.inbox.scrollTop;
this.outbox.scrollTop = this.outbox.scrollHeight/this.inbox.scrollHeight*this.inbox.scrollTop;
}
}
};
global.helpMenu = {
menu: "helpmnu",
item: 0,
toggle: function(idx) {
var items = document.getElementById(this.menu).getElementsByTagName("a");
document.getElementById(items[this.item].innerHTML).style.display = "none";
items[this.item].className = "";
items[this.item=idx].className = "active";
document.getElementById(items[this.item].innerHTML).style.display = "block";
}
};
global.example = function example(id) {
document.getElementById('inbox').value = document.getElementById(id).innerHTML
.replace(/&/g,'&')
.replace(/</g,'<')
.replace(/>/g,'>')
.replace(/"/g,'\"');
window.output.inbox.focus();
}
exports.main = function main(scenario) {
if (document.readyState == "complete") output.init();
else window.addEventListener("load", main, false);
}
if (require.main == module) exports.main();