Controllers/ContentTypes

// app/controllers/post_controller/postcontroller.go
package postcontroller

import (
	"net/http"

	"golazy.dev/lazycontroller"
)

var Markdown = lazycontroller.NewFormat(
	"text/markdown",
	lazycontroller.As("markdown"),
	lazycontroller.Suffix("md", "markdown"),
)

func (c *PostsController) Show(w http.ResponseWriter, post *Post) error {
	return c.Wants(lazycontroller.Formats{
		lazycontroller.HTML: func() error {
			c.Set("post", post)
			return nil
		},
		Markdown: func() error {
			c.ContentType("text/markdown; charset=utf-8")
			_, err := w.Write([]byte("# " + post.Title + "\n"))
			return err
		},
	})
}