From 4ce479f6931a319666184cb76811b663cf7f23c4 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sat, 11 Feb 2012 20:12:25 +0000 Subject: [PATCH] Refactored the image and JSON parsers Now they reuse the WikiTextParseTree --- js/ImageParser.js | 43 +++++++++----------------------- js/JSONParser.js | 62 ++++++++++++++++++++++------------------------- 2 files changed, 41 insertions(+), 64 deletions(-) diff --git a/js/ImageParser.js b/js/ImageParser.js index 5d7f5f66d..11645bd02 100644 --- a/js/ImageParser.js +++ b/js/ImageParser.js @@ -9,41 +9,22 @@ Compiles images into JavaScript functions that render them in HTML /*jslint node: true */ "use strict"; -var utils = require("./Utils.js"); +var WikiTextParseTree = require("./WikiTextParseTree.js").WikiTextParseTree, + HTML = require("./HTML.js").HTML, + utils = require("./Utils.js"); -var ImageRenderer = function(handlerCode) { - /*jslint evil: true */ - this.handler = eval(handlerCode); -}; - -ImageRenderer.prototype.render = function(tiddler,store) { - return this.handler(tiddler,store,utils); -}; - -// The parse tree is degenerate -var ImageParseTree = function(type,text) { - this.type = type; - this.text = text; - this.dependencies = {}; -}; - -ImageParseTree.prototype.compile = function(type) { - if(type === "text/html") { - if(this.type === "image/svg+xml") { - return new ImageRenderer("(function (tiddler,store,utils) {return '';})"); - } else { - return new ImageRenderer("(function (tiddler,store,utils) {return '';})"); - } - } else { - return null; - } -}; - -var ImageParser = function() { +var ImageParser = function(options) { + this.store = options.store; }; ImageParser.prototype.parse = function(type,text) { - return new ImageParseTree(type,text); + var src; + if(this.type === "image/svg+xml") { + src = "data:" + type + "," + encodeURIComponent(text); + } else { + src = "data:" + type + ";base64," + text; + } + return new WikiTextParseTree([HTML.elem("img",{src: src})],{},this.store); }; exports.ImageParser = ImageParser; diff --git a/js/JSONParser.js b/js/JSONParser.js index 163cf974a..6ba5bd674 100644 --- a/js/JSONParser.js +++ b/js/JSONParser.js @@ -9,47 +9,43 @@ Compiles JSON objects into JavaScript functions that render them in HTML and pla /*jslint node: true */ "use strict"; -var utils = require("./Utils.js"); +var WikiTextParseTree = require("./WikiTextParseTree.js").WikiTextParseTree, + HTML = require("./HTML.js").HTML, + utils = require("./Utils.js"); -var JSONRenderer = function(handlerCode) { - /*jslint evil: true */ - this.handler = eval(handlerCode); +var renderObject = function(obj) { + var children = [],t; + if(obj instanceof Array) { + for(t=0; t