mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
add wit
This commit is contained in:
@@ -3,11 +3,12 @@
|
|||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
# 5.6.2 (2021-03-19)
|
# 5.6.2 (2021-03-20)
|
||||||
|
|
||||||
### 新特性
|
### 新特性
|
||||||
* 【core 】 Validator增加车架号(车辆识别码)验证、驾驶证(驾驶证档案编号)的正则校验(pr#280@Gitee)
|
* 【core 】 Validator增加车架号(车辆识别码)验证、驾驶证(驾驶证档案编号)的正则校验(pr#280@Gitee)
|
||||||
* 【core 】 CopyOptions增加propertiesFilter(pr#281@Gitee)
|
* 【core 】 CopyOptions增加propertiesFilter(pr#281@Gitee)
|
||||||
|
* 【extra 】 增加Wit模板引擎支持
|
||||||
### Bug修复
|
### Bug修复
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
@@ -112,6 +112,12 @@
|
|||||||
</exclusions>
|
</exclusions>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.febit.wit</groupId>
|
||||||
|
<artifactId>wit-core</artifactId>
|
||||||
|
<version>2.6.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 邮件 -->
|
<!-- 邮件 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Beetl实现
|
* Beetl实现,模板引擎介绍见:http://ibeetl.com/
|
||||||
*
|
*
|
||||||
* @author looly
|
* @author looly
|
||||||
*
|
*
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Jfinal家的Enjoy模板引擎实现
|
* Jfinal家的Enjoy模板引擎实现,见:https://jfinal.com/doc/6-1
|
||||||
*
|
*
|
||||||
* @author looly
|
* @author looly
|
||||||
*
|
*
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Rythm实现
|
* Rythm实现,见:http://www.rythmengine.org/
|
||||||
*
|
*
|
||||||
* @author looly
|
* @author looly
|
||||||
*
|
*
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Thymeleaf实现
|
* Thymeleaf实现,见:https://www.thymeleaf.org/
|
||||||
*
|
*
|
||||||
* @author looly
|
* @author looly
|
||||||
*
|
*
|
||||||
|
@@ -30,7 +30,7 @@ public class VelocityTemplate extends AbstractTemplate implements Serializable {
|
|||||||
* 包装Velocity模板
|
* 包装Velocity模板
|
||||||
*
|
*
|
||||||
* @param template Velocity的模板对象 {@link org.apache.velocity.Template}
|
* @param template Velocity的模板对象 {@link org.apache.velocity.Template}
|
||||||
* @return {@link VelocityTemplate}
|
* @return VelocityTemplate
|
||||||
*/
|
*/
|
||||||
public static VelocityTemplate wrap(org.apache.velocity.Template template) {
|
public static VelocityTemplate wrap(org.apache.velocity.Template template) {
|
||||||
return (null == template) ? null : new VelocityTemplate(template);
|
return (null == template) ? null : new VelocityTemplate(template);
|
||||||
|
@@ -0,0 +1,84 @@
|
|||||||
|
package cn.hutool.extra.template.engine.wit;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wit(http://zqq90.github.io/webit-script/)模板引擎封装
|
||||||
|
*
|
||||||
|
* @author looly
|
||||||
|
*/
|
||||||
|
public class WitEngine implements TemplateEngine {
|
||||||
|
|
||||||
|
private Engine engine;
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------- Constructor start
|
||||||
|
/**
|
||||||
|
* 默认构造
|
||||||
|
*/
|
||||||
|
public WitEngine() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造
|
||||||
|
*
|
||||||
|
* @param config 模板配置
|
||||||
|
*/
|
||||||
|
public WitEngine(TemplateConfig config) {
|
||||||
|
init(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造
|
||||||
|
*
|
||||||
|
* @param engine {@link Engine}
|
||||||
|
*/
|
||||||
|
public WitEngine(Engine engine) {
|
||||||
|
init(engine);
|
||||||
|
}
|
||||||
|
// --------------------------------------------------------------------------------- Constructor end
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TemplateEngine init(TemplateConfig config) {
|
||||||
|
init(createEngine(config));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化引擎
|
||||||
|
* @param engine 引擎
|
||||||
|
*/
|
||||||
|
private void init(Engine engine){
|
||||||
|
this.engine = engine;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Template getTemplate(String resource) {
|
||||||
|
if(null == this.engine){
|
||||||
|
init(TemplateConfig.DEFAULT);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return WitTemplate.wrap(engine.getTemplate(resource));
|
||||||
|
} catch (ResourceNotFoundException e) {
|
||||||
|
throw new TemplateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建引擎
|
||||||
|
*
|
||||||
|
* @param config 模板配置
|
||||||
|
* @return {@link Engine}
|
||||||
|
*/
|
||||||
|
private static Engine createEngine(TemplateConfig config) {
|
||||||
|
if (null == config) {
|
||||||
|
config = TemplateConfig.DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Engine.create();
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,54 @@
|
|||||||
|
package cn.hutool.extra.template.engine.wit;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.lang.TypeReference;
|
||||||
|
import cn.hutool.extra.template.AbstractTemplate;
|
||||||
|
import org.febit.wit.Template;
|
||||||
|
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.io.Writer;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wit模板实现
|
||||||
|
*
|
||||||
|
* @author looly
|
||||||
|
*/
|
||||||
|
public class WitTemplate extends AbstractTemplate implements Serializable{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private final Template rawTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 包装Wit模板
|
||||||
|
*
|
||||||
|
* @param witTemplate Wit的模板对象 {@link Template}
|
||||||
|
* @return WitTemplate
|
||||||
|
*/
|
||||||
|
public static WitTemplate wrap(Template witTemplate) {
|
||||||
|
return (null == witTemplate) ? null : new WitTemplate(witTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造
|
||||||
|
*
|
||||||
|
* @param witTemplate Wit的模板对象 {@link Template}
|
||||||
|
*/
|
||||||
|
public WitTemplate(Template witTemplate) {
|
||||||
|
this.rawTemplate = witTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(Map<?, ?> bindingMap, Writer writer) {
|
||||||
|
final Map<String, Object> map = Convert.convert(new TypeReference<Map<String, Object>>() {}, bindingMap);
|
||||||
|
rawTemplate.merge(map, writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(Map<?, ?> bindingMap, OutputStream out) {
|
||||||
|
final Map<String, Object> map = Convert.convert(new TypeReference<Map<String, Object>>() {}, bindingMap);
|
||||||
|
rawTemplate.merge(map, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* Wit实现,见:http://zqq90.github.io/webit-script/
|
||||||
|
*
|
||||||
|
* @author looly
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package cn.hutool.extra.template.engine.wit;
|
@@ -4,3 +4,4 @@ cn.hutool.extra.template.engine.velocity.VelocityEngine
|
|||||||
cn.hutool.extra.template.engine.rythm.RythmEngine
|
cn.hutool.extra.template.engine.rythm.RythmEngine
|
||||||
cn.hutool.extra.template.engine.enjoy.EnjoyEngine
|
cn.hutool.extra.template.engine.enjoy.EnjoyEngine
|
||||||
cn.hutool.extra.template.engine.thymeleaf.ThymeleafEngine
|
cn.hutool.extra.template.engine.thymeleaf.ThymeleafEngine
|
||||||
|
cn.hutool.extra.template.engine.wit.WitEngine
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hutool.extra.template;
|
package cn.hutool.extra.template;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Dict;
|
import cn.hutool.core.lang.Dict;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.template.TemplateConfig.ResourceMode;
|
import cn.hutool.extra.template.TemplateConfig.ResourceMode;
|
||||||
import cn.hutool.extra.template.engine.beetl.BeetlEngine;
|
import cn.hutool.extra.template.engine.beetl.BeetlEngine;
|
||||||
import cn.hutool.extra.template.engine.enjoy.EnjoyEngine;
|
import cn.hutool.extra.template.engine.enjoy.EnjoyEngine;
|
||||||
@@ -8,6 +9,7 @@ import cn.hutool.extra.template.engine.freemarker.FreemarkerEngine;
|
|||||||
import cn.hutool.extra.template.engine.rythm.RythmEngine;
|
import cn.hutool.extra.template.engine.rythm.RythmEngine;
|
||||||
import cn.hutool.extra.template.engine.thymeleaf.ThymeleafEngine;
|
import cn.hutool.extra.template.engine.thymeleaf.ThymeleafEngine;
|
||||||
import cn.hutool.extra.template.engine.velocity.VelocityEngine;
|
import cn.hutool.extra.template.engine.velocity.VelocityEngine;
|
||||||
|
import cn.hutool.extra.template.engine.wit.WitEngine;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -152,4 +154,13 @@ public class TemplateUtilTest {
|
|||||||
File outputFile = new File("e:/test.txt");
|
File outputFile = new File("e:/test.txt");
|
||||||
template.render(bindingMap, outputFile);
|
template.render(bindingMap, outputFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void WitEngineTest() {
|
||||||
|
TemplateEngine engine = TemplateUtil.createEngine(
|
||||||
|
new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(WitEngine.class));
|
||||||
|
Template template = engine.getTemplate("/templates/wit_test.wit");
|
||||||
|
String result = template.render(Dict.create().set("name", "hutool"));
|
||||||
|
Assert.assertEquals("hello,hutool", StrUtil.trim(result));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
4
hutool-extra/src/test/resources/templates/wit_test.wit
Normal file
4
hutool-extra/src/test/resources/templates/wit_test.wit
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<%
|
||||||
|
var name;
|
||||||
|
%>
|
||||||
|
hello,${name}
|
Reference in New Issue
Block a user