34 lines
672 B
Go
34 lines
672 B
Go
package markdown
|
|
|
|
import (
|
|
domain "RenewCMS/internal/domain/article"
|
|
)
|
|
|
|
type Converter struct{}
|
|
|
|
var _ domain.BodyRenderer = &Converter{}
|
|
|
|
func NewConverter() *Converter {
|
|
return &Converter{}
|
|
}
|
|
|
|
func (c *Converter) Render(html string, format domain.BodyFormat) (string, error) {
|
|
switch format {
|
|
case domain.BodyFormatHTML:
|
|
return html, nil
|
|
case domain.BodyFormatMarkdown:
|
|
blocks, err := parseBlocks(html)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return renderMarkdown(blocks), nil
|
|
case domain.BodyFormatJSON:
|
|
blocks, err := parseBlocks(html)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return renderJSON(blocks)
|
|
}
|
|
return "", domain.ErrUnsupportedBodyFormat
|
|
}
|