This commit is contained in:
Looly
2024-04-22 02:53:15 +08:00
parent 6cc4dbec48
commit 84d223a30a
2 changed files with 14 additions and 13 deletions

View File

@@ -32,9 +32,9 @@ import java.nio.file.Paths;
*/ */
public class JteEngine implements TemplateEngine { public class JteEngine implements TemplateEngine {
private final ContentType contentType = ContentType.Plain;
private TemplateConfig config = TemplateConfig.DEFAULT; private TemplateConfig config = TemplateConfig.DEFAULT;
private gg.jte.TemplateEngine engine; private gg.jte.TemplateEngine engine;
private final ContentType contentType = ContentType.Plain;
// --------------------------------------------------------------------------------- Constructor start // --------------------------------------------------------------------------------- Constructor start
@@ -60,7 +60,7 @@ public class JteEngine implements TemplateEngine {
* @param codeResolver {@link CodeResolver} * @param codeResolver {@link CodeResolver}
*/ */
public JteEngine(final CodeResolver codeResolver) { public JteEngine(final CodeResolver codeResolver) {
createEngine(codeResolver, contentType); this.engine = createEngine(codeResolver);
} }
// --------------------------------------------------------------------------------- Constructor end // --------------------------------------------------------------------------------- Constructor end
@@ -76,11 +76,13 @@ public class JteEngine implements TemplateEngine {
@Override @Override
public Template getTemplate(final String resource) { public Template getTemplate(final String resource) {
if (TemplateConfig.ResourceMode.STRING.equals(config.getResourceMode())) { if (TemplateConfig.ResourceMode.STRING.equals(config.getResourceMode())) {
if (!StrUtil.endWithAny(config.getPath(), ".jte", ".kte")) { String path = config.getPath();
throw new RuntimeException("path need to end with '.jte' or '.kte'"); if(!StrUtil.endWithAny(path, ".jte", ".kte")){
path = StrUtil.addSuffixIfNot(StrUtil.defaultIfEmpty(path, "hutool"), ".jte");
} }
createEngine(new SimpleStringCodeResolver(MapUtil.of(config.getPath(), resource)), contentType); return new JteTemplate(createEngine(
return new JteTemplate(engine, config.getPath(), config.getCharset()); new SimpleStringCodeResolver(MapUtil.of(path, resource)))
, path, config.getCharset());
} else { } else {
return new JteTemplate(engine, resource, config.getCharset()); return new JteTemplate(engine, resource, config.getCharset());
} }
@@ -97,10 +99,10 @@ public class JteEngine implements TemplateEngine {
private void createEngine() { private void createEngine() {
switch (config.getResourceMode()) { switch (config.getResourceMode()) {
case CLASSPATH: case CLASSPATH:
createEngine(new ResourceCodeResolver(config.getPath(), JteEngine.class.getClassLoader()), contentType); this.engine = createEngine(new ResourceCodeResolver(config.getPath(), JteEngine.class.getClassLoader()));
break; break;
case FILE: case FILE:
createEngine(new DirectoryCodeResolver(Paths.get(config.getPath())), contentType); this.engine = createEngine(new DirectoryCodeResolver(Paths.get(config.getPath())));
break; break;
case STRING: case STRING:
// 这里无法直接创建引擎 // 这里无法直接创建引擎
@@ -114,9 +116,8 @@ public class JteEngine implements TemplateEngine {
* 创建引擎 {@link gg.jte.TemplateEngine } * 创建引擎 {@link gg.jte.TemplateEngine }
* *
* @param codeResolver CodeResolver * @param codeResolver CodeResolver
* @param contentType ContentType
*/ */
private void createEngine(final CodeResolver codeResolver, final ContentType contentType) { private gg.jte.TemplateEngine createEngine(final CodeResolver codeResolver) {
this.engine = gg.jte.TemplateEngine.create(codeResolver, contentType); return gg.jte.TemplateEngine.create(codeResolver, this.contentType);
} }
} }

View File

@@ -162,10 +162,10 @@ public class TemplateFactoryTest {
public void jteEngineTest() { public void jteEngineTest() {
// 字符串模板 // 字符串模板
TemplateEngine engine = TemplateEngineFactory.createEngine( TemplateEngine engine = TemplateEngineFactory.createEngine(
new TemplateConfig("templates.jte").setCustomEngine(JteEngine.class)); new TemplateConfig().setCustomEngine(JteEngine.class));
Template template = engine.getTemplate("@param java.util.HashMap<String, String> map\n" + Template template = engine.getTemplate("@param java.util.HashMap<String, String> map\n" +
"<h3>${map.get(\"message\")}</h3>"); "<h3>${map.get(\"message\")}</h3>");
Map<String, String> model = new HashMap<>(); final Map<String, String> model = new HashMap<>();
model.put("message", "Hutool"); model.put("message", "Hutool");
String result = template.render(model); String result = template.render(model);
Assertions.assertEquals("<h3>Hutool</h3>", result); Assertions.assertEquals("<h3>Hutool</h3>", result);