/*\ title: $:/core/modules/deserializers.js type: application/javascript module-type: tiddlerdeserializer Functions to deserialise tiddlers from a block of text \*/ (function(){ /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; /* Utility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:
The text of the tiddler (without the expected HTML encoding).
tag is not encoded.
When these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.
*/
var parseTiddlerDiv = function(text /* [,fields] */) {
// Slot together the default results
var result = {};
if(arguments.length > 1) {
for(var f=1; f]*)>((?:.|\n)*)<\/div>\s*$/gi,
subDivRegExp = /^\s*((?:.|\n)*)<\/pre>\s*$/gi,
attrRegExp = /\s*([^=\s]+)\s*=\s*"([^"]*)"/gi,
match = divRegExp.exec(text);
if(match) {
var subMatch = subDivRegExp.exec(match[2]); // Body of the tag
if(subMatch) {
result.text = subMatch[1];
} else {
result.text = match[2];
}
var attrMatch;
do {
attrMatch = attrRegExp.exec(match[1]);
if(attrMatch) {
var name = attrMatch[1];
var value = attrMatch[2];
result[name] = value;
}
} while(attrMatch);
return result;
} else {
return undefined;
}
};
exports["application/x-tiddler-html-div"] = function(text,fields) {
return [parseTiddlerDiv(text,fields)];
};
exports["application/json"] = function(text,fields) {
var tiddlers = JSON.parse(text),
result = [],
getKnownFields = function(tid) {
var fields = {};
"title text created creator modified modifier type tags".split(" ").forEach(function(value) {
if(tid[value] !== null) {
fields[value] = tid[value];
}
});
return fields;
};
for(var t=0; t