https://github.com/mamantoha/crystal-cmark-gfm
Minimal C bindings for parsing and rendering with cmark-gfm
https://github.com/mamantoha/crystal-cmark-gfm
commonmark crystal gfm hacktoberfest libcmark markdown
Last synced: 6 months ago
JSON representation
Minimal C bindings for parsing and rendering with cmark-gfm
- Host: GitHub
- URL: https://github.com/mamantoha/crystal-cmark-gfm
- Owner: mamantoha
- License: mit
- Created: 2019-06-28T17:25:50.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-04-01T11:07:59.000Z (7 months ago)
- Last Synced: 2025-05-07T06:05:56.942Z (6 months ago)
- Topics: commonmark, crystal, gfm, hacktoberfest, libcmark, markdown
- Language: Crystal
- Homepage:
- Size: 29.3 KB
- Stars: 10
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CommonMarker
[](https://github.com/mamantoha/crystal-cmark-gfm/actions/workflows/crystal.yml)
[](https://github.com/mamantoha/crystal-cmark-gfm/releases)
[](https://github.com/mamantoha/crystal-cmark-gfm/blob/master/LICENSE)
[Crystal](https://crystal-lang.org/) wrapper for [cmark-gfm](https://github.com/github/cmark-gfm), GitHub's fork of the reference parser for CommonMark.
This binding is statically linked with a specific version of cmark-gfm.
cmark-gfm supports simple parsing and rendering of markdown content.
If you want more features please check [cr-cmark-gfm](https://github.com/amauryt/cr-cmark-gfm).
## Installation
1. Add the dependency to your `shard.yml`:
```yaml
dependencies:
common_marker:
github: mamantoha/crystal-cmark-gfm
```
2. Run `shards install`
## Usage
```crystal
require "common_marker"
text = File.read("README.md")
extensions = ["table", "strikethrough", "autolink", "tagfilter", "tasklist"]
options = ["unsafe"]
md = CommonMarker.new(text, options: options, extensions: extensions)
html = md.to_html
```
## Extensions
`CommonMarker` initializer takes an optional third argument defining the extensions you want enabled as your CommonMark document is being processed. The documentation for these extensions are [defined in this spec](https://github.github.com/gfm/).
The available extensions are:
- `table` - This provides support for tables.
- `strikethrough` - This provides support for strikethroughs.
- `autolink` - This provides support for automatically converting URLs to anchor tags.
- `tagfilter` - This escapes [several "unsafe" HTML tags](https://github.github.com/gfm/#disallowed-raw-html-extension-), causing them to not have any effect.
- `tasklist` - This provides support for task list items.
## Development
```console
cd ext && make && cd ..
```
```console
crystal ./lib/crystal_lib/src/main.cr src/lib_cmark.cr.in > ./src/lib_cmark.cr
```
## Contributing
1. Fork it ()
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [Anton Maminov](https://github.com/mamantoha) - creator and maintainer