-
Notifications
You must be signed in to change notification settings - Fork 87
/
renderer.go
42 lines (34 loc) · 616 Bytes
/
renderer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package chat_gpt_ppt
import (
"fmt"
)
type Topic struct {
Title string
Content string
}
func (t *Topic) ToMarkdown() string {
return fmt.Sprintf(`
# %s
%s
`, t.Title, t.Content)
}
type RendererType = string
const (
RendererMarp = "MARP"
RendererRemark = "REMARK"
)
type Renderer interface {
AddTopic(*Topic)
RenderString() (string, error)
RenderFile(outputPath string) error
SetBinPath(path string)
}
func GetRenderer(rendererType RendererType) Renderer {
switch rendererType {
case RendererMarp:
return NewMarpRenderer()
case RendererRemark:
return NewRemarkRenderer()
}
return nil
}