diff options
Diffstat (limited to '')
-rw-r--r-- | render_readme.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/render_readme.go b/render_readme.go new file mode 100644 index 0000000..21e0aeb --- /dev/null +++ b/render_readme.go @@ -0,0 +1,28 @@ +package main + +import ( + "bytes" + "html/template" + + "github.com/go-git/go-git/v5/plumbing/object" + "github.com/microcosm-cc/bluemonday" + "github.com/yuin/goldmark" +) + + +func render_readme_at_tree(tree *object.Tree) any { + readme_file, err := tree.File("README.md") + if err != nil { + return "There is no README available." + } + readme_file_contents, err := readme_file.Contents() + if err != nil { + return "Unable to fetch contents of README: " + err.Error() + } + var readme_rendered_unsafe bytes.Buffer + err = goldmark.Convert([]byte(readme_file_contents), &readme_rendered_unsafe) + if err != nil { + return "Unable to render README: " + err.Error() + } + return template.HTML(bluemonday.UGCPolicy().SanitizeBytes(readme_rendered_unsafe.Bytes())) +} |