From 2210efe14c489a8fd4d769d31555b2a27c7306cd Mon Sep 17 00:00:00 2001 From: John Niang Date: Sun, 5 Nov 2023 15:46:47 +0800 Subject: [PATCH] Add generator meta into head --- .../theme/dialect/MetaGeneratorProcessor.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 application/src/main/java/run/halo/app/theme/dialect/MetaGeneratorProcessor.java diff --git a/application/src/main/java/run/halo/app/theme/dialect/MetaGeneratorProcessor.java b/application/src/main/java/run/halo/app/theme/dialect/MetaGeneratorProcessor.java new file mode 100644 index 00000000000..b68e69a3315 --- /dev/null +++ b/application/src/main/java/run/halo/app/theme/dialect/MetaGeneratorProcessor.java @@ -0,0 +1,35 @@ +package run.halo.app.theme.dialect; + +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.info.BuildProperties; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.thymeleaf.context.ITemplateContext; +import org.thymeleaf.model.IModel; +import org.thymeleaf.processor.element.IElementModelStructureHandler; +import reactor.core.publisher.Mono; + +@Order() +@Component +public class MetaGeneratorProcessor implements TemplateHeadProcessor { + + private final String generatorValue; + + public MetaGeneratorProcessor(ObjectProvider buildProperties) { + this.generatorValue = "Halo " + buildProperties.stream().findFirst() + .map(BuildProperties::getVersion) + .orElse("Unknown"); + } + + @Override + public Mono process(ITemplateContext context, IModel model, + IElementModelStructureHandler structureHandler) { + return Mono.fromRunnable(() -> { + var modelFactory = context.getModelFactory(); + var generatorMeta = + modelFactory.createStandaloneElementTag("meta", "generator", generatorValue); + model.add(generatorMeta); + }); + } + +}