Showdown é um conversor JavaScript Markdown para HTML, com base nos trabalhos originais de John Gruber. O Showdown pode ser usado no lado do cliente (no navegador) ou no lado do servidor (com node.js).
Confira uma demonstração ao vivo aqui: http://demo.showdownjs.com/
Como você sabe, o Showdownjs é uma biblioteca gratuita e permanecerá livre para sempre. No entanto, manter e melhorar a biblioteca custa tempo e dinheiro.
Se você gosta do nosso trabalho e achar nossa biblioteca útil, doe através do PayPal! Sua contribuição será muito apreciada e me ajudará a continuar desenvolvendo esta biblioteca incrível.
Showdownjs V 2.0 é liberado sob a licença do MIT. As versões anteriores são lançadas no BSD.
Você pode baixar o último lançamento Tarball diretamente de lançamentos.
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Os pacotes Nuget podem ser encontrados aqui.
Você também pode usar um dos vários CDNs disponíveis:
JSDelivr
https://cdn.jsdelivr.net/npm/showdown@<version tag>/dist/showdown.min.js
CDNJS
https://cdnjs.cloudflare.com/ajax/libs/showdown/<version tag>/showdown.min.js
unpkg
https://unpkg.com/showdown/dist/showdown.min.js
NOTA : Substitua <version tag>
por uma versão real de comprimento completo, você está interessado em EG 1.9.0
O confronto foi testado com sucesso com:
Em teoria, o Showdown funcionará em qualquer navegador que apoie a ECMA 262 3ª edição (JavaScript 1.5). O conversor em si pode até funcionar em coisas que não são navegadores da web, como o Acrobat. Sem promessas.
O Showdown destina -se a trabalhar em qualquer versão node.js suportada (consulte o cronograma Node.js libera. O código pode funcionar com versões anteriores do Node.js, mas nenhuma acomodação é feita para garantir que sim.
Se você está procurando um confronto v <1.0.0, poderá encontrá -lo no ramo herdado .
Você pode verificar o changelog completo
Verifique nossas páginas wiki para obter exemplos e uma documentação mais aprofundada.
var showdown = require ( 'showdown' ) ,
converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
var converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
Ambos os exemplos devem produzir ...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
Você pode alterar parte do comportamento padrão do Showdown por meio de opções.
As opções podem ser definidas:
Definir uma opção "global" afeta todas as instâncias de confronto
showdown . setOption ( 'optionKey' , 'value' ) ;
Definir uma opção "local" afeta apenas o objeto conversor especificado. As opções locais podem ser definidas:
através do construtor
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
Através do método setOption ()
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
O Showdown fornece 2 métodos (locais e globais) para recuperar opções de conjunto anteriores.
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
Você pode obter as opções padrão do Showdown com:
var defaultOptions = showdown . getDefaultOptions ( ) ;
omitextrawlincodeBlocks : (boolean) [padrão false] omitir a nova linha de linha em um bloco de código. Ex:
Esse:
< code > < pre > var foo = 'bar';
</ pre > </ code >
Torna -se o seguinte:
< code > < pre > var foo = 'bar'; </ pre > </ code >
Noheaderid : (booleano) [padrão false] Desative a geração automática de IDs de cabeçalho. Configuração para o True Substleds prefixheaderid
PersonalizedHeaderID : (booleano) [padrão false] Use o texto em aparelhos encaracolados como ID do cabeçalho. (desde v1.7.0) Exemplo:
## Sample header {real-id} will use real-id as id
ghCompatibleHeaderid : (booleano) [padrão false] Gere IDs de cabeçalho compatíveis com o estilo GitHub (os espaços são substituídos por traços e um monte de chars não alfanuméricos são removidos) (desde v1.5.5)
PrefixHeaderId : (String/boolean) [padrão false] Adicione um prefixo aos IDs de cabeçalho gerados. Passar uma string prefixará essa string para o ID do cabeçalho. A configuração para true
adicionará um prefixo genérico 'seção'.
RawPrefixHeaderId : (boolean) [padrão false] A configuração desta opção como TRUE impedirá que o Showdown modifique o prefixo. Isso pode resultar em IDs malformados (se, por exemplo, o "char for usado no prefixo). Não tiver efeito se o prefixHeaderID for definido como false. (Desde V 1.7.3)
RawHeaderID : (booleano) [padrão false] Remova apenas espaços 'e "dos IDs de cabeçalho gerados (incluindo prefixos), substituindo-os por traços (-). Aviso: isso pode resultar em IDs malformados (desde v1.7.3)
HeaderLevelstart : (Inteiro) [Padrão 1] Defina o nível de partida do cabeçalho. Por exemplo, definir isso como 3 significa que
# foo
será analisado como
< h3 > foo </ h3 >
parseimgdimensions : (boolean) [padrão false] Ative o suporte para definir dimensões da imagem dentro da sintaxe da Markdown. Exemplos:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimpliedAutolink : (booleano) [padrão false] ativando essa opção, permitirá a ligação automática aos URLs. Isso significa que:
some text www.google.com
será analisado como
< p > some text < a href =" www.google.com " > www.google.com </ a >
excludetrailingPunctionAcuation FromUrls : (boolean) [padrão false] Esta opção exclui a pontuação de arrastar dos URLs de automóveis automáticos. Pontuação excluída : . ! ? ( )
. Somente se aplica se a opção SimpliedAutolink estiver definida como true
.
literalmidwordnderscores : (boolean) [padrão false] ativando isso impedirá que o confronto de interpretar sublinhados no meio das palavras como <em>
e <strong>
e, em vez disso, os trate como sublinhados literais.
Exemplo:
some text with __ underscores __ in middle
será analisado como
< p > some text with__underscores__in middle </ p >
literalmidwordasterisks : (boolean) [padrão false] ativando isso, impedirá o confronto de interpretar asteriscos no meio das palavras como <em>
e <strong>
e, em vez disso, os tratará como asteriscos literais.
Strikethrough : (booleano) [padrão false] Ative o suporte para a sintaxe de strikethrough. ~~strikethrough~~
como <del>strikethrough</del>
Tabelas : (booleano) [padrão false] Ative o suporte à sintaxe das tabelas. Exemplo:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
Veja o wiki para mais informações
tableSheaderid : (booleano) [padrão false] Se ativado adicionar uma propriedade de identificação às tags dos cabeçalhos da tabela.
GHCodeBlocks : (boolean) [padrão true] Ative o suporte ao estilo de bloco de código GFM.
Listas de tarefas : (booleano) [padrão false] Ative o suporte para listas de tarefas GFM. Exemplo:
- [x] This task is done
- [ ] This is still pending
SmoothLivePreview : (booleano) [padrão false] impede efeitos estranhos em visualizações ao vivo devido a entrada incompleta
SmartIndentationFix : (Boolean) [padrão false] tenta corrigir de maneira inteligente problemas de indentação relacionados às seqüências de modelos ES6 no meio do código recuado.
desativar forced4spacesIndentsublistas : (boolean) [padrão false] desativa o requisito de recuar os sublistas por 4 espaços para que sejam aninhados, efetivamente revertendo para o comportamento antigo, onde 2 ou 3 espaços eram suficientes. (Desde v1.5.0)
SimpleLinebreaks : (boolean) [padrão false] Paresas quebras de linha como <br>
, sem precisar de 2 espaços no final da linha (desde v1.5.1)
a line
wrapped in two
se transforma em:
< p > a line < br >
wrapped in two </ p >
requerpaceBeforeHeeHeetenText : (boolean) [padrão false] torna obrigatório a adição de um espaço entre #
e o texto do cabeçalho (desde v1.5.3)
ghmentions : (boolean) [padrão false] Ativa o github @mentions, que vinculam o nome de usuário mencionado (desde a v1.6.0)
ghmentionslink : (string) [padrão https://github.com/{u}
] altera o link gerado por @mentions. O Showdown substituirá {u}
pelo nome de usuário. Somente se aplica se a opção GHmentions estiver ativada. Exemplo: @tivie
com ghmentionsoption definido como //mysite.com/{u}/profile
resultará em <a href="//mysite.com/tivie/profile">@tivie</a>
CodeEMALS : (Boolean) [padrão true] Ativar endereços de email que codificam através do uso de entidades de caracteres, transformando endereços de e-mail ASCII em suas entidades decimais equivalentes. (Desde v1.6.1)
Nota: Antes da versão 1.6.1, os emails sempre seriam ofuscados pela codificação de DEC e Hex.
OpenLinksInNewWindow : (boolean) [padrão false] Abra todos os links no novo Windows (adicionando o atributo target="_blank"
a <a>
Tags) (desde V1.7.0)
backSlashescapeshtmltags : (boolean) [padrão false] suporte para tags html escape. ex: <div>foo</div>
(desde v1.7.2)
emoji : (booleano) [padrão false] Ativa o suporte emoji. Ex: this is a :smile: emoji
para obter mais informações sobre emojis disponíveis, consulte https://github.com/showdownjs/showdown/wiki/emojis (desde v.1.8.0)
Subline : (booleano) [Falso padrão] Recurso experimental Ative o suporte para o sublinhado. A sintaxe é sublinhada dupla ou tripla ex: __underlined word__
. Com esta opção ativada, os sublinhados não são mais analisados em <em>
e <strong>
.
elipseis : (boolean) [padrão true] substitui três pontos pelo caractere unicode elipsis.
CompleteHtmldocument : (boolean) [padrão false] produz um documento HTML completo, incluindo <html>
, <head>
e <body>
tags 'em vez de um fragmento HTML. (Desde v.1.8.5)
Metadados : (boolean) [padrão false] Ativar suporte para metadados do documento (definido no topo do documento entre «««
e »»»
ou entre ---
e ---
). (Desde v.1.8.5)
var conv = new showdown . Converter ( { metadata : true } ) ;
var html = conv . makeHtml ( someMd ) ;
var metadata = conv . getMetadata ( ) ; // returns an object with the document metadata
splitadjacentblockquotes : (boolean) [padrão false] Split Blockquote Blocks adjacente. (Desde v.1.8.6)
Moraryling : (Boolean) [padrão false] adiciona algumas classes úteis para o estilo CSS. (Desde v2.0.1)
task-list-item-complete
aos itens de tarefas preenchidas nas listas de tarefas GFM.Nota : Observe que até a versão 1.6.0 , todas essas opções são desativadas por padrão na ferramenta CLI.
Você também pode usar sabores ou predefinições para definir as opções corretas automaticamente, para que o confronto se comporte como sabores populares de marcação.
Atualmente, os seguintes sabores estão disponíveis:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
O Showdown também vem com uma ferramenta de interface de linha de comando. Você pode verificar a página da Wiki da CLI para obter mais informações
O Projeto ShowdownJS também fornece integração perfeitamente com o AngularJs por meio de um "plug -in". Visite https://github.com/showdownjs/ngshowdown para obter mais informações.
Se você está usando o TypeScript, talvez queira usar os tipos de definitivamente
A integração com o SystemJS pode ser obtida no plug-in de terceiros "System-MD".
Para usar o ShowdownJS como um componente VUE rapidamente, você pode verificar o Vue-Showdown.
Showdown não higieniza a entrada. Isso é por design, pois o Markdown se baseia nele para permitir que certos recursos sejam analisados corretamente no HTML. Isso, no entanto, significa que a injeção XSS é bem possível.
Consulte a vulnerabilidade XSS do artigo Wiki (e como mitigá -lo) para obter mais informações.
O Showdown permite que a funcionalidade adicional seja carregada por meio de extensões. (Você pode encontrar uma lista de extensões de confronto conhecidas aqui) Você também pode encontrar um caldeira, para criar suas próprias extensões neste repositório
< script src = "showdown.js" / >
< script src = "twitter-extension.js" / >
var converter = new showdown . Converter ( { extensions : [ 'twitter' ] } ) ;
var showdown = require ( 'showdown' ) ,
myExtension = require ( 'myExtension' ) ,
converter = new showdown . Converter ( { extensions : [ 'myExtension' ] } ) ;
Construir seu clone do repositório é fácil.
Préquesites: Node.js V12, NPM e NPX devem ser instalados.
Execute npm install
.
Execute npx grunt build
(consulte Gruntfile.js
). Este comando:
dist
. Está disponível um conjunto de testes que requerem node.js. Depois que o nó for instalado, execute o seguinte comando da raiz do projeto para instalar as dependências:
npm install
Depois de instalado, os testes podem ser executados a partir da raiz do projeto usando:
npm test
Novos casos de teste podem ser facilmente adicionados. Crie um arquivo de marcação (terminando em .md
) que contém o markdown para testar. Crie um arquivo .html
com exatamente o mesmo nome. Ele será testado automaticamente quando os testes forem executados com mocha
.
Se você deseja contribuir, leia o seguinte guia rápido.
Você pode solicitar um novo recurso enviando um problema. Se você deseja implementar um novo recurso, fique à vontade para emitir uma solicitação de tração.
Os PRs são incríveis. No entanto, antes de enviar sua solicitação de tração, considere as seguintes diretrizes:
Pesquise o Github por uma solicitação de tração aberta ou fechada relacionada ao seu envio. Você não quer duplicar o esforço.
Ao emitir PRs que alteram o código, faça suas alterações em uma nova filial do GIT com base no desenvolvimento :
git checkout -b my-fix-branch develop
Execute o conjunto de testes completo antes de enviar e verifique se todos os testes passam (obviamente = P).
Tente seguir nossas regras de estilo de codificação . Quebrá -los impede o PR para passar nos testes.
Evite corrigir vários problemas na mesma solicitação de tração. É preferível abrir vários pequenos PRs em vez de um difícil de revisar.
Se o PR apresentar um novo recurso ou corrigir um problema, adicione o caso de teste apropriado .
Utilizamos notas de comprometimento convencionais para gerar o Changelog que segue as especificações de Changelog convencionais. É extremamente útil se suas mensagens de confirmação aderirem a essas diretrizes.
Não se esqueça de adicionar seu nome ao arquivo créditos.md. Gostamos de dar crédito se fosse devido.
Se sugerirmos alterações, então:
git rebase develop -i
git push origin my-fix-branch -f
Depois que sua solicitação de tração for mesclada, você pode excluir com segurança sua filial.
Se você tiver tempo para contribuir com este projeto, sentimos -nos obrigados a receber crédito por isso. Essas regras nos permitem revisar seu RP mais rápido e fornecerão crédito apropriado no seu perfil do GitHub. Agradecemos antecipadamente sua contribuição!
Estamos procurando membros para ajudar a manter o confronto. Consulte esta questão para expressar interesse ou comentar esta nota.
Lista de crédito completo em https://github.com/showdowdowdowns/showdown/blob/master/credits.md
Showdown é alimentado por: