Files
qsdk/markdown/builder.go
2026-05-01 11:03:19 +08:00

84 lines
1.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package markdown
import (
"bytes"
"io"
"os"
"strings"
)
// Builder 用于拼接 Markdown 文本(原 stock internal/logic/a、gostock internal/logic/libs 中重复实现)。
type Builder struct {
buf bytes.Buffer
}
// MarkdownBuilder 兼容旧项目中的类型名。
type MarkdownBuilder = Builder
func NewBuilder() *Builder {
return &Builder{}
}
// NewMarkdownBuilder 兼容旧项目中的构造函数名。
func NewMarkdownBuilder() *Builder {
return NewBuilder()
}
func (m *Builder) Title(title string) {
m.buf.WriteString("# " + title + "\n\n")
}
func (m *Builder) Catalog(text string) {
m.buf.WriteString("## " + text + "\n\n")
}
func (m *Builder) Text(text string) {
m.buf.WriteString(text + "\n\n")
}
func (m *Builder) KvText(key, val string) {
m.buf.WriteString(key + " " + val + " \n")
}
func (m *Builder) BR() {
m.buf.WriteString("\n")
}
func (m *Builder) Code(lang, code string) {
m.buf.WriteString("```" + lang + "\n")
m.buf.WriteString(code + "\n")
m.buf.WriteString("```\n\n")
}
// Table 生成 Markdown 表格。
func (m *Builder) 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 *Builder) Build() string {
return m.buf.String()
}
func (m *Builder) 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()
_, err = io.Copy(rf, &m.buf)
return err
}