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 cn.hutool.extra.template.TemplateEngine;
import com.jfinal.template.source.FileSourceFactory; import com.jfinal.template.source.FileSourceFactory;
import java.io.File;
/** /**
* Enjoy库的引擎包装 * Enjoy库的引擎包装
* *
@ -99,7 +101,8 @@ public class EnjoyEngine implements TemplateEngine {
break; break;
case WEB_ROOT: case WEB_ROOT:
engine.setSourceFactory(new FileSourceFactory()); 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; break;
default: default:
break; break;

View File

@ -1,11 +1,16 @@
package cn.hutool.extra.template.engine.wit; 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.Template;
import cn.hutool.extra.template.TemplateConfig; import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine; import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateException; import cn.hutool.extra.template.TemplateException;
import org.febit.wit.Engine; import org.febit.wit.Engine;
import org.febit.wit.exceptions.ResourceNotFoundException; import org.febit.wit.exceptions.ResourceNotFoundException;
import org.febit.wit.util.Props;
import java.io.File;
/** /**
* Wit(http://zqq90.github.io/webit-script/)模板引擎封装 * Wit(http://zqq90.github.io/webit-script/)模板引擎封装
@ -75,10 +80,34 @@ public class WitEngine implements TemplateEngine {
* @return {@link Engine} * @return {@link Engine}
*/ */
private static Engine createEngine(TemplateConfig config) { private static Engine createEngine(TemplateConfig config) {
if (null == config) { final Props configProps = Engine.createConfigProps("");
config = TemplateConfig.DEFAULT; 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 @Test
public void WitEngineTest() { public void WitEngineTest() {
TemplateEngine engine = TemplateUtil.createEngine( //classpath模板
new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(WitEngine.class)); TemplateConfig config = new TemplateConfig("templates", ResourceMode.CLASSPATH)
Template template = engine.getTemplate("/templates/wit_test.wit"); .setCustomEngine(WitEngine.class);
TemplateEngine engine = TemplateUtil.createEngine(config);
Template template = engine.getTemplate("/wit_test.wit");
String result = template.render(Dict.create().set("name", "hutool")); String result = template.render(Dict.create().set("name", "hutool"));
Assert.assertEquals("hello,hutool", StrUtil.trim(result)); 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));
} }
} }