A Markdown parser for Clojure and ClojureScript with extensive customization options.
Markdown-clj is a Markdown parser implemented in Clojure that compiles to both Clojure and ClojureScript, allowing developers to convert Markdown text to HTML across JVM and JavaScript platforms. It solves the need for a flexible, extensible Markdown processing library within the Clojure ecosystem, supporting advanced features like metadata extraction, custom transformers, and syntax highlighting integration.
Clojure and ClojureScript developers who need to process Markdown in web applications, documentation tools, or content management systems, especially those requiring cross-platform compatibility or custom parsing behavior.
Developers choose Markdown-clj for its dual-platform support, extensive customization options through transformers and callbacks, and its alignment with Clojure's philosophy of simplicity and composability, making it a versatile choice for Markdown processing in Clojure projects.
Markdown parser in Clojure
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Compiles to both Clojure (JVM) and ClojureScript (JavaScript), allowing seamless Markdown processing in server-side and client-side applications, as shown in the separate usage sections for each environment.
Supports custom transformers, code block callbacks, and selective inhibition, enabling deep integration with other parsers or custom logic, detailed in the 'Customizing the Parser' section with examples.
Includes footnotes, reference-style links, metadata extraction, and table support beyond basic Markdown, though features like footnotes require explicit enabling via options like `:footnotes? true`.
Provides functions for streaming output, returning HTML strings, and extracting metadata separately (e.g., `md-to-meta` for faster metadata-only parsing), useful for content pipelines and documentation tools.
The parser reads content line by line, meaning tag content cannot span multiple lines, which can break complex Markdown structures and is explicitly noted as a limitation in the README.
Advanced features like reference links and footnotes are disabled by default, requiring explicit options (e.g., `:reference-links? true`), adding setup complexity for standard use cases.
Tightly integrated with Clojure and ClojureScript, making it unsuitable for projects in other languages, and its customization relies on Clojure-specific constructs like transformers and callbacks.