1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-28 16:23:15 +00:00

Obeisance to JSHint for core modules

There are still some warnings about making functions in a loop, but
I’ll fix those as a separate pull request because the fixes are more
than typographic errors.
This commit is contained in:
Jermolene 2014-08-30 20:44:26 +01:00
parent 2a3e54b064
commit 3a67fdb768
48 changed files with 173 additions and 169 deletions

View File

@ -26,7 +26,7 @@ Command.prototype.execute = function() {
// Get the build targets defined in the wiki // Get the build targets defined in the wiki
var buildTargets = $tw.boot.wikiInfo.build; var buildTargets = $tw.boot.wikiInfo.build;
if(!buildTargets) { if(!buildTargets) {
return "No build targets defined" return "No build targets defined";
} }
// Loop through each of the specified targets // Loop through each of the specified targets
var targets; var targets;

View File

@ -78,7 +78,7 @@ SimpleServer.prototype.findMatchingRoute = function(request,state) {
}; };
SimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) { SimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) {
var header = request.headers["authorization"] || "", var header = request.headers.authorization || "",
token = header.split(/\s+/).pop() || "", token = header.split(/\s+/).pop() || "",
auth = $tw.utils.base64Decode(token), auth = $tw.utils.base64Decode(token),
parts = auth.split(/:/), parts = auth.split(/:/),
@ -89,7 +89,7 @@ SimpleServer.prototype.checkCredentials = function(request,incomingUsername,inco
} else { } else {
return "DENIED"; return "DENIED";
} }
} };
SimpleServer.prototype.listen = function(port,host) { SimpleServer.prototype.listen = function(port,host) {
var self = this; var self = this;
@ -167,8 +167,8 @@ var Command = function(params,commander,callback) {
delete fields.fields; delete fields.fields;
} }
// Remove any revision field // Remove any revision field
if(fields["revision"]) { if(fields.revision) {
delete fields["revision"]; delete fields.revision;
} }
state.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title})); state.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title}));
var changeCount = state.wiki.getChangeCount(title).toString(); var changeCount = state.wiki.getChangeCount(title).toString();
@ -237,7 +237,7 @@ var Command = function(params,commander,callback) {
tiddlerFields[name] = tiddler.getFieldString(name); tiddlerFields[name] = tiddler.getFieldString(name);
} }
}); });
tiddlerFields["revision"] = state.wiki.getChangeCount(title); tiddlerFields.revision = state.wiki.getChangeCount(title);
tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki"; tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki";
tiddlers.push(tiddlerFields); tiddlers.push(tiddlerFields);
}); });
@ -265,7 +265,7 @@ var Command = function(params,commander,callback) {
tiddlerFields.fields[name] = value; tiddlerFields.fields[name] = value;
} }
}); });
tiddlerFields["revision"] = state.wiki.getChangeCount(title); tiddlerFields.revision = state.wiki.getChangeCount(title);
tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki"; tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki";
response.writeHead(200, {"Content-Type": "application/json"}); response.writeHead(200, {"Content-Type": "application/json"});
response.end(JSON.stringify(tiddlerFields),"utf8"); response.end(JSON.stringify(tiddlerFields),"utf8");

View File

@ -109,7 +109,7 @@ exports["text/html"] = function(text,fields) {
if(sysMatch) { if(sysMatch) {
results.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields)); results.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));
} }
return results return results;
} else { } else {
// Check whether we've got an encrypted file // Check whether we've got an encrypted file
var encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text); var encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);

View File

@ -20,7 +20,7 @@ function getIsFilterOperators() {
$tw.modules.applyMethods("isfilteroperator",isFilterOperators); $tw.modules.applyMethods("isfilteroperator",isFilterOperators);
} }
return isFilterOperators; return isFilterOperators;
}; }
/* /*
Export our filter function Export our filter function

View File

@ -18,12 +18,12 @@ Export our filter function
exports.plugintiddlers = function(source,operator,options) { exports.plugintiddlers = function(source,operator,options) {
var results = []; var results = [];
source(function(tiddler,title) { source(function(tiddler,title) {
var pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerData(title,{tiddlers:[]}); var pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerData(title,{tiddlers:[]});
if(pluginInfo) { if(pluginInfo) {
$tw.utils.each(pluginInfo.tiddlers,function(fields,title) { $tw.utils.each(pluginInfo.tiddlers,function(fields,title) {
results.push(title); results.push(title);
}); });
} }
}); });
results.sort(); results.sort();
return results; return results;

View File

@ -19,9 +19,9 @@ exports.shadowsource = function(source,operator,options) {
var results = []; var results = [];
source(function(tiddler,title) { source(function(tiddler,title) {
var source = options.wiki.getShadowSource(title); var source = options.wiki.getShadowSource(title);
if(source) { if(source) {
$tw.utils.pushTop(results,source); $tw.utils.pushTop(results,source);
} }
}); });
results.sort(); results.sort();
return results; return results;

View File

@ -45,6 +45,6 @@ var prepare_results = function (source) {
results.push(title); results.push(title);
}); });
return results; return results;
} };
})(); })();

View File

@ -13,7 +13,7 @@ Initialise basic platform $:/info/ tiddlers
"use strict"; "use strict";
exports.getInfoTiddlerFields = function() { exports.getInfoTiddlerFields = function() {
var mapBoolean = function(value) {return value ? "yes" : "no"}, var mapBoolean = function(value) {return value ? "yes" : "no";},
infoTiddlerFields = []; infoTiddlerFields = [];
// Basics // Basics
infoTiddlerFields.push({title: "$:/info/browser", text: mapBoolean(!!$tw.browser)}); infoTiddlerFields.push({title: "$:/info/browser", text: mapBoolean(!!$tw.browser)});

View File

@ -23,8 +23,8 @@ exports.types = {block: true};
exports.init = function(parser) { exports.init = function(parser) {
this.parser = parser; this.parser = parser;
this.matchRegExp = /\<!--/mg; this.matchRegExp = /<!--/mg;
this.endMatchRegExp = /--\>/mg; this.endMatchRegExp = /-->/mg;
}; };
exports.findNextMatch = function(startPos) { exports.findNextMatch = function(startPos) {

View File

@ -23,8 +23,8 @@ exports.types = {inline: true};
exports.init = function(parser) { exports.init = function(parser) {
this.parser = parser; this.parser = parser;
this.matchRegExp = /\<!--/mg; this.matchRegExp = /<!--/mg;
this.endMatchRegExp = /--\>/mg; this.endMatchRegExp = /-->/mg;
}; };
exports.findNextMatch = function(startPos) { exports.findNextMatch = function(startPos) {

View File

@ -56,7 +56,7 @@ exports.parse = function() {
node.attributes.style = {type: "string", value: style}; node.attributes.style = {type: "string", value: style};
} }
if(classes) { if(classes) {
node.attributes["itemClass"] = {type: "string", value: classes.split(".").join(" ")}; node.attributes.itemClass = {type: "string", value: classes.split(".").join(" ")};
} }
return [node]; return [node];
}; };

View File

@ -55,7 +55,7 @@ exports.parse = function() {
node.attributes.style = {type: "string", value: style}; node.attributes.style = {type: "string", value: style};
} }
if(classes) { if(classes) {
node.attributes["itemClass"] = {type: "string", value: classes.split(".").join(" ")}; node.attributes.itemClass = {type: "string", value: classes.split(".").join(" ")};
} }
return [node]; return [node];
}; };

View File

@ -34,7 +34,8 @@ exports.init = function(parser) {
exports.parse = function() { exports.parse = function() {
var reEnd = /(""")|(\r?\n)/mg, var reEnd = /(""")|(\r?\n)/mg,
tree = []; tree = [],
match;
// Move past the match // Move past the match
this.parser.pos = this.matchRegExp.lastIndex; this.parser.pos = this.matchRegExp.lastIndex;
do { do {
@ -42,7 +43,7 @@ exports.parse = function() {
tree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false})); tree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));
// Redo the terminator match // Redo the terminator match
reEnd.lastIndex = this.parser.pos; reEnd.lastIndex = this.parser.pos;
var match = reEnd.exec(this.parser.source); match = reEnd.exec(this.parser.source);
if(match) { if(match) {
this.parser.pos = reEnd.lastIndex; this.parser.pos = reEnd.lastIndex;
// Add a line break if the terminator was a line break // Add a line break if the terminator was a line break

View File

@ -55,7 +55,6 @@ exports.parse = function() {
classes.push.apply(classes, this.parser.parseClasses()); classes.push.apply(classes, this.parser.parseClasses());
this.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true}); this.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});
var cite = this.parser.parseInlineRun(/(\r?\n)/mg); var cite = this.parser.parseInlineRun(/(\r?\n)/mg);
// before handling the cite, parse the body of the quote // before handling the cite, parse the body of the quote
var tree= this.parser.parseBlocks(reEndString); var tree= this.parser.parseBlocks(reEndString);
// If we got a cite, put it before the text // If we got a cite, put it before the text
@ -66,10 +65,9 @@ exports.parse = function() {
children: cite children: cite
}); });
} }
// Parse any optional cite // Parse any optional cite
this.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true}); this.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});
var cite = this.parser.parseInlineRun(/(\r?\n)/mg); cite = this.parser.parseInlineRun(/(\r?\n)/mg);
// If we got a cite, push it // If we got a cite, push it
if(cite.length > 0) { if(cite.length > 0) {
tree.push({ tree.push({
@ -78,7 +76,6 @@ exports.parse = function() {
children: cite children: cite
}); });
} }
// Return the blockquote element // Return the blockquote element
return [{ return [{
type: "element", type: "element",

View File

@ -27,7 +27,8 @@ var processRow = function(prevColumns) {
tree = [], tree = [],
col = 0, col = 0,
colSpanCount = 1, colSpanCount = 1,
prevCell; prevCell,
vAlign;
// Match a single cell // Match a single cell
cellRegExp.lastIndex = this.parser.pos; cellRegExp.lastIndex = this.parser.pos;
var cellMatch = cellRegExp.exec(this.parser.source); var cellMatch = cellRegExp.exec(this.parser.source);
@ -38,7 +39,7 @@ var processRow = function(prevColumns) {
if(last) { if(last) {
last.rowSpanCount++; last.rowSpanCount++;
$tw.utils.addAttributeToParseTreeNode(last.element,"rowspan",last.rowSpanCount); $tw.utils.addAttributeToParseTreeNode(last.element,"rowspan",last.rowSpanCount);
var vAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,"valign","center"); vAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,"valign","center");
$tw.utils.addAttributeToParseTreeNode(last.element,"valign",vAlign); $tw.utils.addAttributeToParseTreeNode(last.element,"valign",vAlign);
if(colSpanCount > 1) { if(colSpanCount > 1) {
$tw.utils.addAttributeToParseTreeNode(last.element,"colspan",colSpanCount); $tw.utils.addAttributeToParseTreeNode(last.element,"colspan",colSpanCount);
@ -74,8 +75,8 @@ var processRow = function(prevColumns) {
// For ordinary cells, step beyond the opening `|` // For ordinary cells, step beyond the opening `|`
this.parser.pos++; this.parser.pos++;
// Look for a space at the start of the cell // Look for a space at the start of the cell
var spaceLeft = false, var spaceLeft = false;
vAlign = null; vAlign = null;
if(this.parser.source.substr(this.parser.pos).search(/^\^([^\^]|\^\^)/) === 0) { if(this.parser.source.substr(this.parser.pos).search(/^\^([^\^]|\^\^)/) === 0) {
vAlign = "top"; vAlign = "top";
} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) { } else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {

View File

@ -41,19 +41,20 @@ exports.parse = function() {
isBlock: true isBlock: true
}; };
// Prepare the tiddler widget // Prepare the tiddler widget
var tr, targetTitle, targetField, targetIndex, tiddlerNode;
if(textRef) { if(textRef) {
var tr = $tw.utils.parseTextReference(textRef), tr = $tw.utils.parseTextReference(textRef);
targetTitle = tr.title, targetTitle = tr.title;
targetField = tr.field, targetField = tr.field;
targetIndex = tr.index, targetIndex = tr.index;
tiddlerNode = { tiddlerNode = {
type: "tiddler", type: "tiddler",
attributes: { attributes: {
tiddler: {type: "string", value: targetTitle} tiddler: {type: "string", value: targetTitle}
}, },
isBlock: true, isBlock: true,
children: [transcludeNode] children: [transcludeNode]
}; };
} }
if(template) { if(template) {
transcludeNode.attributes.tiddler = {type: "string", value: template}; transcludeNode.attributes.tiddler = {type: "string", value: template};

View File

@ -38,18 +38,19 @@ exports.parse = function() {
attributes: {} attributes: {}
}; };
// Prepare the tiddler widget // Prepare the tiddler widget
var tr, targetTitle, targetField, targetIndex, tiddlerNode;
if(textRef) { if(textRef) {
var tr = $tw.utils.parseTextReference(textRef), tr = $tw.utils.parseTextReference(textRef);
targetTitle = tr.title, targetTitle = tr.title;
targetField = tr.field, targetField = tr.field;
targetIndex = tr.index, targetIndex = tr.index;
tiddlerNode = { tiddlerNode = {
type: "tiddler", type: "tiddler",
attributes: { attributes: {
tiddler: {type: "string", value: targetTitle} tiddler: {type: "string", value: targetTitle}
}, },
children: [transcludeNode] children: [transcludeNode]
}; };
} }
if(template) { if(template) {
transcludeNode.attributes.tiddler = {type: "string", value: template}; transcludeNode.attributes.tiddler = {type: "string", value: template};

View File

@ -68,7 +68,7 @@ exports.parse = function() {
var widgetNode = this.parser.wiki.makeWidget(parser), var widgetNode = this.parser.wiki.makeWidget(parser),
container = $tw.fakeDocument.createElement("div"); container = $tw.fakeDocument.createElement("div");
widgetNode.render(container,null); widgetNode.render(container,null);
var text = renderType === "text/html" ? container.innerHTML : container.textContent; text = renderType === "text/html" ? container.innerHTML : container.textContent;
return [{ return [{
type: "element", type: "element",
tag: "pre", tag: "pre",

View File

@ -27,7 +27,7 @@ var textPrimitives = {
upperLetter: "[A-Z\u00c0-\u00d6\u00d8-\u00de\u0150\u0170]", upperLetter: "[A-Z\u00c0-\u00d6\u00d8-\u00de\u0150\u0170]",
lowerLetter: "[a-z0-9\u00df-\u00f6\u00f8-\u00ff\u0151\u0171]", lowerLetter: "[a-z0-9\u00df-\u00f6\u00f8-\u00ff\u0151\u0171]",
anyLetter: "[A-Za-z0-9\u00c0-\u00d6\u00d8-\u00de\u00df-\u00f6\u00f8-\u00ff\u0150\u0170\u0151\u0171]", anyLetter: "[A-Za-z0-9\u00c0-\u00d6\u00d8-\u00de\u00df-\u00f6\u00f8-\u00ff\u0150\u0170\u0151\u0171]",
blockPrefixLetters: "[A-Za-z0-9\-_\u00c0-\u00d6\u00d8-\u00de\u00df-\u00f6\u00f8-\u00ff\u0150\u0170\u0151\u0171]" blockPrefixLetters: "[A-Za-z0-9-_\u00c0-\u00d6\u00d8-\u00de\u00df-\u00f6\u00f8-\u00ff\u0150\u0170\u0151\u0171]"
}; };
textPrimitives.unWikiLink = "~"; textPrimitives.unWikiLink = "~";

View File

@ -100,7 +100,7 @@ Get the next match out of an array of parse rule instances
*/ */
WikiParser.prototype.findNextMatch = function(rules,startPos) { WikiParser.prototype.findNextMatch = function(rules,startPos) {
// Find the best matching rule by finding the closest match position // Find the best matching rule by finding the closest match position
var matchingRule = undefined, var matchingRule,
matchingRulePos = this.sourceLength; matchingRulePos = this.sourceLength;
// Step through each rule // Step through each rule
for(var t=0; t<rules.length; t++) { for(var t=0; t<rules.length; t++) {
@ -308,7 +308,7 @@ WikiParser.prototype.parseClasses = function() {
while(match && match.index === this.pos) { while(match && match.index === this.pos) {
this.pos = match.index + match[0].length; this.pos = match.index + match[0].length;
classNames.push(match[1]); classNames.push(match[1]);
var match = classRegExp.exec(this.source); match = classRegExp.exec(this.source);
} }
return classNames; return classNames;
}; };
@ -345,7 +345,7 @@ WikiParser.prototype.amendRules = function(type,names) {
processRuleArray(this.pragmaRules); processRuleArray(this.pragmaRules);
processRuleArray(this.blockRules); processRuleArray(this.blockRules);
processRuleArray(this.inlineRules); processRuleArray(this.inlineRules);
} };
exports["text/vnd.tiddlywiki"] = WikiParser; exports["text/vnd.tiddlywiki"] = WikiParser;

View File

@ -74,7 +74,7 @@ function SaverHandler(options) {
}); });
// Set up our beforeunload handler // Set up our beforeunload handler
window.addEventListener("beforeunload",function(event) { window.addEventListener("beforeunload",function(event) {
var confirmationMessage = undefined; var confirmationMessage;
if(self.isDirty()) { if(self.isDirty()) {
confirmationMessage = $tw.language.getString("UnsavedChangesWarning"); confirmationMessage = $tw.language.getString("UnsavedChangesWarning");
event.returnValue = confirmationMessage; // Gecko event.returnValue = confirmationMessage; // Gecko

View File

@ -32,7 +32,7 @@ AndTidWiki.prototype.save = function(text,method,callback) {
pathname = pathname.substr(0,p); pathname = pathname.substr(0,p);
} }
// Save the file // Save the file
window.twi.saveFile(pathname,text) window.twi.saveFile(pathname,text);
// Call the callback // Call the callback
callback(null); callback(null);
return true; return true;

View File

@ -21,7 +21,7 @@ TiddlyFoxSaver.prototype.save = function(text,method,callback) {
// Get the pathname of this document // Get the pathname of this document
var pathname = document.location.toString().split("#")[0]; var pathname = document.location.toString().split("#")[0];
// Replace file://localhost/ with file:/// // Replace file://localhost/ with file:///
if(pathname.indexOf("file://localhost/") == 0) { if(pathname.indexOf("file://localhost/") === 0) {
pathname = "file://" + pathname.substr(16); pathname = "file://" + pathname.substr(16);
} }
// Windows path file:///x:/blah/blah --> x:\blah\blah // Windows path file:///x:/blah/blah --> x:\blah\blah
@ -32,10 +32,10 @@ TiddlyFoxSaver.prototype.save = function(text,method,callback) {
} else if(pathname.indexOf("file://///") === 0) { } else if(pathname.indexOf("file://///") === 0) {
pathname = "\\\\" + unescape(pathname.substr(10)).replace(/\//g,"\\"); pathname = "\\\\" + unescape(pathname.substr(10)).replace(/\//g,"\\");
// Mac/Unix local path file:///path/path --> /path/path // Mac/Unix local path file:///path/path --> /path/path
} else if(pathname.indexOf("file:///") == 0) { } else if(pathname.indexOf("file:///") === 0) {
pathname = unescape(pathname.substr(7)); pathname = unescape(pathname.substr(7));
// Mac/Unix local path file:/path/path --> /path/path // Mac/Unix local path file:/path/path --> /path/path
} else if(pathname.indexOf("file:/") == 0) { } else if(pathname.indexOf("file:/") === 0) {
pathname = unescape(pathname.substr(5)); pathname = unescape(pathname.substr(5));
// Otherwise Windows networth path file://server/share/path/path --> \\server\share\path\path // Otherwise Windows networth path file://server/share/path/path --> \\server\share\path\path
} else { } else {

View File

@ -38,25 +38,25 @@ TWEditSaver.prototype.save = function(text,method,callback) {
} }
// Error handler // Error handler
var errorHandler = function(event) { var errorHandler = function(event) {
// Error // Error
callback("Error saving to TWEdit: " + event.target.error.code); callback("Error saving to TWEdit: " + event.target.error.code);
}; };
// Get the file system // Get the file system
window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) { window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {
// Now we've got the filesystem, get the fileEntry // Now we've got the filesystem, get the fileEntry
fileSystem.root.getFile(pathname, {create: true}, function(fileEntry) { fileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {
// Now we've got the fileEntry, create the writer // Now we've got the fileEntry, create the writer
fileEntry.createWriter(function(writer) { fileEntry.createWriter(function(writer) {
writer.onerror = errorHandler; writer.onerror = errorHandler;
writer.onwrite = function() { writer.onwrite = function() {
callback(null); callback(null);
}; };
writer.position = 0; writer.position = 0;
writer.write(text); writer.write(text);
},errorHandler); },errorHandler);
}, errorHandler); }, errorHandler);
}, errorHandler); }, errorHandler);
return true; return true;
}; };
/* /*

View File

@ -38,6 +38,6 @@ function setFavicon() {
var faviconLink = document.getElementById("faviconLink"); var faviconLink = document.getElementById("faviconLink");
faviconLink.setAttribute("href","data:" + tiddler.fields.type + ";base64," + tiddler.fields.text); faviconLink.setAttribute("href","data:" + tiddler.fields.type + ";base64," + tiddler.fields.text);
} }
}; }
})(); })();

View File

@ -19,7 +19,7 @@ exports.after = ["story"];
exports.synchronous = true; exports.synchronous = true;
// Default story and history lists // Default story and history lists
var PAGE_TITLE_TITLE = "$:/core/wiki/title" var PAGE_TITLE_TITLE = "$:/core/wiki/title";
var PAGE_STYLESHEET_TITLE = "$:/core/ui/PageStylesheet"; var PAGE_STYLESHEET_TITLE = "$:/core/ui/PageStylesheet";
var PAGE_TEMPLATE_TITLE = "$:/core/ui/PageTemplate"; var PAGE_TEMPLATE_TITLE = "$:/core/ui/PageTemplate";

View File

@ -48,7 +48,7 @@ exports.startup = function() {
$tw.locationHash = hash; $tw.locationHash = hash;
openStartupTiddlers({defaultToCurrentStory: true}); openStartupTiddlers({defaultToCurrentStory: true});
} }
},false) },false);
// Listen for the tm-browser-refresh message // Listen for the tm-browser-refresh message
$tw.rootWidget.addEventListener("tm-browser-refresh",function(event) { $tw.rootWidget.addEventListener("tm-browser-refresh",function(event) {
window.location.reload(true); window.location.reload(true);
@ -157,7 +157,7 @@ function updateLocationHash(options) {
} }
// Assemble the location hash // Assemble the location hash
if(options.updateAddressBar === "permalink") { if(options.updateAddressBar === "permalink") {
$tw.locationHash = "#" + encodeURIComponent(targetTiddler) $tw.locationHash = "#" + encodeURIComponent(targetTiddler);
} else { } else {
$tw.locationHash = "#" + encodeURIComponent(targetTiddler) + ":" + encodeURIComponent($tw.utils.stringifyList(storyList)); $tw.locationHash = "#" + encodeURIComponent(targetTiddler) + ":" + encodeURIComponent($tw.utils.stringifyList(storyList));
} }

View File

@ -16,7 +16,7 @@ var easing = "cubic-bezier(0.645, 0.045, 0.355, 1)"; // From http://easings.net/
var ClassicStoryView = function(listWidget) { var ClassicStoryView = function(listWidget) {
this.listWidget = listWidget; this.listWidget = listWidget;
} };
ClassicStoryView.prototype.navigateTo = function(historyInfo) { ClassicStoryView.prototype.navigateTo = function(historyInfo) {
var listElementIndex = this.listWidget.findListItem(0,historyInfo.title); var listElementIndex = this.listWidget.findListItem(0,historyInfo.title);

View File

@ -14,7 +14,7 @@ Animates list insertions and removals
var PopStoryView = function(listWidget) { var PopStoryView = function(listWidget) {
this.listWidget = listWidget; this.listWidget = listWidget;
} };
PopStoryView.prototype.navigateTo = function(historyInfo) { PopStoryView.prototype.navigateTo = function(historyInfo) {
var listElementIndex = this.listWidget.findListItem(0,historyInfo.title); var listElementIndex = this.listWidget.findListItem(0,historyInfo.title);

View File

@ -86,7 +86,7 @@ ZoominListView.prototype.navigateTo = function(historyInfo) {
]); ]);
// Transform the previous tiddler out of the way and then hide it // Transform the previous tiddler out of the way and then hide it
if(prevCurrentTiddler && prevCurrentTiddler !== targetElement) { if(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {
var scale = zoomBounds.width / sourceBounds.width; scale = zoomBounds.width / sourceBounds.width;
x = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale; x = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;
y = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale; y = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;
$tw.utils.setStyle(prevCurrentTiddler,[ $tw.utils.setStyle(prevCurrentTiddler,[

View File

@ -20,7 +20,7 @@ wiki: wiki to be synced
function Syncer(options) { function Syncer(options) {
var self = this; var self = this;
this.wiki = options.wiki; this.wiki = options.wiki;
this.syncadaptor = options.syncadaptor this.syncadaptor = options.syncadaptor;
// Make a logger // Make a logger
this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "")); this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : ""));
// Compile the dirty tiddler filter // Compile the dirty tiddler filter
@ -40,7 +40,7 @@ function Syncer(options) {
if($tw.browser) { if($tw.browser) {
// Set up our beforeunload handler // Set up our beforeunload handler
window.addEventListener("beforeunload",function(event) { window.addEventListener("beforeunload",function(event) {
var confirmationMessage = undefined; var confirmationMessage;
if(self.isDirty()) { if(self.isDirty()) {
confirmationMessage = $tw.language.getString("UnsavedChangesWarning"); confirmationMessage = $tw.language.getString("UnsavedChangesWarning");
event.returnValue = confirmationMessage; // Gecko event.returnValue = confirmationMessage; // Gecko
@ -94,10 +94,10 @@ Syncer.prototype.readTiddlerInfo = function() {
$tw.utils.each(tiddlers,function(title) { $tw.utils.each(tiddlers,function(title) {
var tiddler = self.wiki.getTiddler(title); var tiddler = self.wiki.getTiddler(title);
self.tiddlerInfo[title] = { self.tiddlerInfo[title] = {
revision: tiddler.fields["revision"], revision: tiddler.fields.revision,
adaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler), adaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),
changeCount: self.wiki.getChangeCount(title) changeCount: self.wiki.getChangeCount(title)
} };
}); });
}; };
@ -329,7 +329,7 @@ Syncer.prototype.enqueueSyncTask = function(task) {
revision: null, revision: null,
adaptorInfo: {}, adaptorInfo: {},
changeCount: -1 changeCount: -1
} };
} }
// Bail if this is a save and the tiddler is already at the changeCount that the server has // Bail if this is a save and the tiddler is already at the changeCount that the server has
if(task.type === "save" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) { if(task.type === "save" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) {

View File

@ -36,10 +36,10 @@ exports.upgrade = function(wiki,titles,tiddlers) {
$tw.utils.each(titles,function(title) { $tw.utils.each(titles,function(title) {
var incomingTiddler = tiddlers[title]; var incomingTiddler = tiddlers[title];
// Check if we're dealing with a plugin // Check if we're dealing with a plugin
if(incomingTiddler && incomingTiddler["plugin-type"] && incomingTiddler["version"]) { if(incomingTiddler && incomingTiddler["plugin-type"] && incomingTiddler.version) {
// Upgrade the incoming plugin if we've got a newer version in the upgrade library // Upgrade the incoming plugin if we've got a newer version in the upgrade library
var libraryTiddler = getLibraryTiddler(title); var libraryTiddler = getLibraryTiddler(title);
if(libraryTiddler && libraryTiddler["plugin-type"] && libraryTiddler["version"]) { if(libraryTiddler && libraryTiddler["plugin-type"] && libraryTiddler.version) {
if($tw.utils.checkVersions(libraryTiddler.version,incomingTiddler.version)) { if($tw.utils.checkVersions(libraryTiddler.version,incomingTiddler.version)) {
tiddlers[title] = libraryTiddler; tiddlers[title] = libraryTiddler;
messages[title] = $tw.language.getString("Import/Upgrader/Plugins/Upgraded",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}}); messages[title] = $tw.language.getString("Import/Upgrader/Plugins/Upgraded",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});

View File

@ -51,10 +51,10 @@ exports.upgrade = function(wiki,titles,tiddlers) {
tiddlers[mappedTitle] = { tiddlers[mappedTitle] = {
title: mappedTitle, title: mappedTitle,
text: tiddlerData[index] text: tiddlerData[index]
} };
messages[mappedTitle] = $tw.language.getString("Import/Upgrader/ThemeTweaks/Created",{variables: { messages[mappedTitle] = $tw.language.getString("Import/Upgrader/ThemeTweaks/Created",{variables: {
from: title + "##" + index from: title + "##" + index
}}) }});
} }
} }
} }

View File

@ -93,7 +93,7 @@ Modal.prototype.display = function(title,options) {
}); });
// Setup the link if present // Setup the link if present
if(options.downloadLink) { if(options.downloadLink) {
modalLink.href = options.downloadLink modalLink.href = options.downloadLink;
modalLink.appendChild(document.createTextNode("Right-click to save changes")); modalLink.appendChild(document.createTextNode("Right-click to save changes"));
modalBody.appendChild(modalLink); modalBody.appendChild(modalLink);
} }

View File

@ -19,7 +19,7 @@ var bumpSequenceNumber = function(object) {
if(sequenceNumber !== null) { if(sequenceNumber !== null) {
object.sequenceNumber = sequenceNumber++; object.sequenceNumber = sequenceNumber++;
} }
} };
var TW_TextNode = function(text) { var TW_TextNode = function(text) {
bumpSequenceNumber(this); bumpSequenceNumber(this);
@ -79,7 +79,7 @@ TW_Element.prototype.insertBefore = function(node,nextSibling) {
} else { } else {
this.appendChild(node); this.appendChild(node);
} }
} };
TW_Element.prototype.removeChild = function(node) { TW_Element.prototype.removeChild = function(node) {
var p = this.children.indexOf(node); var p = this.children.indexOf(node);
@ -93,9 +93,9 @@ TW_Element.prototype.hasChildNodes = function() {
}; };
Object.defineProperty(TW_Element.prototype, "firstChild", { Object.defineProperty(TW_Element.prototype, "firstChild", {
get: function() { get: function() {
return this.children[0]; return this.children[0];
} }
}); });
TW_Element.prototype.addEventListener = function(type,listener,useCapture) { TW_Element.prototype.addEventListener = function(type,listener,useCapture) {
@ -106,22 +106,22 @@ Object.defineProperty(TW_Element.prototype, "className", {
get: function() { get: function() {
return this.attributes["class"] || ""; return this.attributes["class"] || "";
}, },
set: function(value) { set: function(value) {
this.attributes["class"] = value; this.attributes["class"] = value;
} }
}); });
Object.defineProperty(TW_Element.prototype, "value", { Object.defineProperty(TW_Element.prototype, "value", {
get: function() { get: function() {
return this.attributes["value"] || ""; return this.attributes.value || "";
}, },
set: function(value) { set: function(value) {
this.attributes["value"] = value; this.attributes.value = value;
} }
}); });
Object.defineProperty(TW_Element.prototype, "outerHTML", { Object.defineProperty(TW_Element.prototype, "outerHTML", {
get: function() { get: function() {
var output = [],attr,a,v; var output = [],attr,a,v;
output.push("<",this.tag); output.push("<",this.tag);
if(this.attributes) { if(this.attributes) {
@ -143,7 +143,7 @@ Object.defineProperty(TW_Element.prototype, "outerHTML", {
output.push("</",this.tag,">"); output.push("</",this.tag,">");
} }
return output.join(""); return output.join("");
} }
}); });
Object.defineProperty(TW_Element.prototype, "innerHTML", { Object.defineProperty(TW_Element.prototype, "innerHTML", {
@ -162,10 +162,10 @@ Object.defineProperty(TW_Element.prototype, "innerHTML", {
return b.join(""); return b.join("");
} }
}, },
set: function(value) { set: function(value) {
this.isRaw = true; this.isRaw = true;
this.rawHTML = value; this.rawHTML = value;
} }
}); });
Object.defineProperty(TW_Element.prototype, "textContent", { Object.defineProperty(TW_Element.prototype, "textContent", {
@ -193,7 +193,7 @@ Object.defineProperty(TW_Element.prototype, "formattedTextContent", {
b.push("\n"); b.push("\n");
} }
if(this.tag === "li") { if(this.tag === "li") {
b.push("* ") b.push("* ");
} }
$tw.utils.each(this.children,function(node) { $tw.utils.each(this.children,function(node) {
b.push(node.formattedTextContent); b.push(node.formattedTextContent);

View File

@ -41,7 +41,7 @@ exports.copyDirectory = function(srcPath,dstPath) {
if(err) { if(err) {
return err; return err;
} }
}; }
} }
}; };
copy(srcPath,dstPath); copy(srcPath,dstPath);
@ -70,7 +70,7 @@ exports.copyFile = function(srcPath,dstPath) {
fs.closeSync(srcFile); fs.closeSync(srcFile);
fs.closeSync(dstFile); fs.closeSync(dstFile);
return null; return null;
} };
/* /*
Remove trailing path separator Remove trailing path separator

View File

@ -41,9 +41,9 @@ exports.addClassToParseTreeNode = function(node,classString) {
exports.addStyleToParseTreeNode = function(node,name,value) { exports.addStyleToParseTreeNode = function(node,name,value) {
node.attributes = node.attributes || {}; node.attributes = node.attributes || {};
node.attributes["style"] = node.attributes["style"] || {type: "string", value: ""}; node.attributes.style = node.attributes.style || {type: "string", value: ""};
if(node.attributes["style"].type === "string") { if(node.attributes.style.type === "string") {
node.attributes["style"].value += name + ":" + value + ";"; node.attributes.style.value += name + ":" + value + ";";
} }
}; };

View File

@ -24,15 +24,16 @@ exports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {
throw "No such tiddler as " + title; throw "No such tiddler as " + title;
} }
// Extract the JSON // Extract the JSON
var jsonPluginTiddler;
try { try {
var jsonPluginTiddler = JSON.parse(pluginTiddler.fields.text); jsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);
} catch(e) { } catch(e) {
throw "Cannot parse plugin tiddler " + title + "\nError: " + e; throw "Cannot parse plugin tiddler " + title + "\nError: " + e;
} }
// Get the list of tiddlers // Get the list of tiddlers
var tiddlers = Object.keys(jsonPluginTiddler.tiddlers); var tiddlers = Object.keys(jsonPluginTiddler.tiddlers);
// Add the additional tiddlers // Add the additional tiddlers
$tw.utils.pushTop(tiddlers,additionalTiddlers) $tw.utils.pushTop(tiddlers,additionalTiddlers);
// Remove any excluded tiddlers // Remove any excluded tiddlers
for(var t=tiddlers.length-1; t>=0; t--) { for(var t=tiddlers.length-1; t>=0; t--) {
if(excludeTiddlers.indexOf(tiddlers[t]) !== -1) { if(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {
@ -75,6 +76,6 @@ exports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {
$tw.rootWidget.dispatchEvent({type: "tw-auto-save-wiki"}); $tw.rootWidget.dispatchEvent({type: "tw-auto-save-wiki"});
// Return a heartwarming confirmation // Return a heartwarming confirmation
return "Plugin " + title + " successfully saved"; return "Plugin " + title + " successfully saved";
} };
})(); })();

View File

@ -126,7 +126,7 @@ DropZoneWidget.prototype.importData = function(dataTransfer) {
return; return;
} }
} }
}; }
}; };
DropZoneWidget.prototype.importDataTypes = [ DropZoneWidget.prototype.importDataTypes = [

View File

@ -120,7 +120,7 @@ EditBitmapWidget.prototype.loadCanvas = function() {
self.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT); self.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);
// Set the width and height input boxes // Set the width and height input boxes
self.updateSize(); self.updateSize();
} };
// Get the current bitmap into an image object // Get the current bitmap into an image object
currImage.src = "data:" + tiddler.fields.type + ";base64," + tiddler.fields.text; currImage.src = "data:" + tiddler.fields.type + ";base64," + tiddler.fields.text;
}; };
@ -135,7 +135,7 @@ EditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {
ctx.fillStyle = "#fff"; ctx.fillStyle = "#fff";
ctx.fillRect(0,0,canvas.width,canvas.height); ctx.fillRect(0,0,canvas.width,canvas.height);
} }
} };
/* /*
** Update the input boxes with the actual size of the canvas ** Update the input boxes with the actual size of the canvas

View File

@ -78,7 +78,7 @@ FieldsWidget.prototype.execute = function() {
row = row.replace("$name$",fieldName); row = row.replace("$name$",fieldName);
row = row.replace("$value$",value); row = row.replace("$value$",value);
row = row.replace("$encoded_value$",$tw.utils.htmlEncode(value)); row = row.replace("$encoded_value$",$tw.utils.htmlEncode(value));
text.push(row) text.push(row);
} }
} }
} }

View File

@ -35,7 +35,7 @@ LinkWidget.prototype.render = function(parent,nextSibling) {
this.execute(); this.execute();
// Get the value of the tv-wikilinks configuration macro // Get the value of the tv-wikilinks configuration macro
var wikiLinksMacro = this.getVariable("tv-wikilinks"), var wikiLinksMacro = this.getVariable("tv-wikilinks"),
useWikiLinks = wikiLinksMacro ? !(wikiLinksMacro.trim() === "no") : true; useWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== "no") : true;
// Render the link if required // Render the link if required
if(useWikiLinks) { if(useWikiLinks) {
this.renderLink(parent,nextSibling); this.renderLink(parent,nextSibling);

View File

@ -44,7 +44,7 @@ ListWidget.prototype.render = function(parent,nextSibling) {
// Construct the storyview // Construct the storyview
var StoryView = this.storyViews[this.storyViewName]; var StoryView = this.storyViews[this.storyViewName];
if(StoryView && !this.document.isTiddlyWikiFakeDom) { if(StoryView && !this.document.isTiddlyWikiFakeDom) {
this.storyview = new StoryView(this) this.storyview = new StoryView(this);
} else { } else {
this.storyview = null; this.storyview = null;
} }

View File

@ -283,9 +283,10 @@ NavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {
Generate a title for the draft of a given tiddler Generate a title for the draft of a given tiddler
*/ */
NavigatorWidget.prototype.generateDraftTitle = function(title) { NavigatorWidget.prototype.generateDraftTitle = function(title) {
var c = 0; var c = 0,
draftTitle;
do { do {
var draftTitle = "Draft " + (c ? (c + 1) + " " : "") + "of '" + title + "'"; draftTitle = "Draft " + (c ? (c + 1) + " " : "") + "of '" + title + "'";
c++; c++;
} while(this.wiki.tiddlerExists(draftTitle)); } while(this.wiki.tiddlerExists(draftTitle));
return draftTitle; return draftTitle;

View File

@ -41,7 +41,7 @@ RevealWidget.prototype.render = function(parent,nextSibling) {
$tw.utils.addClass(domNode,"tc-popup"); // Make sure that clicks don't dismiss popups within the revealed content $tw.utils.addClass(domNode,"tc-popup"); // Make sure that clicks don't dismiss popups within the revealed content
} }
if(!this.isOpen) { if(!this.isOpen) {
domNode.setAttribute("hidden","true") domNode.setAttribute("hidden","true");
} }
this.domNodes.push(domNode); this.domNodes.push(domNode);
}; };

View File

@ -44,7 +44,7 @@ TiddlerWidget.prototype.execute = function() {
this.setVariable("missingTiddlerClass",(this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? "tc-tiddler-exists" : "tc-tiddler-missing"); this.setVariable("missingTiddlerClass",(this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? "tc-tiddler-exists" : "tc-tiddler-missing");
this.setVariable("shadowTiddlerClass",this.wiki.isShadowTiddler(this.tiddlerTitle) ? "tc-tiddler-shadow" : ""); this.setVariable("shadowTiddlerClass",this.wiki.isShadowTiddler(this.tiddlerTitle) ? "tc-tiddler-shadow" : "");
this.setVariable("systemTiddlerClass",this.wiki.isSystemTiddler(this.tiddlerTitle) ? "tc-tiddler-system" : ""); this.setVariable("systemTiddlerClass",this.wiki.isSystemTiddler(this.tiddlerTitle) ? "tc-tiddler-system" : "");
this.setVariable("tiddlerTagClasses",this.getTagClasses()) this.setVariable("tiddlerTagClasses",this.getTagClasses());
// Construct the child widgets // Construct the child widgets
this.makeChildWidgets(); this.makeChildWidgets();
}; };

View File

@ -171,7 +171,7 @@ Widget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue)
else for(var i=0; i<actualParams.length; ++i) { else for(var i=0; i<actualParams.length; ++i) {
args.push(actualParams[i].value); args.push(actualParams[i].value);
} }
return macro.run.apply(this,args) return macro.run.apply(this,args);
} else { } else {
return defaultValue; return defaultValue;
} }
@ -289,7 +289,7 @@ Construct the widget object for a parse tree node
Widget.prototype.makeChildWidget = function(parseTreeNode) { Widget.prototype.makeChildWidget = function(parseTreeNode) {
var WidgetClass = this.widgetClasses[parseTreeNode.type]; var WidgetClass = this.widgetClasses[parseTreeNode.type];
if(!WidgetClass) { if(!WidgetClass) {
WidgetClass = this.widgetClasses["text"]; WidgetClass = this.widgetClasses.text;
parseTreeNode = {type: "text", text: "Undefined widget '" + parseTreeNode.type + "'"}; parseTreeNode = {type: "text", text: "Undefined widget '" + parseTreeNode.type + "'"};
} }
return new WidgetClass(parseTreeNode,{ return new WidgetClass(parseTreeNode,{
@ -357,8 +357,7 @@ Widget.prototype.addEventListener = function(type,handler) {
} else { // The handler is a function } else { // The handler is a function
this.eventListeners[type] = function(event) { this.eventListeners[type] = function(event) {
return handler.call(self,event); return handler.call(self,event);
} };
} }
}; };

View File

@ -158,7 +158,7 @@ exports.getSizeOfTiddlerEventQueue = function() {
exports.clearTiddlerEventQueue = function() { exports.clearTiddlerEventQueue = function() {
this.changedTiddlers = Object.create(null); this.changedTiddlers = Object.create(null);
this.changeCount = Object.create(null) this.changeCount = Object.create(null);
}; };
exports.getChangeCount = function(title) { exports.getChangeCount = function(title) {
@ -176,12 +176,12 @@ Generate an unused title from the specified base
exports.generateNewTitle = function(baseTitle,options) { exports.generateNewTitle = function(baseTitle,options) {
options = options || {}; options = options || {};
var c = 0, var c = 0,
title = baseTitle; title = baseTitle;
while(this.tiddlerExists(title) || this.isShadowTiddler(title)) { while(this.tiddlerExists(title) || this.isShadowTiddler(title)) {
title = baseTitle + title = baseTitle +
(options.prefix || " ") + (options.prefix || " ") +
(++c); (++c);
}; }
return title; return title;
}; };
@ -461,7 +461,7 @@ exports.getTagMap = function() {
for(var index=0; index<tagArray.length; index++) { for(var index=0; index<tagArray.length; index++) {
var tag = tagArray[index]; var tag = tagArray[index];
if($tw.utils.hop(tags,tag)) { if($tw.utils.hop(tags,tag)) {
tags[tag].push(title) tags[tag].push(title);
} else { } else {
tags[tag] = [title]; tags[tag] = [title];
} }
@ -600,7 +600,7 @@ exports.getTiddlerData = function(titleOrTiddler,defaultData) {
var tiddler = titleOrTiddler, var tiddler = titleOrTiddler,
data; data;
if(!(tiddler instanceof $tw.Tiddler)) { if(!(tiddler instanceof $tw.Tiddler)) {
tiddler = this.getTiddler(tiddler) tiddler = this.getTiddler(tiddler);
} }
if(tiddler && tiddler.fields.text) { if(tiddler && tiddler.fields.text) {
switch(tiddler.fields.type) { switch(tiddler.fields.type) {
@ -683,7 +683,7 @@ exports.getGlobalCache = function(cacheName,initializer) {
exports.clearGlobalCache = function() { exports.clearGlobalCache = function() {
this.globalCache = Object.create(null); this.globalCache = Object.create(null);
} };
// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it // Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it
exports.getCacheForTiddler = function(title,cacheName,initializer) { exports.getCacheForTiddler = function(title,cacheName,initializer) {
@ -691,18 +691,18 @@ exports.getCacheForTiddler = function(title,cacheName,initializer) {
// Temporarily disable caching so that tweakParseTreeNode() works // Temporarily disable caching so that tweakParseTreeNode() works
return initializer(); return initializer();
this.caches = this.caches || Object.create(null); // this.caches = this.caches || Object.create(null);
var caches = this.caches[title]; // var caches = this.caches[title];
if(caches && caches[cacheName]) { // if(caches && caches[cacheName]) {
return caches[cacheName]; // return caches[cacheName];
} else { // } else {
if(!caches) { // if(!caches) {
caches = Object.create(null); // caches = Object.create(null);
this.caches[title] = caches; // this.caches[title] = caches;
} // }
caches[cacheName] = initializer(); // caches[cacheName] = initializer();
return caches[cacheName]; // return caches[cacheName];
} // }
}; };
// Clear all caches associated with a particular tiddler // Clear all caches associated with a particular tiddler
@ -793,16 +793,16 @@ var tweakParser = function(parser) {
exports.parseText = function(type,text,options) { exports.parseText = function(type,text,options) {
var parser = this.old_parseText(type,text,options); var parser = this.old_parseText(type,text,options);
if(parser) { if(parser) {
tweakParser(parser) tweakParser(parser);
}; }
return parser; return parser;
}; };
exports.parseTiddler = function(title,options) { exports.parseTiddler = function(title,options) {
var parser = this.old_parseTiddler(title,options); var parser = this.old_parseTiddler(title,options);
if(parser) { if(parser) {
tweakParser(parser) tweakParser(parser);
}; }
return parser; return parser;
}; };
@ -961,7 +961,9 @@ Options available:
*/ */
exports.search = function(text,options) { exports.search = function(text,options) {
options = options || {}; options = options || {};
var self = this,t; var self = this,
t,
invert = !!options.invert;
// Convert the search string into a regexp for each term // Convert the search string into a regexp for each term
var terms, searchTermsRegExps, var terms, searchTermsRegExps,
flags = options.caseSensitive ? "" : "i"; flags = options.caseSensitive ? "" : "i";
@ -1011,7 +1013,7 @@ exports.search = function(text,options) {
var results = [], var results = [],
source = options.source || this.each; source = options.source || this.each;
source(function(tiddler,title) { source(function(tiddler,title) {
if(!!searchTiddler(title) === !options.invert) { if(searchTiddler(title) !== options.invert) {
results.push(title); results.push(title);
} }
}); });
@ -1060,7 +1062,7 @@ exports.readFiles = function(files,callback) {
callback(result); callback(result);
} }
}); });
}; }
return files.length; return files.length;
}; };