* chore: build.gradle add mavenLocal()(#975)

* feat: markdown import compatible with hugo(#975)
pull/983/head
zhixiangyuan 2020-07-19 23:09:38 +08:00 committed by GitHub
parent 46000fd0d0
commit 91a54a4bb3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 64 additions and 0 deletions

View File

@ -15,6 +15,7 @@ java {
}
repositories {
mavenLocal()
maven {
url "https://maven.aliyun.com/nexus/content/groups/public"
}

View File

@ -1,6 +1,7 @@
package run.halo.app.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationEventPublisher;
@ -318,8 +319,11 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
// Gets frontMatter
Map<String, List<String>> frontMatter = MarkdownUtils.getFrontMatter(markdown);
// remove frontMatter
markdown = MarkdownUtils.removeFrontMatter(markdown);
PostParam post = new PostParam();
post.setStatus(null);
List<String> elementValue;
@ -331,6 +335,11 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
for (String key : frontMatter.keySet()) {
elementValue = frontMatter.get(key);
for (String ele : elementValue) {
ele = StrUtil.strip(ele, "[", "]");
ele = StrUtil.strip(ele, "\"");
if ("".equals(ele)) {
continue;
}
switch (key) {
case "title":
post.setTitle(ele);

View File

@ -27,6 +27,8 @@ import run.halo.app.model.support.HaloConst;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Markdown utils.
@ -122,4 +124,21 @@ public class MarkdownUtils {
visitor.visit(document);
return visitor.getData();
}
private static final Pattern FRONT_MATTER = Pattern.compile("^---[\\s\\S]*?---");
/**
* remove front matter
*
* @param markdown markdown
* @return markdown
*/
public static String removeFrontMatter(String markdown) {
markdown = markdown.trim();
Matcher matcher = FRONT_MATTER.matcher(markdown);
if (matcher.find()) {
return markdown.replace(matcher.group(), "");
}
return markdown;
}
}

View File

@ -0,0 +1,35 @@
package run.halo.app.utils;
import cn.hutool.core.lang.Assert;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author zhixiang.yuan
* @since 2020/07/19 20:22:58
*/
@Slf4j
class MarkdownUtilsTest {
@Test
void removeFrontMatter() {
String markdown = "---\n" +
"title: \"test remove\"\n" +
"---";
Assert.isTrue("".equals(MarkdownUtils.removeFrontMatter(markdown)));
markdown = "---\n" +
"title: \"test remove\"\n" +
"---" +
"test";
Assert.isTrue("test".equals(MarkdownUtils.removeFrontMatter(markdown)));
markdown = "---\n" +
"title: \"test remove\"\n" +
"---" +
"test---";
Assert.isTrue("test---".equals(MarkdownUtils.removeFrontMatter(markdown)));
}
}