https://github.com/farism/mint-micromark
A Mint package to work with markdown
https://github.com/farism/mint-micromark
markdown micromark mint-lang
Last synced: 4 months ago
JSON representation
A Mint package to work with markdown
- Host: GitHub
- URL: https://github.com/farism/mint-micromark
- Owner: farism
- Created: 2023-09-16T22:31:00.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-22T08:21:27.000Z (over 1 year ago)
- Last Synced: 2024-12-29T12:58:53.340Z (6 months ago)
- Topics: markdown, micromark, mint-lang
- Language: Mint
- Homepage: https://farism.github.io/mint-micromark/
- Size: 997 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mint Micromark
[](https://github.com/farism/mint-micromark/actions/workflows/ci.yml)
[Mint](https://mint-lang.com/) package for converting markdown to html. Uses [Micromark](https://github.com/micromark/micromark) under the hood.
# [Demo](https://farism.github.io/mint-micromark/demo)
# Basic usage
The easiest way to use Micromark is with `Micromark.Component`:
```mint
component Main {
fun render {
}
}
```# Extensions
You can enable extensions to unlock additional functionality:
```mint
component Main {
fun render {
}
}
```# Advanced usage
If you want to directly access micromark, you can use the `Micromark.load` API
```mint
component Main {
state micromark : Maybe(Function(String, String)) = (content: String) {content}fun componentDidMount {
let micromark =
await Micromark.load([Micromark.Extension::Gfm])next { micromark: Maybe::Just(micromark) }
}fun render {
case micromark {
=> <>>Maybe::Just(micromark) =>
{
let html =
micromark(content)
}
}
}
}```
# Why this package?
Mint supports out of the box markdown rendering using a here doc:
```
<<#MARKDOWN
# Hello world!
MARKDOWN
```This is an amazing feature and great for simple markdown.
However, the [Crystal shard](https://github.com/icyleaf/markd) used to enable this feature doesn't have support for some popular markdown extensions like GFM.
# Goals
- Be extremely easy to use
- On-demand loading - extensions and css are optional and loaded on demand# Non-goals
- Be fully featured. This package intentionally uses Micromark as the underlying markdown engine because micromark about as minimal as it can get.