Skip to content

一个用于解析 CommonMark Markdown 语法的 Kotlin 多平台库,基于原始的 commonmark-java 项目改编。

License

Notifications You must be signed in to change notification settings

darriousliu/commonmark-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Commonmark-Kotlin

English Version | 中文版本

许可证 Kotlin

一个用于解析 CommonMark Markdown 语法的 Kotlin 多平台库,基于原始的 commonmark-java 项目改编, 将 Java 文件全部转为 Kotlin 文件。

该库旨在让 commonmark-java 能用于 Kotlin 多平台,提供 CommonMark Markdown 语法的解析和渲染功能。

特性

  • 🚀 Kotlin 多平台:支持 Android、iOS 和 JVM 平台
  • 📝 兼容 CommonMark:完全支持 CommonMark 规范
  • 🔧 可扩展:支持多种扩展
  • 🎯 类型安全:完全用 Kotlin 编写,具备类型安全

支持平台

  • Android - 安卓应用
  • iOS - 苹果应用
  • JVM - Java 虚拟机(桌面应用、服务器)

扩展

该库包含多个实用扩展:

  • commonmark-ext-autolink - 自动链接识别
  • commonmark-ext-footnotes - 脚注支持
  • commonmark-ext-gfm-strikethrough - GitHub 风格 Markdown 删除线
  • commonmark-ext-gfm-tables - GitHub 风格 Markdown 表格
  • commonmark-ext-heading-anchor - 标题锚点
  • commonmark-ext-image-attributes - 图片属性
  • commonmark-ext-ins - 插入文本支持
  • commonmark-ext-latex - LaTeX 数学公式
  • commonmark-ext-task-list-items - 任务列表项
  • commonmark-ext-yaml-front-matter - YAML 前置数据

安装

Gradle (Kotlin DSL)

将以下内容添加到 settings.gradle.kts

pluginManagement {
    repositories {
        mavenCentral() // 或者 maven { url = uri("https://jitpack.io") }
    }
}

然后,在你的 build.gradle.kts 中添加依赖:

Android

dependencies {
    implementation("io.github.darriousliu:commonmark:0.26.0")
    // 可选扩展
    implementation("io.github.darriousliu:commonmark-ext-autolink:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-footnotes:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-gfm-strikethrough:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-gfm-tables:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-heading-anchor:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-image-attributes:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-ins:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-task-list-items:0.26.0")
    implementation("io.github.darriousliu:commonmark-ext-latex:0.26.0")
}

Kotlin 多平台:

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation("io.github.darriousliu:commonmark:0.26.0")
            // 可选扩展
            implementation("io.github.darriousliu:commonmark-ext-autolink:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-footnotes:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-gfm-strikethrough:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-gfm-tables:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-heading-anchor:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-image-attributes:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-ins:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-task-list-items:0.26.0")
            implementation("io.github.darriousliu:commonmark-ext-latex:0.26.0")
        }
    }
}

使用

基本用法

val parser = Parser.builder().build()
val document = parser.parse("This is _Sparta_")
val renderer = HtmlRenderer.builder().build()
val html = renderer.render(document) // "This is _Sparta_\n"

使用扩展

val extensions = listOf(TablesExtension.create())
val parser = Parser.builder()
    .extensions(extensions)
    .build()
val renderer = HtmlRenderer.builder()
    .extensions(extensions)
    .build()

val markdown = """
| Feature | Support |
|---------|---------|
| Tables  | ✅      |
| Kotlin  | ✅      |
"""

val document = parser.parse(markdown)
val html = renderer.render(document)

示例

可参考 commonmark-java 项目的示例

About

一个用于解析 CommonMark Markdown 语法的 Kotlin 多平台库,基于原始的 commonmark-java 项目改编。

Topics

Resources

License

Stars

Watchers

Forks

Packages