go-md-spec-check is a simple Go package to check if a function can convert Markdown to HTML according to the CommonMark specification.
// Download module (go 1.22+)
go get github.com/KEINOS/go-md-spec-check
// Import package
import "github.com/KEINOS/go-md-spec-check/mdspec"
In the below example, mdspec.SpecCheck()
runs myMarkdownParser()
against about 500-600 test cases over the CommonMark v0.30 specification. And returns the first error encountered that does not comply with the CommonMark specification.
import (
"fmt"
"log"
"github.com/KEINOS/go-md-spec-check/mdspec"
)
func Example() {
// Sample Markdown-to-HTML conversion function that does not do its job.
myMarkdownParser := func(markdown string) (string, error) {
return "<p>Hello, World!</p>", nil
}
// Check if the `myMarkdownParser()` complies with the CommonMark specification
// version 0.30.
// Choices: "v0.13", "v0.14" ... "v0.30", "v0.31.2"
err := mdspec.SpecCheck("v0.30", myMarkdownParser)
if err != nil {
fmt.Println(err.Error())
}
// Output:
// error 1_Tabs: the given function did not return the expected HTML result.
// given markdown: "\tfoo\tbaz\t\tbim\n"
// expect HTML: "<pre><code>foo\tbaz\t\tbim\n</code></pre>\n"
// actual HTML: "<p>Hello, World!</p>"
}
- View it online @ Go Playground
- Supported CommonMark spec versions:
- References on CommonMark:
- Markdown Reference @ commonmark.org
- CommonMark specs @ spec.commonmark.org
We are open to anything that helps us improve. We have 100% test coverage, so feel free to play with the code!
- Branch to PR:
main
- Report an issue: issues @ GitHub
- Please attach reproducible test cases. It helps us a lot.
- MIT, Copyright (c) 2022 KEINOS and the go-md-spec-check contributors.