1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-12-24 00:50:28 +00:00

Add support for multi-tiddler files with a .tids extension

This commit is contained in:
Jermolene 2014-02-09 20:34:42 +00:00
parent a2cbc2deb5
commit 1f41daf433
2 changed files with 54 additions and 0 deletions

View File

@ -992,6 +992,29 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/tid","tiddlerdeserializer",{
return [fields];
}
});
$tw.modules.define("$:/boot/tiddlerdeserializer/tids","tiddlerdeserializer",{
"application/x-tiddlers": function(text,fields) {
var tiddlers = [],
split = text.split(/\r?\n\r?\n/mg);
if(split.length >= 2) {
fields = $tw.utils.parseFields(split[0],fields);
var lines = split[1].split(/\r?\n/mg);
for(var t=0; t<lines.length; t++) {
var line = lines[t];
if(line.charAt(0) !== "#") {
var parts = line.split(/:\s+/);
if(parts.length >= 2) {
var tiddler = $tw.utils.extend({},fields);
tiddler.title = (tiddler.title || "") + parts[0];
tiddler.text = parts[1];
tiddlers.push(tiddler);
}
}
}
}
return tiddlers;
}
});
$tw.modules.define("$:/boot/tiddlerdeserializer/txt","tiddlerdeserializer",{
"text/plain": function(text,fields,type) {
fields.text = text;
@ -1479,6 +1502,7 @@ $tw.boot.startup = function(options) {
// Add file extension information
$tw.utils.registerFileType("text/vnd.tiddlywiki","utf8",".tid");
$tw.utils.registerFileType("application/x-tiddler","utf8",".tid");
$tw.utils.registerFileType("application/x-tiddlers","utf8",".tids");
$tw.utils.registerFileType("application/x-tiddler-html-div","utf8",".tiddler");
$tw.utils.registerFileType("text/vnd.tiddlywiki2-recipe","utf8",".recipe");
$tw.utils.registerFileType("text/plain","utf8",".txt");

View File

@ -0,0 +1,30 @@
created: 20140209143652456
tags: deserializers dev
title: MultiTiddlerFiles
MultiTiddlerFiles allow multiple tiddlers to be concisely represented in a single text file.
The goals of this format are:
* To be easy to type and easy to read
* Optimised for single line strings
* To allow common fields or tags to be shared within groups of tiddlers
* To be simple to process with external tools
MultiTiddlerFiles have the extension `tids`. The file is structured as a block of shared fields followed by a blank line. The rest of the file is a sequence of comments and tiddlers. Tiddlers are specified by their title, followed by a colon, at least one space character, and then the rest of the line is the text field for the tiddler.
For axample:
```
title: $:/lingo/ControlPanel/
tags: strings
modifier: JoeBloggs
Basics/Caption: Basics
# This is a comment
Basics/Version: ~TiddlyWiki Version
```
This example defines two tiddlers, ''"""$:/lingo/ControlPanel/Basics/Caption"""'' and ''"""$:/lingo/ControlPanel/Basics/Version"""''.
If a `title` field is specified in the header then it is treated as a prefix for the individual tiddlers defined in the title.