mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-02-11 00:20:01 +00:00
![Jermolene](/assets/img/avatar_default.png)
@sukima the main issue with the previous code was that it incorrectly used comma to delimit tags. We actually use spaces, and double square brackets to delimit tags containing spaces. Better is to leave the tags field as an array; the core will serialise it correctly as required. I also made some minor consistency tweaks.
65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
/*\
|
|
title: $:/plugins/tiddlywiki/evernote/modules/enex-deserializer.js
|
|
type: application/javascript
|
|
module-type: tiddlerdeserializer
|
|
|
|
ENEX file deserializer
|
|
|
|
For details see: https://blog.evernote.com/tech/2013/08/08/evernote-export-format-enex/
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
// DOMParser = require("$:/plugins/tiddlywiki/xmldom/dom-parser").DOMParser;
|
|
|
|
/*
|
|
Parse an ENEX file into tiddlers
|
|
*/
|
|
exports["application/enex+xml"] = function(text,fields) {
|
|
// Collect output tiddlers in an array
|
|
var results = [];
|
|
// Parse the XML document
|
|
var parser = new DOMParser(),
|
|
doc = parser.parseFromString(text,"application/xml");
|
|
// Output a report tiddler with information about the import
|
|
var enex = doc.querySelector("en-export");
|
|
results.push({
|
|
title: "Evernote Import Report",
|
|
text: "Evernote file imported on " + enex.getAttribute("export-date") + " from " + enex.getAttribute("application") + " (" + enex.getAttribute("version") + ")"
|
|
})
|
|
// Get all the "note" nodes
|
|
var noteNodes = doc.querySelectorAll("note");
|
|
$tw.utils.each(noteNodes,function(noteNode) {
|
|
var result = {
|
|
title: noteNode.querySelector("title").textContent,
|
|
type: "text/html",
|
|
tags: [],
|
|
text: noteNode.querySelector("content").textContent
|
|
};
|
|
$tw.utils.each(noteNode.querySelectorAll("tag"),function(tagNode) {
|
|
result.tags.push(tagNode.textContent);
|
|
});
|
|
$tw.utils.each(noteNode.querySelectorAll("note-attributes"),function(attrNode) {
|
|
result[attrNode.tagName] = attrNode.textContent;
|
|
});
|
|
results.push(result);
|
|
$tw.utils.each(noteNode.querySelectorAll("resources"),function(resourceNode) {
|
|
results.push({
|
|
title: resourceNode.querySelector("resource-attributes>file-name").textContent,
|
|
type: resourceNode.querySelector("mime").textContent,
|
|
width: resourceNode.querySelector("width").textContent,
|
|
height: resourceNode.querySelector("height").textContent,
|
|
text: resourceNode.querySelector("data").textContent
|
|
});
|
|
});
|
|
});
|
|
// Return the output tiddlers
|
|
return results;
|
|
};
|
|
|
|
})();
|