Files
AI-CS/backend/service/import/markdown_parser.go
T
2026-02-02 21:41:47 +08:00

56 lines
1.2 KiB
Go

package import_service
import (
"os"
"strings"
)
// MarkdownParser Markdown 解析器
type MarkdownParser struct{}
// NewMarkdownParser 创建 Markdown 解析器
func NewMarkdownParser() *MarkdownParser {
return &MarkdownParser{}
}
// Supports 检查是否支持该文件
func (p *MarkdownParser) Supports(filePath string) bool {
return strings.HasSuffix(strings.ToLower(filePath), ".md") ||
strings.HasSuffix(strings.ToLower(filePath), ".markdown")
}
// Parse 解析 Markdown 文件
func (p *MarkdownParser) Parse(filePath string) (*ParsedDocument, error) {
content, err := os.ReadFile(filePath)
if err != nil {
return nil, err
}
// 提取标题(第一行作为标题)
lines := strings.Split(string(content), "\n")
title := ""
body := string(content)
for _, line := range lines {
line = strings.TrimSpace(line)
if line != "" {
// 移除 Markdown 标题标记
title = strings.TrimPrefix(line, "#")
title = strings.TrimPrefix(title, "##")
title = strings.TrimPrefix(title, "###")
title = strings.TrimSpace(title)
break
}
}
if title == "" {
title = filePath
}
return &ParsedDocument{
Title: title,
Content: body,
Metadata: make(map[string]interface{}),
}, nil
}