diff --git a/src/main/java/run/halo/app/utils/MarkdownUtils.java b/src/main/java/run/halo/app/utils/MarkdownUtils.java index 78389f6c7..d05a0e119 100644 --- a/src/main/java/run/halo/app/utils/MarkdownUtils.java +++ b/src/main/java/run/halo/app/utils/MarkdownUtils.java @@ -72,6 +72,7 @@ public class MarkdownUtils { private static final HtmlRenderer RENDERER = HtmlRenderer.builder(OPTIONS).build(); private static final Pattern FRONT_MATTER = Pattern.compile("^(---)?[\\s\\S]*?---"); + private static final Pattern TABLE = Pattern.compile("\\|\\s*:?---"); // /** // * Render html document to markdown document. @@ -154,7 +155,8 @@ public class MarkdownUtils { public static String removeFrontMatter(String markdown) { markdown = markdown.trim(); Matcher matcher = FRONT_MATTER.matcher(markdown); - if (matcher.find()) { + // if has '| ---' or '| :---' return + if (matcher.find() && !TABLE.matcher(matcher.group()).find()) { return markdown.replace(matcher.group(), ""); } return markdown; diff --git a/src/test/java/run/halo/app/service/impl/PostServiceImplTest.java b/src/test/java/run/halo/app/service/impl/PostServiceImplTest.java index d1ef37514..492bbe21b 100644 --- a/src/test/java/run/halo/app/service/impl/PostServiceImplTest.java +++ b/src/test/java/run/halo/app/service/impl/PostServiceImplTest.java @@ -1,6 +1,7 @@ package run.halo.app.service.impl; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Map; @@ -32,7 +33,9 @@ class PostServiceImplTest { + " - solution\n" + "date: 2018-11-23 16:11:28\n" + "---\n" - + "\n" + + "| 书名 | 作者 |\n" + + "| -------- | ---------- |\n" + + "| 《剑来》 | 烽火戏诸侯 |\n" + "# Pre\n" + "\n" + "在前后端分离项目中,通常需要用到 API 文档,springfox 开发的 **[SpringFox](https://github" @@ -49,6 +52,15 @@ class PostServiceImplTest { + "\n" + "以下将讲解关系型数据的关系描述。仅仅是作为总结。"; + + String noFontMatterTable = "# 书单\n" + + "| 书名 | 作者 |\n" + + "| :-------- | ---------- |\n" + + "| 《剑来》 | 烽火戏诸侯 |\n" + + "## 剑来\n" + + "\n" + + "大千世界,无奇不有。天道崩塌,我陈平安,唯有一剑,可搬山,断江,倒海,降妖,镇魔,敕神,摘星,摧城,开天。"; + @Autowired PostServiceImpl postService; @@ -70,6 +82,9 @@ class PostServiceImplTest { assertTrue(standardCategoryMap.get("后端").getId() .equals(standardCategoryMap.get("JAVA").getParentId())); assertEquals(standardPost.getTags().size(), 3); + assertTrue(standardPost.getContent().contains("书名")); + assertFalse(standardPost.getContent().contains("16:11:28")); + PostDetailVO nonStandardPost = postService.importMarkdown(nonStandardMdContent, "nonStandard"); Map nonStandardCategoryMap = nonStandardPost.getCategories().stream() @@ -80,5 +95,10 @@ class PostServiceImplTest { assertTrue(nonStandardCategoryMap.get("后端").getId() .equals(nonStandardCategoryMap.get("JAVA").getParentId())); assertEquals(nonStandardPost.getTags().size(), 4); + + PostDetailVO noFontMatterTablePost = + postService.importMarkdown(noFontMatterTable, "noFontMatterTable"); + assertTrue(noFontMatterTablePost.getContent().contains("书单")); + } } \ No newline at end of file