diff --git a/src/main/java/top/mczhengyi/vditor/extension/VditorPostContentHandler.java b/src/main/java/top/mczhengyi/vditor/extension/VditorPostContentHandler.java index f932460..6efb9a0 100644 --- a/src/main/java/top/mczhengyi/vditor/extension/VditorPostContentHandler.java +++ b/src/main/java/top/mczhengyi/vditor/extension/VditorPostContentHandler.java @@ -3,7 +3,9 @@ package top.mczhengyi.vditor.extension; import com.google.common.base.Throwables; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.pf4j.PluginWrapper; import org.springframework.stereotype.Component; +import org.springframework.util.PropertyPlaceholderHelper; import reactor.core.publisher.Mono; import run.halo.app.plugin.ReactiveSettingFetcher; import run.halo.app.theme.ReactivePostContentHandler; @@ -17,13 +19,16 @@ public class VditorPostContentHandler implements ReactivePostContentHandler { private final ReactiveSettingFetcher reactiveSettingFetcher; + private final PluginWrapper pluginWrapper; + @Override public Mono handle(PostContentContext contentContext) { return reactiveSettingFetcher.fetch("render", RenderConfig.class) .map(renderConfig -> { if (renderConfig.getEnableRender()&& (!renderConfig.getOnlyMarkdown() || contentContext.getRawType().equals("markdown"))) { - contentContext.setContent(ScriptUtils.renderScript(renderConfig) + "\n" + contentContext.getContent()); + var content = ScriptUtils.renderScript(renderConfig) + "\n" + contentContext.getContent(); + contentContext.setContent(ScriptUtils.setContentProperty(content, pluginWrapper)); } return contentContext; }) diff --git a/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java b/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java index 939ab9b..41535d6 100644 --- a/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java +++ b/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java @@ -1,8 +1,14 @@ package top.mczhengyi.vditor.utils; +import org.pf4j.PluginWrapper; +import org.springframework.util.PropertyPlaceholderHelper; import top.mczhengyi.vditor.bean.RenderConfig; +import java.util.Properties; public class ScriptUtils { + static final PropertyPlaceholderHelper + PROPERTY_PLACEHOLDER_HELPER = new PropertyPlaceholderHelper("${", "}"); + public static String renderScript(RenderConfig renderConfig) { StringBuilder script = new StringBuilder(); script.append(basicScript(renderConfig)); @@ -14,9 +20,9 @@ public class ScriptUtils { public static String basicScript(RenderConfig renderConfig) { return """ - - - + """.formatted(renderConfig.getDarkMode(), renderConfig.getMediaRender()); } @@ -41,4 +47,10 @@ public class ScriptUtils { """; } + + public static String setContentProperty(String script, PluginWrapper pluginWrapper) { + final Properties properties = new Properties(); + properties.setProperty("version", pluginWrapper.getDescriptor().getVersion()); + return PROPERTY_PLACEHOLDER_HELPER.replacePlaceholders(script, properties); + } }