编辑器支持网易云音乐短代码[music:id]

pull/137/head
ruibaby 2019-02-24 16:08:00 +08:00
parent 71fc23d797
commit a84f747111
2 changed files with 28 additions and 6 deletions

View File

@ -39,4 +39,19 @@ public class HaloConst {
* *
*/ */
public static Map<Long, Long> POSTS_VIEWS = new HashMap<>(); public static Map<Long, Long> POSTS_VIEWS = new HashMap<>();
/**
*
*/
public static final String NETEASE_MUSIC_PREFIX = "[music:";
/**
* iframe
*/
public static final String NETEASE_MUSIC_IFRAME = "<iframe frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" width=330 height=86 src=\"//music.163.com/outchain/player?type=2&id=$1&auto=1&height=66\"></iframe>";
/**
*
*/
public static final String NETEASE_MUSIC_REG_PATTERN = "\\[music:(\\d+)\\]";
} }

View File

@ -1,5 +1,6 @@
package cc.ryanc.halo.utils; package cc.ryanc.halo.utils;
import cc.ryanc.halo.model.dto.HaloConst;
import org.commonmark.Extension; import org.commonmark.Extension;
import org.commonmark.ext.front.matter.YamlFrontMatterExtension; import org.commonmark.ext.front.matter.YamlFrontMatterExtension;
import org.commonmark.ext.front.matter.YamlFrontMatterVisitor; import org.commonmark.ext.front.matter.YamlFrontMatterVisitor;
@ -20,34 +21,40 @@ import java.util.Set;
public class MarkdownUtils { public class MarkdownUtils {
/** /**
* Front-matter * Front-matter
*/ */
private static final Set<Extension> EXTENSIONS_YAML = Collections.singleton(YamlFrontMatterExtension.create()); private static final Set<Extension> EXTENSIONS_YAML = Collections.singleton(YamlFrontMatterExtension.create());
/** /**
* Table * Table
*/ */
private static final Set<Extension> EXTENSIONS_TABLE = Collections.singleton(TablesExtension.create()); private static final Set<Extension> EXTENSIONS_TABLE = Collections.singleton(TablesExtension.create());
/** /**
* Markdown * Markdown
*/ */
private static final Parser PARSER = Parser.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build(); 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(); 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 * @param content content
* @return String * @return String
*/ */
public static String renderMarkdown(String content) { public static String renderMarkdown(String content) {
final Node document = PARSER.parse(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;
} }
/** /**