1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-12-02 14:58:06 +00:00

Changed the signature of WikiStore.renderTiddler

The parameters are more sensible and predictable now
This commit is contained in:
Jeremy Ruston
2012-02-01 16:12:49 +00:00
parent 5b301dc30b
commit b0336c527c
4 changed files with 41 additions and 42 deletions

View File

@@ -25,13 +25,9 @@ var parseStory = function(storyText) {
// Search the children of a node looking for the required tiddler rendering
var searchTiddlerNode = function(node,renderTiddler,renderTemplate) {
var renderAs;
if(renderTemplate) {
renderAs = renderTiddler;
renderTiddler = renderTemplate;
}
while(node !== null) {
if(node.getAttribute && node.getAttribute("data-tw-render-tiddler") === renderTiddler) {
if(!renderAs || (renderAs && node.getAttribute("data-tw-render-as") == renderAs)) {
if(!renderTemplate || (renderTemplate && node.getAttribute("data-tw-render-template") == renderTemplate)) {
return node;
}
}
@@ -52,7 +48,7 @@ exports.macro = {
output = [];
for(var t=0; t<tiddlers.length; t++) {
if(params.template) {
output.push(store.renderTiddler(type,params.template,tiddlers[t]));
output.push(store.renderTiddler(type,tiddlers[t],params.template));
} else {
output.push(store.renderTiddler(type,tiddlers[t]));
}
@@ -71,9 +67,7 @@ exports.macro = {
if(tiddlerNode === null) {
// If not, render the tiddler
var tmpNode = document.createElement("div");
tmpNode.innerHTML = params.template ?
store.renderTiddler(type,params.template,targetTiddlers[t]) :
store.renderTiddler(type,targetTiddlers[t]);
tmpNode.innerHTML = store.renderTiddler(type,targetTiddlers[t],params.template);
tiddlerNode = tmpNode.firstChild;
node.insertBefore(tiddlerNode,currNode);
} else {

View File

@@ -54,33 +54,27 @@ exports.macro = {
"with": {byName: true, type: "text", optional: true, dependentAll: true}
},
render: function(type,tiddler,store,params) {
var renderTitle = params.template,
renderAs = params.target;
// Slightly bewildering logic to sort out the optional parameters
if(renderAs === undefined) {
if(renderTitle === undefined) {
return "";
} else {
renderAs = tiddler.title;
}
} else {
if(renderTitle === undefined) {
renderTitle = renderAs;
}
var renderTitle = params.target,
renderTemplate = params.template;
if(typeof renderTitle !== "string") {
renderTitle = tiddler.title;
}
if(typeof renderTemplate !== "string") {
renderTemplate = renderTitle;
}
if(params["with"]) {
// Parameterised transclusion
var targetTiddler = store.getTiddler(renderTitle),
var targetTiddler = store.getTiddler(renderTemplate),
text = targetTiddler.text;
var withTokens = [params["with"]];
for(var t=0; t<withTokens.length; t++) {
var placeholderRegExp = new RegExp("\\$"+(t+1),"mg");
text = text.replace(placeholderRegExp,withTokens[t]);
}
return store.renderText(targetTiddler.type,text,type,renderAs);
return store.renderText(targetTiddler.type,text,type,renderTitle);
} else {
// There's no parameterisation, so we can just render the target tiddler directly
return store.renderTiddler(type,renderTitle,renderAs);
return store.renderTiddler(type,renderTitle,renderTemplate);
}
}
};