Este plugin tem a finalidade de fazer com que a conversão de html, realizada pela biblioteca Turndown, aceite algumas opções presente na biblioteca Showdown.
As opções presentes são:
- parseImgDimension
- strikethrough
- ghMentions
- emoji
- automaticLinks
- underline
- tables
- taskLists
Instale a biblioteca turndown e o plugin com o npm:
/* prompt */
$ npm install turndown
$ npm install turndown-plugin-showdown
Cole o seguinte código em um arquivo index.js:
/* index.js */
const TurndownService = require('turndown'),
{ showdownPg } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(showdownPg);
let html = '<p> Get Start Plugin 😄 </p>';
console.log(turndownService.turndown(html));
// Output Get Start Plugin :smile:
Abaixo vou explicar e dar um exemplo de como utilizar cada opção.
Esta opção realização a converção de uma tag img com dimensionamento como específicado na funcionalidade da biblioteca Showdown.
/* index.js */
const TurndownService = require('turndown'),
{ parseImgDimension } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(parseImgDimension);
let html = '<img src="foo.jpg" alt="foo" width="100" height="80" />';
console.log(turndownService.turndown(html));
// Output ![foo](foo.jpg =100x80)
Esta opção realiza a converção de tags 'del', 's' e 'strike' provenientes da sintaxe de taxado.
/* index.js */
const TurndownService = require('turndown'),
{ strikethrough } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(strikethrough);
let html = '<strike>Strikethrough</strike>';
console.log(turndownService.turndown(html));
// Output ~~Strikethrough~~
Esta opção realiza a conversão das tags de tabelas em sintaxe de tabela utilizada pela biblioteca Showdown.
/* index.js */
const TurndownService = require('turndown'),
{ tables } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(tables);
let html = `
<table>
<tr>
<th>Teste 1</th>
<th>Teste 2</th>
<th>Teste 3</th>
</tr>
<tr>
<td>Teste 1</td>
<td>Teste 2</td>
<td>Teste 3</td>
</tr>
<tr>
<td>Teste 1</td>
<td>Teste 2</td>
<td>Teste 3</td>
</tr>
</table>
`;
console.log(turndownService.turndown(html));
// Output
// | Teste 1 | Teste 2 | Teste 3 |
// | --- | --- | --- |
// | Teste 1 | Teste 2 | Teste 3 |
// | Teste 1 | Teste 2 | Teste 3 |
Esta funcionalidade realiza a conversão de tags "inputs" com "type" igual "checkbox" dentro listas na sintaxe de taskslists definida pela biblioteca Showdown.
/* index.js */
const TurndownService = require('turndown'),
{ taskLists } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(taskLists);
let html = `
<ul>
<li><input type="checkbox" checked> Checado</li>
<li><input type="checkbox"> Não Checado</li>
</ul>
`;
console.log(turndownService.turndown(html));
//Output
//* [x] Checado
//* [ ] Não Checado
Esta opção faz a converção de tags "A" com "href" definido na opção "ghMentionsLink" em sintaxe padrão ghMentions específicada na biblioteca Showdown. Por padrão o "ghMentionsLink" é "https://github.com/{u}" quando utilizada a funcionalidade "ghMentions", mas pode ser alterado.
/* index.js */
const TurndownService = require('turndown'),
{ ghMentions } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(ghMentions);
turndownService.options.ghMentionsLink = 'https://github.com/{u}';
let html = '<a href="https://github.com/FelipeRhoden">@FelipeRhoden</a>';
console.log(turndownService.turndown(html));
// Output @FelipeRhoden
Esta opção faz a converção de tags "A" com o "href" igual do seu conteudo, converte também quando o "href" inicia com a palavara "mailto:" e o restante é igual ao conteudo da tag. Isso garante que a reconverção do códiog gerado de markdown para html mantenha o encode de e-mails, caso contrario os links de e-mail seriam convertidos para sintaxe de link normal que não realiza o enconde na reconverção.
/* index.js */
const TurndownService = require('turndown'),
{ automaticLinks } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(automaticLinks);
let html = '<a href="https://github.com/FelipeRhoden">https://github.com/FelipeRhoden</a>';
console.log(turndownService.turndown(html));
// Output <https://github.com/FelipeRhoden>
Esta opção faz a converção de unicode de emojis em sintaxe de emoji especificada na biblioteca Showdown. A lista suportada de emojis pode ser encontrada no seguinte link: https://github.com/showdownjs/showdown/wiki/Emojis
/* index.js */
const TurndownService = require('turndown'),
{ emoji } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(emoji);
let html = '💃🤳';
console.log(turndownService.turndown(html));
//Output :dancer::selfie:
Esta opção faz a converção da tag "U" em sintaxe underline definida pela biblioteca Showdown. Quando utiliza a upção underline as opçãos da biblioteca Turndown "emDelimiter" e "strongDelimiter" ficarão respectivamente travadas na utilização de "*" "**" por conta da incoerencia que poderia ser gerada na reconverção do conteudo utilizando a biblioteca Showdown.
/* index.js */
const TurndownService = require('turndown'),
{ underline } = require('turndown-plugin-showdown'),
turndownService = new TurndownService().use(underline);
let html = '<u>underline</u>';
console.log(turndownService.turndown(html));
//Output __underline__
Esta opção faz a utilização de todas as outras opções juntas.
Este plugin é liberado sob a linceça MIT
Copyright © 2020 Felipe Rhoden