add wit support

This commit is contained in:
Looly 2021-03-28 14:02:28 +08:00
parent 825c55a2e2
commit 68d5cf35d4
3 changed files with 49 additions and 7 deletions

View File

@ -9,6 +9,8 @@ import cn.hutool.extra.template.TemplateConfig.ResourceMode;
import cn.hutool.extra.template.TemplateEngine;
import com.jfinal.template.source.FileSourceFactory;
import java.io.File;
/**
* Enjoy库的引擎包装
*
@ -99,7 +101,8 @@ public class EnjoyEngine implements TemplateEngine {
break;
case WEB_ROOT:
engine.setSourceFactory(new FileSourceFactory());
engine.setBaseTemplatePath(FileUtil.getAbsolutePath(FileUtil.getWebRoot()));
final File root = FileUtil.file(FileUtil.getWebRoot(), config.getPath());
engine.setBaseTemplatePath(FileUtil.getAbsolutePath(root));
break;
default:
break;

View File

@ -1,11 +1,16 @@
package cn.hutool.extra.template.engine.wit;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateException;
import org.febit.wit.Engine;
import org.febit.wit.exceptions.ResourceNotFoundException;
import org.febit.wit.util.Props;
import java.io.File;
/**
* Wit(http://zqq90.github.io/webit-script/)模板引擎封装
@ -75,10 +80,34 @@ public class WitEngine implements TemplateEngine {
* @return {@link Engine}
*/
private static Engine createEngine(TemplateConfig config) {
if (null == config) {
config = TemplateConfig.DEFAULT;
final Props configProps = Engine.createConfigProps("");
Dict dict = null;
if (null != config) {
dict = Dict.create();
// 自定义编码
dict.set("DEFAULT_ENCODING", config.getCharset());
switch (config.getResourceMode()){
case CLASSPATH:
configProps.set("pathLoader.root", config.getPath());
configProps.set("routeLoader.defaultLoader", "classpathLoader");
break;
case STRING:
configProps.set("routeLoader.defaultLoader", "stringLoader");
break;
case FILE:
configProps.set("pathLoader.root", config.getPath());
configProps.set("routeLoader.defaultLoader", "fileLoader");
break;
case WEB_ROOT:
final File root = FileUtil.file(FileUtil.getWebRoot(), config.getPath());
configProps.set("pathLoader.root", FileUtil.getAbsolutePath(root));
configProps.set("routeLoader.defaultLoader", "fileLoader");
break;
}
}
return Engine.create();
return Engine.create(configProps,dict);
}
}

View File

@ -157,10 +157,20 @@ public class TemplateUtilTest {
@Test
public void WitEngineTest() {
TemplateEngine engine = TemplateUtil.createEngine(
new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(WitEngine.class));
Template template = engine.getTemplate("/templates/wit_test.wit");
//classpath模板
TemplateConfig config = new TemplateConfig("templates", ResourceMode.CLASSPATH)
.setCustomEngine(WitEngine.class);
TemplateEngine engine = TemplateUtil.createEngine(config);
Template template = engine.getTemplate("/wit_test.wit");
String result = template.render(Dict.create().set("name", "hutool"));
Assert.assertEquals("hello,hutool", StrUtil.trim(result));
// 字符串模板
config = new TemplateConfig("templates", ResourceMode.STRING)
.setCustomEngine(WitEngine.class);
engine = TemplateUtil.createEngine(config);
template = engine.getTemplate("<%var name;%>hello,${name}");
result = template.render(Dict.create().set("name", "hutool"));
Assert.assertEquals("hello,hutool", StrUtil.trim(result));
}
}