package markdown_monolith

  1. Overview
  2. Docs
Produce a single monolithic Markdown file by inlining linked files

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.1.1.tar.gz
md5=780e6bb03f474a071eff8099862aaff5
sha512=d108fab9854ef32d23de532d66046511c202a1667106b20eb9339f82dec416c02f95589dc7183d5fcd44864cd53fd76c8a478639106e2e7e6523d2c526c7fbdb

Description

OCaml library and CLI to produce a single monolithic Markdown file by parsing with Cmarkit, detecting link lists, and recursively inlining referenced files. Supports local and remote (HTTP/HTTPS) sources with configurable depth limits and deduplication.

Tags

markdown documentation tools

Published: 28 Jan 2026

README

markdown_monolith

Documentation OCaml License

An OCaml library and CLI tool to produce a single monolithic Markdown file by parsing with Cmarkit, detecting navigational TOC-like link lists, and recursively inlining referenced files.

📚 View Full API Documentation

Installation

opam install markdown_monolith

Documentation

Full API documentation is available at: https://durbatuluk1701.github.io/markdown_monolith/

The documentation includes:

  • Comprehensive API reference for all modules and functions
  • Detailed configuration options with examples
  • Usage patterns and best practices
  • Limitations and security considerations

You can also build the documentation locally:

dune build @doc
# View at _build/default/_doc/_html/markdown_monolith/index.html

Usage

Basic Usage

markdown_monolith input.md -o output.md

Examples

Basic inlining:

markdown_monolith main.md -o monolith.md

Enable remote fetching (use with caution):

markdown_monolith main.md --allow-remote -o output.md

Control recursion depth:

markdown_monolith main.md --max-depth 5 -o output.md

Library API

For detailed API documentation, see https://durbatuluk1701.github.io/markdown_monolith/

open Markdown_monolith

(* Create custom configuration *)
let config = {
  Monolith.default_config with
  allow_remote = false;  (* Keep remote fetching disabled for security *)
  max_depth = 5;         (* Limit recursion depth *)
  dedupe = true;         (* Prevent duplicate inlining *)
}

(* Process a file *)
match Monolith.monolith_of_file ~config "input.md" with
| Ok doc -> 
    let output = Cmarkit_commonmark.of_doc doc in
    print_endline output
| Error msg -> 
    prerr_endline ("Error: " ^ msg)

Key Functions

  • monolith_of_file: Main function to process a markdown file into a monolithic document

See the full API documentation for complete details.

Dependencies

  • cmarkit: Modern CommonMark parser and renderer
  • cmdliner: CLI argument parsing
  • lwt: Asynchronous I/O
  • cohttp-lwt-unix (>= 5.0): HTTP client for remote fetching
  • lwt_ssl (>= 1.2.0): SSL/TLS support for HTTPS

License

See LICENSE file.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

For bug reports and feature requests, please use the GitHub issue tracker.

Dependencies (7)

  1. cohttp-lwt-unix >= "5.0"
  2. lwt
  3. cmdliner >= "2.0.0"
  4. cmarkit
  5. ocaml >= "4.14"
  6. lwt_ssl >= "1.2.0"
  7. dune >= "3.20"

Dev Dependencies (2)

  1. odoc with-doc
  2. ounit2 with-test

Used by

None

Conflicts

None