代码拉取完成,页面将自动刷新
package service
import (
"regexp"
"strings"
)
type MarkdownProcessor struct {
inCodeBlock bool
}
func (self *MarkdownProcessor) Do(value string) string {
lines := strings.Split(value, "\n")
var result []string
for _, line := range lines {
trimmedLine := strings.TrimSpace(line)
if self.inCodeBlock {
if strings.HasPrefix(trimmedLine, "```") {
self.inCodeBlock = false
}
continue
}
if strings.HasPrefix(trimmedLine, "```") {
self.inCodeBlock = true
continue
}
if self.isMarkdown(trimmedLine) {
continue
}
processedLine := self.removeLineCode(trimmedLine)
if processedLine != "" {
result = append(result, processedLine)
}
}
return strings.Join(result, "\n")
}
// 判断是否为markdown语法
func (self *MarkdownProcessor) isMarkdown(value string) bool {
for _, pattern := range self.getPatterns() {
re := regexp.MustCompile(pattern)
if re.MatchString(value) {
return true
}
}
return false
}
// 去除行内代码,包括markdown内容
func (self *MarkdownProcessor) removeLineCode(value string) string {
re := regexp.MustCompile("`[^`]*`")
return strings.TrimSpace(re.ReplaceAllString(value, ""))
}
// 正则匹配的规则
func (self *MarkdownProcessor) getPatterns() []string {
return []string{
"^#{1,6}\\s", // 标题
"^\\s*[-+*]\\s+", // 无序列表
"^\\d+\\.\\s+", // 有序列表
"^>\\s+", // 引用
"^!\\[.*?\\]\\(.*?\\)", // 图片
"^\\[.*?\\]\\(.*?\\)", // 链接
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。