From a84f7471112c0c50f0e71039c73313ceb7be579f Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sun, 24 Feb 2019 16:08:00 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=BD=91=E6=98=93=E4=BA=91=E9=9F=B3=E4=B9=90?= =?UTF-8?q?=E7=9F=AD=E4=BB=A3=E7=A0=81[music:id]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cc/ryanc/halo/model/dto/HaloConst.java | 15 +++++++++++++++ .../cc/ryanc/halo/utils/MarkdownUtils.java | 19 +++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/cc/ryanc/halo/model/dto/HaloConst.java b/src/main/java/cc/ryanc/halo/model/dto/HaloConst.java index 88dcee15f..17cde31cd 100644 --- a/src/main/java/cc/ryanc/halo/model/dto/HaloConst.java +++ b/src/main/java/cc/ryanc/halo/model/dto/HaloConst.java @@ -39,4 +39,19 @@ public class HaloConst { * 文章阅读数缓存 */ public static Map POSTS_VIEWS = new HashMap<>(); + + /** + * 网易云音乐短代码前缀 + */ + public static final String NETEASE_MUSIC_PREFIX = "[music:"; + + /** + * 网易云音乐 iframe 代码 + */ + public static final String NETEASE_MUSIC_IFRAME = ""; + + /** + * 网易云音乐短代码正则表达式 + */ + public static final String NETEASE_MUSIC_REG_PATTERN = "\\[music:(\\d+)\\]"; } diff --git a/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java b/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java index c8fe78597..2425cb180 100644 --- a/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java +++ b/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java @@ -1,5 +1,6 @@ package cc.ryanc.halo.utils; +import cc.ryanc.halo.model.dto.HaloConst; import org.commonmark.Extension; import org.commonmark.ext.front.matter.YamlFrontMatterExtension; import org.commonmark.ext.front.matter.YamlFrontMatterVisitor; @@ -20,34 +21,40 @@ import java.util.Set; public class MarkdownUtils { /** - * Front-matter插件 + * Front-matter 插件 */ private static final Set EXTENSIONS_YAML = Collections.singleton(YamlFrontMatterExtension.create()); /** - * Table插件 + * Table 插件 */ private static final Set EXTENSIONS_TABLE = Collections.singleton(TablesExtension.create()); /** - * 解析Markdown文档 + * 解析 Markdown 文档 */ private static final Parser PARSER = Parser.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build(); /** - * 渲染HTML文档 + * 渲染 HTML 文档 */ private static final HtmlRenderer RENDERER = HtmlRenderer.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build(); /** - * 渲染Markdown + * 渲染 Markdown * + * @see https://github.com/otale/tale/blob/master/src/main/java/com/tale/utils/TaleUtils.java * @param content content * @return String */ public static String renderMarkdown(String content) { final Node document = PARSER.parse(content); - return RENDERER.render(document); + String renderContent = RENDERER.render(document); + // render netease music short url + if (content.contains(HaloConst.NETEASE_MUSIC_PREFIX)) { + renderContent = content.replaceAll(HaloConst.NETEASE_MUSIC_REG_PATTERN, HaloConst.NETEASE_MUSIC_IFRAME); + } + return renderContent; } /**