html-to-markdown-rs 3.2.3

High-performance HTML to Markdown converter using the astral-tl parser. Part of the Kreuzberg ecosystem.
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.85"
name = "html-to-markdown-rs"
version = "3.2.3"
authors = ["Na'aman Hirschfeld <naaman@kreuzberg.dev>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance HTML to Markdown converter using the astral-tl parser. Part of the Kreuzberg ecosystem."
homepage = "https://kreuzberg.dev"
documentation = "https://docs.rs/html-to-markdown-rs"
readme = "README.md"
keywords = [
    "html",
    "markdown",
    "converter",
    "astral-tl",
    "doc-processing",
]
categories = [
    "parsing",
    "text-processing",
    "web-programming",
]
license = "MIT"
repository = "https://github.com/kreuzberg-dev/html-to-markdown"
resolver = "2"

[package.metadata.cargo-machete]
ignored = [
    "once_cell",
    "ahash",
]

[features]
default = ["metadata"]
full = [
    "inline-images",
    "metadata",
    "visitor",
    "serde",
]
inline-images = ["dep:image"]
metadata = [
    "dep:serde",
    "dep:serde_json",
]
serde = [
    "dep:serde",
    "dep:serde_json",
]
visitor = []

[lib]
name = "html_to_markdown_rs"
crate-type = ["rlib"]
path = "src/lib.rs"

[[example]]
name = "basic"
path = "examples/basic.rs"

[[example]]
name = "table"
path = "examples/table.rs"

[[example]]
name = "test_deser"
path = "examples/test_deser.rs"

[[example]]
name = "test_escape"
path = "examples/test_escape.rs"

[[example]]
name = "test_inline_formatting"
path = "examples/test_inline_formatting.rs"

[[example]]
name = "test_lists"
path = "examples/test_lists.rs"

[[example]]
name = "test_semantic_tags"
path = "examples/test_semantic_tags.rs"

[[example]]
name = "test_tables"
path = "examples/test_tables.rs"

[[example]]
name = "test_task_lists"
path = "examples/test_task_lists.rs"

[[example]]
name = "test_whitespace"
path = "examples/test_whitespace.rs"

[[test]]
name = "br_in_inline_test"
path = "tests/br_in_inline_test.rs"

[[test]]
name = "commonmark_compliance_test"
path = "tests/commonmark_compliance_test.rs"

[[test]]
name = "djot_output_test"
path = "tests/djot_output_test.rs"

[[test]]
name = "integration_test"
path = "tests/integration_test.rs"

[[test]]
name = "issue_121_regressions"
path = "tests/issue_121_regressions.rs"

[[test]]
name = "issue_127_regressions"
path = "tests/issue_127_regressions.rs"

[[test]]
name = "issue_128_regressions"
path = "tests/issue_128_regressions.rs"

[[test]]
name = "issue_131_regressions"
path = "tests/issue_131_regressions.rs"

[[test]]
name = "issue_134_regressions"
path = "tests/issue_134_regressions.rs"

[[test]]
name = "issue_139_regressions"
path = "tests/issue_139_regressions.rs"

[[test]]
name = "issue_140_regressions"
path = "tests/issue_140_regressions.rs"

[[test]]
name = "issue_143_regressions"
path = "tests/issue_143_regressions.rs"

[[test]]
name = "issue_145_regressions"
path = "tests/issue_145_regressions.rs"

[[test]]
name = "issue_146_regressions"
path = "tests/issue_146_regressions.rs"

[[test]]
name = "issue_176_regressions"
path = "tests/issue_176_regressions.rs"

[[test]]
name = "issue_190_regressions"
path = "tests/issue_190_regressions.rs"

[[test]]
name = "issue_199_regressions"
path = "tests/issue_199_regressions.rs"

[[test]]
name = "issue_200_regressions"
path = "tests/issue_200_regressions.rs"

[[test]]
name = "issue_212_regressions"
path = "tests/issue_212_regressions.rs"

[[test]]
name = "issue_216_217_regressions"
path = "tests/issue_216_217_regressions.rs"

[[test]]
name = "json_ld_script_extraction"
path = "tests/json_ld_script_extraction.rs"

[[test]]
name = "lists_test"
path = "tests/lists_test.rs"

[[test]]
name = "plain_output_test"
path = "tests/plain_output_test.rs"

[[test]]
name = "preprocessing_tests"
path = "tests/preprocessing_tests.rs"

[[test]]
name = "reference_links_test"
path = "tests/reference_links_test.rs"

[[test]]
name = "skip_images_test"
path = "tests/skip_images_test.rs"

[[test]]
name = "tables_test"
path = "tests/tables_test.rs"

[[test]]
name = "test_custom_elements"
path = "tests/test_custom_elements.rs"

[[test]]
name = "test_issue_187"
path = "tests/test_issue_187.rs"

[[test]]
name = "test_issue_218"
path = "tests/test_issue_218.rs"

[[test]]
name = "test_nested_simple"
path = "tests/test_nested_simple.rs"

[[test]]
name = "test_script_style_stripping"
path = "tests/test_script_style_stripping.rs"

[[test]]
name = "test_spa_bisect"
path = "tests/test_spa_bisect.rs"

[[test]]
name = "visitor_code_integration_test"
path = "tests/visitor_code_integration_test.rs"

[[test]]
name = "visitor_integration_test"
path = "tests/visitor_integration_test.rs"

[[test]]
name = "xml_tables_test"
path = "tests/xml_tables_test.rs"

[dependencies.ahash]
version = "0.8"
features = [
    "std",
    "compile-time-rng",
]
default-features = false

[dependencies.base64]
version = "0.22"

[dependencies.html-escape]
version = "0.2.13"

[dependencies.html5ever]
version = "0.39.0"

[dependencies.image]
version = "0.25"
features = [
    "gif",
    "jpeg",
    "png",
    "bmp",
    "webp",
]
optional = true
default-features = false

[dependencies.lru]
version = "0.17"

[dependencies.memchr]
version = "2"

[dependencies.once_cell]
version = "1.21"

[dependencies.regex]
version = "1.12"

[dependencies.serde]
version = "1.0"
features = ["derive"]
optional = true

[dependencies.serde_json]
version = "1.0"
optional = true

[dependencies.thiserror]
version = "2.0"

[dependencies.tl]
version = "0.7.11"
package = "astral-tl"

[dev-dependencies.serde]
version = "1.0"
features = ["derive"]

[dev-dependencies.serde_json]
version = "1.0"

[lints.clippy.all]
level = "deny"
priority = -1

[lints.clippy.cargo]
level = "warn"
priority = -1

[lints.clippy.multiple_crate_versions]
level = "allow"
priority = 1

[lints.clippy.nursery]
level = "warn"
priority = -1

[lints.clippy.pedantic]
level = "warn"
priority = -1

[lints.rust]
missing_docs = "warn"
unsafe_code = "forbid"
unused_must_use = "deny"