Render command: verbose mode should print title before rendering

Fixes #6067
master
jeremy@jermolene.com 2021-09-24 18:40:34 +01:00
rodzic ebf563ac70
commit e577cf7302
1 zmienionych plików z 55 dodań i 54 usunięć

Wyświetl plik

@ -8,58 +8,59 @@ Render individual tiddlers and save the results to the specified files
\*/ \*/
(function(){ (function(){
/*jslint node: true, browser: true */ /*jslint node: true, browser: true */
/*global $tw: false */ /*global $tw: false */
"use strict"; "use strict";
var widget = require("$:/core/modules/widgets/widget.js"); var widget = require("$:/core/modules/widgets/widget.js");
exports.info = { exports.info = {
name: "render", name: "render",
synchronous: true synchronous: true
}; };
var Command = function(params,commander,callback) { var Command = function(params,commander,callback) {
this.params = params; this.params = params;
this.commander = commander; this.commander = commander;
this.callback = callback; this.callback = callback;
}; };
Command.prototype.execute = function() { Command.prototype.execute = function() {
if(this.params.length < 1) { if(this.params.length < 1) {
return "Missing tiddler filter"; return "Missing tiddler filter";
}
var self = this,
fs = require("fs"),
path = require("path"),
wiki = this.commander.wiki,
tiddlerFilter = this.params[0],
filenameFilter = this.params[1] || "[is[tiddler]addsuffix[.html]]",
type = this.params[2] || "text/html",
template = this.params[3],
variableList = this.params.slice(4),
tiddlers = wiki.filterTiddlers(tiddlerFilter),
variables = Object.create(null);
while(variableList.length >= 2) {
variables[variableList[0]] = variableList[1];
variableList = variableList.slice(2);
} }
$tw.utils.each(tiddlers,function(title) { var self = this,
var parser = wiki.parseTiddler(template || title); fs = require("fs"),
var widgetNode = wiki.makeWidget(parser,{variables: $tw.utils.extend({},variables,{currentTiddler: title})}), path = require("path"),
container = $tw.fakeDocument.createElement("div"); wiki = this.commander.wiki,
widgetNode.render(container,null); tiddlerFilter = this.params[0],
var text = type === "text/html" ? container.innerHTML : container.textContent, filenameFilter = this.params[1] || "[is[tiddler]addsuffix[.html]]",
filepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]); type = this.params[2] || "text/html",
if(self.commander.verbose) { template = this.params[3],
console.log("Rendering \"" + title + "\" to \"" + filepath + "\""); variableList = this.params.slice(4),
} tiddlers = wiki.filterTiddlers(tiddlerFilter),
$tw.utils.createFileDirectories(filepath); variables = Object.create(null);
fs.writeFileSync(filepath,text,"utf8"); while(variableList.length >= 2) {
}); variables[variableList[0]] = variableList[1];
return null; variableList = variableList.slice(2);
}; }
$tw.utils.each(tiddlers,function(title) {
exports.Command = Command; var filepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);
if(self.commander.verbose) {
})(); console.log("Rendering \"" + title + "\" to \"" + filepath + "\"");
}
var parser = wiki.parseTiddler(template || title),
widgetNode = wiki.makeWidget(parser,{variables: $tw.utils.extend({},variables,{currentTiddler: title})}),
container = $tw.fakeDocument.createElement("div");
widgetNode.render(container,null);
var text = type === "text/html" ? container.innerHTML : container.textContent;
$tw.utils.createFileDirectories(filepath);
fs.writeFileSync(filepath,text,"utf8");
});
return null;
};
exports.Command = Command;
})();