var fs = require("fs"), path = require("path"); var HISTORY_FILE = path.join(__dirname, "../server-data/history.txt"); function htmlspecialchars (str) { //Hum, hum... Could do better if (typeof str !== "string") return ""; return str.replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } var Tools = { "Text" : function(el) { return ''+htmlspecialchars(el.txt||"")+''; }, "Pencil" : function(el) { if (!el._children) return ""; switch (el._children.length) { case 0: return ""; case 1: var pathstring = "M" + el._children[0].x + " " + el._children[0].y + "L" + el._children[0].x + " " + el._children[0].y; break; default: var pathstring = "M"+el._children[0].x+" "+ el._children[0].y + "L"; for(var i=1;i'; } }; function toSVG(obj) { var margin=500, maxelems = 1e4; var elements = "", i=0, w=0, h=0; var t=Date.now(); for (var id in obj) { if (++i > maxelems) break; var elem = obj[id]; if (elem.x && elem.x + margin > w ) w = elem.x + margin; if (elem.y && elem.y + margin > h) h = elem.y + margin; elements += Tools[elem.tool](elem); } console.error(i+" elements treated in "+(Date.now()-t)+"ms."); var svg = '' + '' + elements + ''; console.log(svg); return svg; } fs.readFile(HISTORY_FILE, function (err, data) { if (err) throw err; var t=Date.now(); var board = JSON.parse(data); console.error("JSON parsed in "+(Date.now()-t)+"ms."); toSVG(board); });