You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-12-14 23:26:58 +02:00
Desktop: Add ENEX to HTML export (#1795)
* Add `escape` to go back from Dropbox Login screen * Add .vscode/ to .gitignore * Remove call to enexXmlToMd * The 2 enex importers have distinct functionality! * Add tmp #deleteAllNotebooks * checkbox state still not persisting * images now fixed, but checkboxes still broken * Figured out that #ipcProxySendToHost is important for handling checkbox * cleanup closing br and en-todo tags + add notes * Handle en-media, add NOTEs & TODOs, & format html * Clean up some of the logging * cleanHtml is a nice beautifier, but callback hell ensues... * Rm #htmlFormat * Recreating the xml actually seems to work * Add test (not functional rn) * Add test for checkboxes * Add test for image en-media * Separate tests into 2 function calls * Clean up test * Add `en-media-audio` test * Add bad resource test * Misc cleanup * Rm SlateEditor files * Misc cleanup * Remove #deleteAllNotebooks button * Add names to tests * Extract resourceUtils * Rm DropboxLoginScreen esc behavior, part of another PR * Misc cleanup * Improve audioElement, add attachment import support * Misc cleanup * Add svg test for enex_to_html * Clean up test * Set markup_language to MARKUP_LANGUAGE_HTML to tell renderer that the content is only HTML * Rename to newModuleByFormat_ for clarity * Add comment to clarify newModuleFromPath_
This commit is contained in:
committed by
Laurent Cozic
parent
52ace55db0
commit
2f14832c34
@@ -5,6 +5,7 @@ const Note = require('lib/models/Note.js');
|
||||
const Tag = require('lib/models/Tag.js');
|
||||
const Resource = require('lib/models/Resource.js');
|
||||
const { enexXmlToMd } = require('./import-enex-md-gen.js');
|
||||
const { enexXmlToHtml } = require('./import-enex-html-gen.js');
|
||||
const { time } = require('lib/time-utils.js');
|
||||
const Levenshtein = require('levenshtein');
|
||||
const md5 = require('md5');
|
||||
@@ -164,6 +165,7 @@ async function saveNoteToStorage(note, fuzzyMatching = false) {
|
||||
|
||||
function importEnex(parentFolderId, filePath, importOptions = null) {
|
||||
if (!importOptions) importOptions = {};
|
||||
// console.info(JSON.stringify({importOptions}, null, 2));
|
||||
if (!('fuzzyMatching' in importOptions)) importOptions.fuzzyMatching = false;
|
||||
if (!('onProgress' in importOptions)) importOptions.onProgress = function() {};
|
||||
if (!('onError' in importOptions)) importOptions.onError = function() {};
|
||||
@@ -216,9 +218,15 @@ function importEnex(parentFolderId, filePath, importOptions = null) {
|
||||
|
||||
while (notes.length) {
|
||||
let note = notes.shift();
|
||||
const body = await enexXmlToMd(note.bodyXml, note.resources);
|
||||
const body = importOptions.outputFormat === 'html' ?
|
||||
await enexXmlToHtml(note.bodyXml, note.resources) :
|
||||
await enexXmlToMd(note.bodyXml, note.resources);
|
||||
delete note.bodyXml;
|
||||
|
||||
note.markup_language = importOptions.outputFormat === 'html' ?
|
||||
Note.MARKUP_LANGUAGE_HTML :
|
||||
Note.MARKUP_LANGUAGE_MARKDOWN;
|
||||
|
||||
// console.info('*************************************************************************');
|
||||
// console.info(body);
|
||||
// console.info('*************************************************************************');
|
||||
|
||||
Reference in New Issue
Block a user