2019-07-29 15:43:53 +02:00
|
|
|
const TurndownService = require('joplin-turndown');
|
2018-05-23 13:14:38 +02:00
|
|
|
const markdownUtils = require('lib/markdownUtils');
|
2018-05-16 15:16:14 +02:00
|
|
|
|
|
|
|
class HtmlToMd {
|
2018-05-23 13:14:38 +02:00
|
|
|
parse(html, options = {}) {
|
2019-07-29 15:43:53 +02:00
|
|
|
const turndownPluginGfm = require('joplin-turndown-plugin-gfm').gfm;
|
2018-05-22 01:54:23 +02:00
|
|
|
const turndown = new TurndownService({
|
|
|
|
headingStyle: 'atx',
|
2019-06-13 01:26:09 +02:00
|
|
|
anchorNames: options.anchorNames ? options.anchorNames.map(n => n.trim().toLowerCase()) : [],
|
2019-06-22 19:57:41 +02:00
|
|
|
codeBlockStyle: 'fenced',
|
2020-03-10 01:24:57 +02:00
|
|
|
preserveImageTagsWithSize: !!options.preserveImageTagsWithSize,
|
2019-07-29 15:43:53 +02:00
|
|
|
});
|
|
|
|
turndown.use(turndownPluginGfm);
|
2018-05-20 11:19:59 +02:00
|
|
|
turndown.remove('script');
|
2018-05-24 14:32:43 +02:00
|
|
|
turndown.remove('style');
|
2019-07-29 15:43:53 +02:00
|
|
|
let md = turndown.turndown(html);
|
2018-05-23 13:14:38 +02:00
|
|
|
if (options.baseUrl) md = markdownUtils.prependBaseUrl(md, options.baseUrl);
|
|
|
|
return md;
|
2018-05-16 15:16:14 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-29 15:43:53 +02:00
|
|
|
module.exports = HtmlToMd;
|