Skip to content

Commit

Permalink
Add import command
Browse files Browse the repository at this point in the history
Unlike load, allows manual control of the deserializer to be used
  • Loading branch information
Jermolene committed Jul 12, 2017
1 parent c6e4b7a commit e951047
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
24 changes: 24 additions & 0 deletions 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 <filepath> <deserializer> [<title>] [<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.
48 changes: 48 additions & 0 deletions 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;

})();
8 changes: 8 additions & 0 deletions 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}}

0 comments on commit e951047

Please sign in to comment.