markkit 0.1.1

Extract clean markdown from any format – HTML, PDF, DOCX, and more
Documentation
# Markkit – Core markdown extraction library
# Extract clean markdown from HTML, PDF, DOCX, and more

[package]
name = "markkit"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
description = "Extract clean markdown from any format – HTML, PDF, DOCX, and more"
readme = "../../README.md"

[features]
default = ["html", "http_client"]
html = ["dep:scraper", "dep:html5ever", "dep:lol_html"]
pdf = []
docx = ["dep:zip", "dep:quick-xml"]
spreadsheet = ["dep:calamine", "dep:zip", "dep:quick-xml", "dep:cfb"]
http_client = ["dep:reqwest"]
logging = ["dep:tracing", "dep:tracing-subscriber"]
all_formats = ["html", "pdf", "docx", "spreadsheet"]

[dependencies]
# Async
tokio = { workspace = true, features = ["sync", "io-util"] }
async-trait.workspace = true
futures.workspace = true

# Error handling
thiserror.workspace = true
anyhow.workspace = true

# Serialization
serde.workspace = true
serde_json.workspace = true

# Text processing
regex.workspace = true
unicode-segmentation.workspace = true

# Encoding
encoding_rs.workspace = true
base64.workspace = true
mime.workspace = true

# HTML (optional)
scraper = { workspace = true, optional = true }
html5ever = { workspace = true, optional = true }
lol_html = { workspace = true, optional = true }


# Office documents (optional): DOCX + spreadsheets share the ZIP/XML stack
zip = { workspace = true, optional = true }
quick-xml = { workspace = true, optional = true }

# Spreadsheet (optional)
calamine = { workspace = true, optional = true }
cfb = { workspace = true, optional = true }

# HTTP client (optional)
reqwest = { workspace = true, optional = true }

# Logging (optional)
tracing = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, optional = true }

[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
tempfile.workspace = true
proptest.workspace = true
criterion.workspace = true
zip = { workspace = true }
cfb = { workspace = true }

[[example]]
name = "basic"
path = "../../examples/basic.rs"
required-features = ["html"]

[[example]]
name = "custom_selectors"
path = "../../examples/custom_selectors.rs"
required-features = ["html"]

[[example]]
name = "ir_access"
path = "../../examples/ir_access.rs"
required-features = ["html"]

[[example]]
name = "configuration"
path = "../../examples/configuration.rs"
required-features = ["html"]

[[bench]]
name = "extraction"
harness = false