1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-11-23 10:07:19 +00:00

Revert "Passed "store" to the other parser constructors"

This reverts commit 017be8f4ff.
This commit is contained in:
Jeremy Ruston 2012-02-11 20:02:35 +00:00
parent 017be8f4ff
commit c100b434f9
7 changed files with 68 additions and 58 deletions

View File

@ -26,8 +26,8 @@ var App = function() {
this.store = new WikiStore();
// Register the parsers
this.store.registerParser("text/x-tiddlywiki",new WikiTextParser({store: this.store}));
this.store.registerParser("application/json",new JSONParser({store: this.store}));
var imageParser = new ImageParser({store: this.store});
this.store.registerParser("application/json",new JSONParser());
var imageParser = new ImageParser();
this.store.registerParser("image/svg+xml",imageParser);
this.store.registerParser("image/jpg",imageParser);
this.store.registerParser("image/jpeg",imageParser);

View File

@ -42,7 +42,7 @@ var utils = require("./Utils.js");
Constructs an HTMLParseTree from a tree of nodes. A single node or an array of nodes can be passed.
As a shortcut, the constructor can be called as an ordinary function without the new keyword, in which case
it by default returns the `text/html` rendering of the tree.
it automatically returns the `text/html` rendering of the tree.
*/
var HTML = function(tree,type) {
if(this instanceof HTML) {
@ -110,17 +110,6 @@ HTML.macro = function(name,params,children,dependencies) {
return m;
};
/*
Static method to construct a label
*/
HTML.label = function(type,value,classes) {
classes = (classes || []).slice(0);
classes.push("label");
return HTML.elem("span",{
"class": classes
},value);
};
/*
Static method to construct a split label
*/

View File

@ -9,22 +9,41 @@ Compiles images into JavaScript functions that render them in HTML
/*jslint node: true */
"use strict";
var WikiTextParseTree = require("./WikiTextParseTree.js").WikiTextParseTree,
HTML = require("./HTML.js").HTML,
utils = require("./Utils.js");
var utils = require("./Utils.js");
var ImageParser = function(options) {
this.store = options.store;
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 '<img src=\"data:" + this.type + "," + utils.stringify(encodeURIComponent(this.text)) + "\">';})");
} else {
return new ImageRenderer("(function (tiddler,store,utils) {return '<img src=\"data:" + this.type + ";base64," + this.text + "\">';})");
}
} else {
return null;
}
};
var ImageParser = function() {
};
ImageParser.prototype.parse = function(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);
return new ImageParseTree(type,text);
};
exports.ImageParser = ImageParser;

View File

@ -9,43 +9,47 @@ Compiles JSON objects into JavaScript functions that render them in HTML and pla
/*jslint node: true */
"use strict";
var WikiTextParseTree = require("./WikiTextParseTree.js").WikiTextParseTree,
HTML = require("./HTML.js").HTML,
utils = require("./Utils.js");
var utils = require("./Utils.js");
var renderObject = function(obj) {
var children = [],t;
if(obj instanceof Array) {
for(t=0; t<obj.length; t++) {
children.push(HTML.elem("li",{
"class": ["jsonArrayMember"]
},[renderObject(obj[t])]));
}
return HTML.elem("ul",{
"class": ["jsonArray"]
},children);
} else if(typeof obj === "object") {
for(t in obj) {
children.push(HTML.elem("li",{
"class": ["jsonObjectMember"]
},[HTML.splitLabel("JSON",[HTML.text(t)],[renderObject(obj[t])])]));
}
return HTML.elem("ul",{
"class": ["jsonObject"]
},children);
} else {
return HTML.label("JSON" + (typeof obj),[HTML.text(JSON.stringify(obj))],["jsonValue"]);
}
var JSONRenderer = function(handlerCode) {
/*jslint evil: true */
this.handler = eval(handlerCode);
};
var JSONParser = function(options) {
this.store = options.store;
JSONRenderer.prototype.render = function(tiddler,store) {
return this.handler(tiddler,store,utils);
};
JSONRenderer.prototype.toString = function(type) {
var output = [];
utils.renderObject(output,type,this.handler.toString(),[]);
return output.join("");
};
// The parse tree is degenerate
var JSONParseTree = function(tree) {
this.tree = tree;
this.dependencies = {};
};
JSONParseTree.prototype.compile = function(type) {
return new JSONRenderer("(function (tiddler,store,utils) {var output=[]; utils.renderObject(output,'" + type + "'," + JSON.stringify(this.tree) + ",[]);return output.join('');})");
};
JSONParseTree.prototype.toString = function(type) {
var output = [];
utils.renderObject(output,type,this.tree,[]);
return output.join("");
};
var JSONParser = function() {
};
JSONParser.prototype.parse = function(type,text) {
return new WikiTextParseTree([renderObject(JSON.parse(text))],{},this.store);
return new JSONParseTree(JSON.parse(text));
};
exports.JSONParser = JSONParser;
})();

View File

@ -33,7 +33,6 @@ exports.macro = {
} else {
return store.renderText("text/x-tiddlywiki",v,type,tiddler.title);
}
break;
case "date":
var template = params.template || "DD MMM YYYY";
return encoder(utils.formatDateString(v,template));

File diff suppressed because one or more lines are too long

View File

@ -13,7 +13,6 @@ Technical documentation includes:
* [[Testing]] regimen
* Details of the CommandLineInterface
* Overview of TiddlyWikiArchitecture
** TiddlyWikiInternals
** MacroInternals
* Information about TiddlerFiles and RecipeFiles
* NewWikiTextFeatures