deving
This commit is contained in:
79
internal/logic/strategy/markdown.go
Normal file
79
internal/logic/strategy/markdown.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package strategy
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type MarkdownBuilder struct {
|
||||
buf bytes.Buffer
|
||||
}
|
||||
|
||||
func NewMarkdownBuilder() *MarkdownBuilder {
|
||||
return &MarkdownBuilder{}
|
||||
}
|
||||
func (m *MarkdownBuilder) Title(title string) {
|
||||
m.buf.WriteString("# " + title + "\n\n")
|
||||
}
|
||||
|
||||
func (m *MarkdownBuilder) Catalog(text string) {
|
||||
m.buf.WriteString("## " + text + "\n\n")
|
||||
}
|
||||
func (m *MarkdownBuilder) Text(text string) {
|
||||
m.buf.WriteString(text + "\n\n")
|
||||
}
|
||||
|
||||
func (m *MarkdownBuilder) KvText(key, val string) {
|
||||
m.buf.WriteString(key + " :" + val + " \n")
|
||||
}
|
||||
|
||||
func (m *MarkdownBuilder) BR() {
|
||||
m.buf.WriteString("\n")
|
||||
}
|
||||
|
||||
func (m *MarkdownBuilder) Code(lang, code string) {
|
||||
m.buf.WriteString("```" + lang + "\n")
|
||||
m.buf.WriteString(code + "\n")
|
||||
m.buf.WriteString("```\n\n")
|
||||
}
|
||||
|
||||
// 生成Markdown表格
|
||||
// | Header1 | Header2 |
|
||||
// |---------|---------|
|
||||
// | Cell1 | Cell2 |
|
||||
func (m *MarkdownBuilder) Table(catalog string, headers []string, rows [][]string) {
|
||||
if catalog != "" {
|
||||
m.buf.WriteString("## " + catalog + "\n")
|
||||
}
|
||||
m.buf.WriteString("| " + strings.Join(headers, " | ") + " |\n")
|
||||
|
||||
m.buf.WriteString("| ")
|
||||
for _, header := range headers {
|
||||
m.buf.WriteString(strings.Repeat("-", len(header)) + "|")
|
||||
}
|
||||
m.buf.WriteString("\n")
|
||||
for _, row := range rows {
|
||||
m.buf.WriteString("| " + strings.Join(row, " | ") + " |\n")
|
||||
}
|
||||
}
|
||||
|
||||
func (m *MarkdownBuilder) Build() string {
|
||||
return m.buf.String()
|
||||
}
|
||||
|
||||
func (m *MarkdownBuilder) SaveToFile(filePath string) error {
|
||||
rf, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer rf.Close()
|
||||
|
||||
// 将buffer内容复制到文件
|
||||
_, err = io.Copy(rf, &m.buf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user