1
2
Fork
You've already forked md2gmi-rs
0
A Rust utility to convert markdown into gemini format
  • Rust 100%
2025年12月23日 22:58:24 +01:00
src adding image support with proper alt texts 2025年12月23日 22:34:22 +01:00
.gitignore adding the base of the library to convert markdown to gemini format 2025年12月23日 21:10:29 +01:00
Cargo.lock adding the base of the library to convert markdown to gemini format 2025年12月23日 21:10:29 +01:00
Cargo.toml adding the base of the library to convert markdown to gemini format 2025年12月23日 21:10:29 +01:00
README.md fixing typo 2025年12月23日 22:58:24 +01:00

Markdown to gemini converter

This project is meant to become an effecient and complete markdown to gemini converter both as a Rust crate and as a CLI tool to use in scripts.

At the moment when I write this, this is still very early so there's not much working here.

The ultimate goal with this project would be to be able to plug this into a static website/capsule generator. And also potentially serve as a basis/be extended to also support the same level of conversion to the gopher format to easliy create all in one website+gemini capsule+gopherhole using a single markdown input.

An even better solution would be to support more formats but I think this is a bit out of scope for now, as markdown is probably one of the most popular format, I'll let you use pandoc to convert whatever format you want to markdown and use this tool to then convert it to gemini or gopher.

Roadmap of markdown compliance

I might forget to update this, but if you want to know the up-to-date version, simply check the todo!() lying around in src/lib.rs and check the failing tests by running cargo test.

  • Paragraph
  • Heading
  • BlockQuote
  • CodeBlock
  • HtmlBlock → ignored
  • Ordered List
  • Unordered List
  • Nested lists
  • Item
  • FootnoteDefinition
  • DefinitionList
  • DefinitionListTitle
  • DefinitionListDefinition
  • Table
  • TableHead
  • TableRow
  • TableCell
  • Emphasis
  • Strong
  • Strikethrough
  • Superscript
  • Subscript
  • Link (inline, block, multiple in one paragraph, and in other elements)
  • Image
  • MetadataBlock → ignored
  • Text
  • Code
  • InlineMath
  • DisplayMath
  • Html → ignored
  • InlineHtml → display content without tags
  • FootnoteReference
  • SoftBreak
  • HardBreak
  • Rule
  • TaskListMarker

Roadmap of other stuff

  • General setup with pulldown-cmark and unit testing
  • Reafactoring to avoid overly long functions and indentation
  • Setting the project up as a proper crate
  • Setting up "clap" and using the convert function from stdin to stdout and using -i and -o for input and output of files
  • Probably update this readme with more details
  • Create a "markdown torture test" to create integration test of the library and add example of conversion in the repo (linked in readme)