From fc129c8a6af2734828bc8a0d7fcd2ffa83f58c16 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 17 Dec 2022 11:53:11 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E5=AF=BC=E5=87=BA=20Markdown=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=97=B6=E5=BC=80=E5=A4=B4=E9=99=84=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=85=83=E6=95=B0=E6=8D=AE=20Fix=20https://g?= =?UTF-8?q?ithub.com/siyuan-note/siyuan/issues/6880?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/export.go | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/kernel/model/export.go b/kernel/model/export.go index 8a6d3a5b3..d26e8085b 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -28,6 +28,7 @@ import ( "sort" "strconv" "strings" + "time" "unicode/utf8" "github.com/88250/gulu" @@ -684,6 +685,7 @@ func exportMarkdownZip(boxID, baseFolderName string, docPaths []string) (zipPath id := docIAL["id"] hPath, md := exportMarkdownContent(id) + md = yfm(docIAL) + md dir, name = path.Split(hPath) dir = util.FilterFilePath(dir) // 导出文档时未移除不支持的文件名符号 https://github.com/siyuan-note/siyuan/issues/4590 name = util.FilterFileName(name) @@ -769,6 +771,62 @@ func exportMarkdownZip(boxID, baseFolderName string, docPaths []string) (zipPath return } +func yfm(docIAL map[string]string) string { + // 导出 Markdown 文件时开头附上一些元数据 https://github.com/siyuan-note/siyuan/issues/6880 + + buf := bytes.Buffer{} + buf.WriteString("---\n") + var title, created, updated, tags string + for k, v := range docIAL { + if "id" == k { + createdTime, parseErr := time.Parse("20060102150405", util.TimeFromID(v)) + if nil == parseErr { + created = createdTime.Format(time.RFC3339) + } + continue + } + if "title" == k { + title = v + continue + } + if "updated" == k { + updatedTime, parseErr := time.Parse("20060102150405", v) + if nil == parseErr { + updated = updatedTime.Format(time.RFC3339) + } + continue + } + if "tags" == k { + tags = v + continue + } + } + if "" != title { + buf.WriteString("title: ") + buf.WriteString(title) + buf.WriteString("\n") + } + if "" == updated { + updated = time.Now().Format(time.RFC3339) + } + if "" == created { + created = updated + } + buf.WriteString("created: ") + buf.WriteString(created) + buf.WriteString("\n") + buf.WriteString("updated: ") + buf.WriteString(updated) + buf.WriteString("\n") + if "" != tags { + buf.WriteString("tags: [") + buf.WriteString(tags) + buf.WriteString("]\n") + } + buf.WriteString("---\n\n") + return buf.String() +} + func exportBoxSYZip(boxID string) (zipPath string) { box := Conf.Box(boxID) if nil == box {