package com.kingschan.blog.common.freemarker.directive.util;
import java.io.IOException;
import java.util.Map;
import org.springframework.stereotype.Component;
import com.kingschan.blog.util.StringUtil;
import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;
/**
*
* <pre>
* 类名称:SubStringDirective
* 类描述: 根据字母和中文自动计算返回指定长度的字符
* 创建人:陈国祥 (kingschan)
* 创建时间:2016-2-20 上午9:28:48
* 修改人:Administrator
* 修改时间:2016-2-20 上午9:28:48
* 修改备注:
* @version V1.0
* </pre>
*/
@Component("SubString")
public class SubStringDirective implements TemplateDirectiveModel {
@Override
public void execute(Environment env, @SuppressWarnings("rawtypes") Map params, TemplateModel[] tm, TemplateDirectiveBody body)
throws TemplateException, IOException {
String value=params.containsKey("value")?params.get("value").toString():"";//传入的字符串
int limit =params.containsKey("limit")&¶ms.get("limit").toString().matches("\\d+")?Integer.valueOf(params.get("limit").toString()):0;
String defval=params.containsKey("defval")?params.get("defval").toString():"";
String overflow=params.containsKey("overflow")?params.get("overflow").toString():"";//超出指定的长度 在后面追加指定的字符串
if (limit>0&&!value.isEmpty()) {
env.getOut().write(StringUtil.getLengthOfSub(value, limit,overflow));
}
if (!defval.isEmpty()&&value.isEmpty()) {
env.getOut().write(defval);
}
}
}