Trabalhando com Markdown em Kotlin: visão geral de bibliotecas e ferramentas
Markdown é uma linguagem de marcação popular usada para formatar texto em documentação, blogs, chats e plataformas educacionais. No ecossistema Kotlin, existem várias bibliotecas poderosas que permitem fazer parsing, gerar e converter Markdown. Neste artigo, vamos explorar as principais ferramentas, suas capacidades e fornecer exemplos práticos de código.
Por que fazer parsing de Markdown em Kotlin?
Ao desenvolver sites educacionais, editores de código, sistemas de gerenciamento de conteúdo ou aplicativos de anotações, frequentemente é necessário:
- Converter texto Markdown em HTML para exibição em páginas web
- Criar editores WYSIWYG com suporte a Markdown
- Analisar a estrutura do documento (cabeçalhos, listas, links)
- Gerar marcação Markdown programaticamente
Principais bibliotecas para trabalhar com Markdown em Kotlin
1. Flexmark (recomendada)
Flexmark é uma biblioteca de alto desempenho para parsing de Markdown, escrita em Java e totalmente compatível com Kotlin. Ela suporta CommonMark, GFM (GitHub Flavored Markdown) e várias extensões (tabelas, notas de rodapé, emojis, fórmulas matemáticas).
Adicionando via Gradle:
implementation("com.vladsch.flexmark:flexmark:0.64.8")implementation("com.vladsch.flexmark:flexmark-html2md-converter:0.64.8")Exemplo de conversão de Markdown para HTML:
import com.vladsch.flexmark.html.HtmlRendererimport com.vladsch.flexmark.parser.Parserimport com.vladsch.flexmark.util.data.MutableDataSet
fun main() { val options = MutableDataSet() val parser = Parser.builder(options).build() val renderer = HtmlRenderer.builder(options).build()
val markdown = """ # Olá, Kotlin! Este é um **exemplo** de trabalho com *Markdown*. - Item 1 - Item 2 """.trimIndent()
val document = parser.parse(markdown) val html = renderer.render(document) println(html) // Saída: <h1>Olá, Kotlin!</h1> // <p>Este é um <strong>exemplo</strong> de trabalho com <em>Markdown</em>.</p> // <ul><li>Item 1</li><li>Item 2</li></ul>}2. CommonMark-Java
CommonMark-Java é a implementação de referência da especificação CommonMark. Leve, rápida e minimalista. Adequada se você não precisa de extensões GFM.
implementation("org.commonmark:commonmark:0.21.0")import org.commonmark.parser.Parserimport org.commonmark.renderer.html.HtmlRenderer
fun main() { val parser = Parser.builder().build() val renderer = HtmlRenderer.builder().build()
val markdown = "**Texto em negrito** e *itálico*" val document = parser.parse(markdown) val html = renderer.render(document) println(html) // <p><strong>Texto em negrito</strong> e <em>itálico</em></p>}3. KMarkdown (para Kotlin Multiplatform)
KMarkdown é uma biblioteca nativa Kotlin que suporta Kotlin Multiplatform (JVM, JS, Native). Ideal para projetos multiplataforma.
// build.gradle.ktsimplementation("com.github.cretz.kmarkdown:kmarkdown:0.2.0")import com.cretz.kmarkdown.KMarkdown
fun main() { val md = KMarkdown() val html = md.toHtml("# TítuloTexto normal com `código`") println(html) // <h1>Título</h1><p>Texto normal com <code>código</code></p>}Recursos avançados do Flexmark
O Flexmark permite ajustar finamente o parsing e a renderização. Vamos ver alguns cenários úteis.
Adicionando extensões (tabelas, tachado)
imp Também na biblioteca
Validação de dados em Kotlin: bibliotecas e abordagens
Geração de relatórios PDF em C# (.NET): iTextSharp, QuestPDF, PDFsharp
Filas de tarefas para PHP: RabbitMQ, Beanstalkd e Gearman
Monitoramento de aplicações Kotlin: bibliotecas e ferramentas para rastreamento de desempenho
Trabalhando com Excel em C# (.NET): bibliotecas EPPlus, ClosedXML e NPOI