From e951047461c3c2c273484a759ce5fc2c388fb684 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 12 Jul 2017 17:14:27 +0100 Subject: [PATCH] Add import command Unlike load, allows manual control of the deserializer to be used --- core/language/en-GB/Help/import.tid | 24 ++++++++++ core/modules/commands/import.js | 48 +++++++++++++++++++ .../tiddlers/commands/ImportCommand.tid | 8 ++++ 3 files changed, 80 insertions(+) create mode 100644 core/language/en-GB/Help/import.tid create mode 100644 core/modules/commands/import.js create mode 100644 editions/tw5.com/tiddlers/commands/ImportCommand.tid diff --git a/core/language/en-GB/Help/import.tid b/core/language/en-GB/Help/import.tid new file mode 100644 index 000000000..dcfe66661 --- /dev/null +++ b/core/language/en-GB/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: Import tiddlers from a file + +Import tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files. The deserializer must be explicitly specified, unlike the load command which infers the deserializer from the file extension. + +``` +--import [] [<encoding>] +``` + +The deserializers in the core include: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +The title of the imported tiddler defaults to the filename. + +The encoding defaults to "utf8", but can be "base64" for importing binary files. + +Note that TiddlyWiki will not import an older version of an already loaded plugin. diff --git a/core/modules/commands/import.js b/core/modules/commands/import.js new file mode 100644 index 000000000..9465c3da1 --- /dev/null +++ b/core/modules/commands/import.js @@ -0,0 +1,48 @@ +/*\ +title: $:/core/modules/commands/import.js +type: application/javascript +module-type: command + +Command to import tiddlers from a file + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.info = { + name: "import", + synchronous: true +}; + +var Command = function(params,commander,callback) { + this.params = params; + this.commander = commander; + this.callback = callback; +}; + +Command.prototype.execute = function() { + var self = this, + fs = require("fs"), + path = require("path"); + if(this.params.length < 2) { + return "Missing parameters"; + } + var filename = self.params[0], + deserializer = self.params[1], + title = self.params[2] || filename, + encoding = self.params[3] || "utf8", + text = fs.readFileSync(filename,encoding), + tiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer}); + $tw.utils.each(tiddlers,function(tiddler) { + self.commander.wiki.importTiddler(new $tw.Tiddler(tiddler)); + }); + this.commander.log(tiddlers.length + " tiddler(s) imported"); + return null; +}; + +exports.Command = Command; + +})(); diff --git a/editions/tw5.com/tiddlers/commands/ImportCommand.tid b/editions/tw5.com/tiddlers/commands/ImportCommand.tid new file mode 100644 index 000000000..47aacf6ff --- /dev/null +++ b/editions/tw5.com/tiddlers/commands/ImportCommand.tid @@ -0,0 +1,8 @@ +created: 20170712153850528 +modified: 20170712153850528 +tags: Commands +title: ImportCommand +type: text/vnd.tiddlywiki +caption: fetch + +{{$:/language/Help/import}}