1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-12-08 23:07:32 +02:00

Compare commits

...

1 Commits

Author SHA1 Message Date
Laurent Cozic
7498d99ab4 'tests' 2020-12-09 14:27:29 +00:00
5 changed files with 175 additions and 97 deletions

View File

@@ -1,97 +1,83 @@
/* eslint-disable no-unused-vars */ "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
const os = require('os'); return new (P || (P = Promise))(function (resolve, reject) {
const time = require('@joplin/lib/time').default; function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
const { filename } = require('@joplin/lib/path-utils'); function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
const { fileContentEqual, setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('./test-utils.js'); function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
const Folder = require('@joplin/lib/models/Folder.js'); step((generator = generator.apply(thisArg, _arguments || [])).next());
const Note = require('@joplin/lib/models/Note.js'); });
const BaseModel = require('@joplin/lib/BaseModel').default; };
const shim = require('@joplin/lib/shim').default; Object.defineProperty(exports, "__esModule", { value: true });
const HtmlToMd = require('@joplin/lib/HtmlToMd'); const shim_1 = require("@joplin/lib/shim");
const { enexXmlToMd } = require('@joplin/lib/import-enex-md-gen.js'); const os = require('os');
const { filename } = require('@joplin/lib/path-utils');
describe('HtmlToMd', function() { const HtmlToMd = require('@joplin/lib/HtmlToMd');
describe('HtmlToMd', function () {
beforeEach(async (done) => { // beforeEach(async (done) => {
await setupDatabaseAndSynchronizer(1); // await setupDatabaseAndSynchronizer(1);
await switchClient(1); // await switchClient(1);
done(); // done();
}); // });
it('should convert from Html to Markdown', (() => __awaiter(this, void 0, void 0, function* () {
it('should convert from Html to Markdown', (async () => { const basePath = `${__dirname}/html_to_md`;
const basePath = `${__dirname}/html_to_md`; const files = yield shim_1.default.fsDriver().readDirStats(basePath);
const files = await shim.fsDriver().readDirStats(basePath); const htmlToMd = new HtmlToMd();
const htmlToMd = new HtmlToMd(); for (let i = 0; i < files.length; i++) {
const htmlFilename = files[i].path;
for (let i = 0; i < files.length; i++) { if (htmlFilename.indexOf('.html') < 0)
const htmlFilename = files[i].path; continue;
if (htmlFilename.indexOf('.html') < 0) continue; const htmlPath = `${basePath}/${htmlFilename}`;
const mdPath = `${basePath}/${filename(htmlFilename)}.md`;
const htmlPath = `${basePath}/${htmlFilename}`; if (htmlFilename !== 'anchor_same_title_and_url.html')
const mdPath = `${basePath}/${filename(htmlFilename)}.md`; continue;
// if (htmlFilename.indexOf('image_preserve_size') !== 0) continue;
// if (htmlFilename !== 'code_3.html') continue; const htmlToMdOptions = {};
if (htmlFilename === 'anchor_local.html') {
// if (htmlFilename.indexOf('image_preserve_size') !== 0) continue; // Normally the list of anchor names in the document are retrieved from the HTML code
// This is straightforward when the document is still in DOM format, as with the clipper,
const htmlToMdOptions = {}; // but otherwise it would need to be somehow parsed out from the HTML. Here we just
// hard code the anchors that we know are in the file.
if (htmlFilename === 'anchor_local.html') { htmlToMdOptions.anchorNames = ['first', 'second', 'fourth'];
// Normally the list of anchor names in the document are retrieved from the HTML code }
// This is straightforward when the document is still in DOM format, as with the clipper, if (htmlFilename.indexOf('image_preserve_size') === 0) {
// but otherwise it would need to be somehow parsed out from the HTML. Here we just htmlToMdOptions.preserveImageTagsWithSize = true;
// hard code the anchors that we know are in the file. }
htmlToMdOptions.anchorNames = ['first', 'second', 'fourth']; const html = yield shim_1.default.fsDriver().readFile(htmlPath);
} let expectedMd = yield shim_1.default.fsDriver().readFile(mdPath);
let actualMd = yield htmlToMd.parse(`<div>${html}</div>`, htmlToMdOptions);
if (htmlFilename.indexOf('image_preserve_size') === 0) { if (os.EOL === '\r\n') {
htmlToMdOptions.preserveImageTagsWithSize = true; expectedMd = expectedMd.replace(/\r\n/g, '\n');
} actualMd = actualMd.replace(/\r\n/g, '\n');
}
const html = await shim.fsDriver().readFile(htmlPath); if (actualMd !== expectedMd) {
let expectedMd = await shim.fsDriver().readFile(mdPath); const result = [];
result.push('');
let actualMd = await htmlToMd.parse(`<div>${html}</div>`, htmlToMdOptions); result.push(`Error converting file: ${htmlFilename}`);
result.push('--------------------------------- Got:');
if (os.EOL === '\r\n') { result.push(actualMd.split('\n').map(l => `"${l}"`).join('\n'));
expectedMd = expectedMd.replace(/\r\n/g, '\n'); result.push('--------------------------------- Expected:');
actualMd = actualMd.replace(/\r\n/g, '\n'); result.push(expectedMd.split('\n').map(l => `"${l}"`).join('\n'));
} result.push('--------------------------------------------');
result.push('');
if (actualMd !== expectedMd) { console.info(result.join('\n'));
const result = []; // console.info('');
// console.info(`Error converting file: ${htmlFilename}`);
result.push(''); // console.info('--------------------------------- Got:');
result.push(`Error converting file: ${htmlFilename}`); // console.info(actualMd);
result.push('--------------------------------- Got:'); // console.info('--------------------------------- Raw:');
result.push(actualMd.split('\n').map(l => `"${l}"`).join('\n')); // console.info(actualMd.split('\n'));
result.push('--------------------------------- Expected:'); // console.info('--------------------------------- Expected:');
result.push(expectedMd.split('\n').map(l => `"${l}"`).join('\n')); // console.info(expectedMd.split('\n'));
result.push('--------------------------------------------'); // console.info('--------------------------------------------');
result.push(''); // console.info('');
expect(false).toBe(true);
console.info(result.join('\n')); // return;
}
else {
// console.info(''); expect(true).toBe(true);
// console.info(`Error converting file: ${htmlFilename}`); }
// console.info('--------------------------------- Got:'); }
// console.info(actualMd); })));
// console.info('--------------------------------- Raw:'); });
// console.info(actualMd.split('\n')); //# sourceMappingURL=HtmlToMd.js.map
// console.info('--------------------------------- Expected:');
// console.info(expectedMd.split('\n'));
// console.info('--------------------------------------------');
// console.info('');
expect(false).toBe(true);
// return;
} else {
expect(true).toBe(true);
}
}
}));
});

View File

@@ -0,0 +1,87 @@
import shim from '@joplin/lib/shim';
const os = require('os');
const { filename } = require('@joplin/lib/path-utils');
const HtmlToMd = require('@joplin/lib/HtmlToMd');
describe('HtmlToMd', function() {
// beforeEach(async (done) => {
// await setupDatabaseAndSynchronizer(1);
// await switchClient(1);
// done();
// });
it('should convert from Html to Markdown', (async () => {
const basePath = `${__dirname}/html_to_md`;
const files = await shim.fsDriver().readDirStats(basePath);
const htmlToMd = new HtmlToMd();
for (let i = 0; i < files.length; i++) {
const htmlFilename = files[i].path;
if (htmlFilename.indexOf('.html') < 0) continue;
const htmlPath = `${basePath}/${htmlFilename}`;
const mdPath = `${basePath}/${filename(htmlFilename)}.md`;
if (htmlFilename !== 'anchor_same_title_and_url.html') continue;
// if (htmlFilename.indexOf('image_preserve_size') !== 0) continue;
const htmlToMdOptions:any = {};
if (htmlFilename === 'anchor_local.html') {
// Normally the list of anchor names in the document are retrieved from the HTML code
// This is straightforward when the document is still in DOM format, as with the clipper,
// but otherwise it would need to be somehow parsed out from the HTML. Here we just
// hard code the anchors that we know are in the file.
htmlToMdOptions.anchorNames = ['first', 'second', 'fourth'];
}
if (htmlFilename.indexOf('image_preserve_size') === 0) {
htmlToMdOptions.preserveImageTagsWithSize = true;
}
const html = await shim.fsDriver().readFile(htmlPath);
let expectedMd = await shim.fsDriver().readFile(mdPath);
let actualMd = await htmlToMd.parse(`<div>${html}</div>`, htmlToMdOptions);
if (os.EOL === '\r\n') {
expectedMd = expectedMd.replace(/\r\n/g, '\n');
actualMd = actualMd.replace(/\r\n/g, '\n');
}
if (actualMd !== expectedMd) {
const result = [];
result.push('');
result.push(`Error converting file: ${htmlFilename}`);
result.push('--------------------------------- Got:');
result.push(actualMd.split('\n').map(l => `"${l}"`).join('\n'));
result.push('--------------------------------- Expected:');
result.push(expectedMd.split('\n').map(l => `"${l}"`).join('\n'));
result.push('--------------------------------------------');
result.push('');
console.info(result.join('\n'));
// console.info('');
// console.info(`Error converting file: ${htmlFilename}`);
// console.info('--------------------------------- Got:');
// console.info(actualMd);
// console.info('--------------------------------- Raw:');
// console.info(actualMd.split('\n'));
// console.info('--------------------------------- Expected:');
// console.info(expectedMd.split('\n'));
// console.info('--------------------------------------------');
// console.info('');
expect(false).toBe(true);
// return;
} else {
expect(true).toBe(true);
}
}
}));
});

View File

@@ -0,0 +1 @@
<a href="https://example.com"/>https://example.com</a>

View File

@@ -0,0 +1 @@
https://example.com

View File

@@ -227,6 +227,9 @@ rules.inlineLink = {
replacement: function (content, node, options) { replacement: function (content, node, options) {
var href = filterLinkHref(node.getAttribute('href')) var href = filterLinkHref(node.getAttribute('href'))
console.info('RRRRRRRR', href);
if (!href) { if (!href) {
return getNamedAnchorFromLink(node, options) + filterLinkContent(content) return getNamedAnchorFromLink(node, options) + filterLinkContent(content)
} else { } else {