53 releases (stable)

1.4.5 Mar 16, 2025
1.4.0 Feb 20, 2025
1.2.10 Jul 15, 2024
1.2.4 Feb 27, 2024
0.5.1 Jan 6, 2024

#118 in Development tools

Download history 116/week @ 2024-11-30 107/week @ 2024-12-07 126/week @ 2024-12-14 127/week @ 2024-12-21 33/week @ 2024-12-28 347/week @ 2025-01-04 111/week @ 2025-01-11 129/week @ 2025-01-18 171/week @ 2025-01-25 283/week @ 2025-02-01 213/week @ 2025-02-08 991/week @ 2025-02-15 858/week @ 2025-02-22 827/week @ 2025-03-01 382/week @ 2025-03-08 474/week @ 2025-03-15

2,838 downloads per month
Used in 5 crates (3 directly)

Apache-2.0

46KB
1K SLoC

mdka

HTML to Markdown (MD) converter written in Rust.

crates.io Documentation Dependency Status Executable PyPi License

Summary

A kind of text manipulator named mdka. "ka" means "化 (か)" pointing to conversion.
Designed with in mind:

  • Fast speed
  • Low memory consumption
  • Easy usage

Usage

Development with Rust and cargo

Cargo.toml

[dependencies]
mdka = "1"

awesome.rs

use mdka::from_html

fn awesome_fn() {
    let input = r#"
<h1>heading 1</h1>
<p>Hello, world.</p>"#;
    let ret = from_html(input);
    println!("{}", ret);
    // # heading 1
    // 
    // Hello, world.
    // 
}

Executable

Assets in Releases offer executables for multiple platforms.

$ ./mdka <html-text>
converted-to-markdown-text will be printed

Executable help

$ ./mdka -h
Usage:
  -h, --help             : Help is shown.
  <html_text>            : Direct parameter is taken as HTML text to be converted. Either this or <html_filepath> is required.
  -i <html_filepath>     : Read HTML text from it. Optional.
  -o <markdown_filepath> : Write Markdown result to it. Optional.
  --overwrites           : Overwrite if Markdown file exists. Optional.

Examples:
  ./mdka "<p>Hello, world.</p>"
  ./mdka -i input.html
  ./mdka -o output.md "<p>Hello, world.</p>"
  ./mdka -i input.html -o output.md --overwrites

Python integration

Bindings for Python are supported. Python scripts can import this Rust library to use the functions.

Install:

$ pip install mdka

awesome.py

from mdka import md_from_html

print(md_from_html("<p>Hello, world.</p>"))
# Hello, world.
# 

More Python code examples with specs are here.

Acknowledgements

Depends on Servo's html5ever / markup5ever. Also, on PyO3's pyo3 / maturin on bindings for Python.

Dependencies

~1.2–6.5MB
~46K SLoC