org.nutz.lang.segment.Segments Maven / Gradle / Ivy
Show all versions of nutz Show documentation
package org.nutz.lang.segment;
import java.io.File;
import org.nutz.lang.Files;
import org.nutz.lang.util.Context;
/**
* 代码片段的帮助函数
*
* @author zozoh([email protected])
*/
public class Segments {
/**
* 根据一个对象填充所有片段的占位符
*
* @param seg
* 片段
* @param obj
* 对象
* @return 填充后的片段对象
*/
public static Segment fill(Segment seg, Object obj) {
if (null == obj || null == seg)
return seg;
return seg.setBy(obj);
}
/**
* 根据一个文件生成一个代码片段
*
* @param f
* 文件
* @return 片段对象
*/
public static Segment read(File f) {
String txt = Files.read(f);
return new CharSegment(txt);
}
/**
* 根据字符串片段,将上下文对象替换对应占位符。未赋值的占位符维持原样
*
* 比如:
*
* @param seg
* 片段对象
* @param context
* 上下文对象
* @return 替换后的字符串
*/
public static String replace(Segment seg, Context context) {
if (null == seg)
return null;
// 增加缺失的占位符号
for (String key : seg.keys())
if (!context.has(key))
context.set(key, "${" + key + "}");
return seg.render(context).toString();
}
/**
* 根据字符串片段,将上下文对象替换对应占位符。未赋值的占位符维持原样
*
* @param pattern
* 字符串片段
* @param context
* 上下文对象
* @return 替换后的字符串
*/
public static String replace(String pattern, Context context) {
if (null == context)
return pattern;
return replace(new CharSegment(pattern), context);
}
/**
* 根据一段字符串生成一个代码片段
*
* @param str
* 字符串
* @return 片段对象
*/
public static Segment create(String str) {
return new CharSegment(str);
}
}