package markdown
import (
"html/template"
)
type Option struct {
ImageSource func(source string) string
RenderLink func(content, href string) template.HTML
Replaces map[rune]string
Poem bool
}
func Parse(s string, opt *Option) (template.HTML, *ParseError) {
if opt == nil {
opt = new(Option)
}
if opt.ImageSource == nil {
opt.ImageSource = func(s string) string { return s }
}
if opt.RenderLink == nil {
opt.RenderLink = RenderLink
}
if opt.Replaces == nil {
opt.Replaces = make(map[rune]string, 0)
}
lxs := lex(s, opt)
tree, err := ast(lxs)
if err != nil {
return "", err
}
return tree.Eval(opt)
}
func ParseBytes(b []byte, opt *Option) (template.HTML, *ParseError) {
return Parse(string(b), opt)
}