📄 builtin.java
字号:
return TemplateBooleanModel.FALSE;
}
throw ire;
}
}
boolean isTrue(Environment env) throws TemplateException {
return _getAsTemplateModel(env) == TemplateBooleanModel.TRUE;
}
}
static class if_existsBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env)
throws TemplateException
{
try {
TemplateModel model = target.getAsTemplateModel(env);
return model == null ? TemplateModel.NOTHING : model;
} catch (InvalidReferenceException ire) {
if (target instanceof ParentheticalExpression) {
return TemplateModel.NOTHING;
}
throw ire;
}
}
}
static class is_stringBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateScalarModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_numberBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateNumberModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_nodeBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateNodeModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_booleanBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateBooleanModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_dateBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateDateModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_methodBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateMethodModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_macroBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof Macro) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_transformBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateTransformModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_hashBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateHashModel) ? TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_hash_exBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateHashModelEx) ? TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_sequenceBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateSequenceModel) ? TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_collectionBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateCollectionModel) ? TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_indexableBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateSequenceModel) ? TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_enumerableBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateSequenceModel || tm instanceof TemplateCollectionModel) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class is_directiveBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
assertNonNull(tm, target, env);
return (tm instanceof TemplateTransformModel || tm instanceof Macro) ?
TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
}
static class namespaceBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env) throws TemplateException {
TemplateModel tm = target.getAsTemplateModel(env);
if (!(tm instanceof Macro)) {
invalidTypeException(tm, target, env, "macro");
}
return env.getMacroNamespace((Macro) tm);
}
}
static class defaultBI extends BuiltIn {
TemplateModel _getAsTemplateModel(final Environment env)
throws TemplateException
{
try {
TemplateModel model = target.getAsTemplateModel(env);
return
model == null
? FIRST_NON_NULL_METHOD
: new ConstantMethod(model);
} catch (InvalidReferenceException ire) {
if (target instanceof ParentheticalExpression) {
return FIRST_NON_NULL_METHOD;
}
throw ire;
}
}
private static class ConstantMethod implements TemplateMethodModelEx
{
private final TemplateModel constant;
ConstantMethod(TemplateModel constant) {
this.constant = constant;
}
public Object exec(List args) {
return constant;
}
}
/**
* A method that goes through the arguments one by one and returns
* the first one that is non-null. If all args are null, returns null.
*/
private static final TemplateMethodModelEx FIRST_NON_NULL_METHOD =
new TemplateMethodModelEx() {
public Object exec(List args) throws TemplateModelException {
if(args.isEmpty()) {
throw new TemplateModelException(
"?default(arg) expects at least one argument.");
}
TemplateModel result = null;
for (int i = 0; i< args.size(); i++ ) {
result = (TemplateModel) args.get(i);
if (result != null) {
break;
}
}
return result;
}
};
}
static class containsBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env)
throws TemplateException {
TemplateModel model = target.getAsTemplateModel(env);
if (model instanceof TemplateScalarModel) {
return new BIMethod(((TemplateScalarModel) model).getAsString());
}
throw invalidTypeException(model, target, env, "string");
}
private class BIMethod implements TemplateMethodModelEx {
private String s;
private BIMethod(String s) {
this.s = s;
}
public Object exec(List args) throws TemplateModelException {
Object obj;
String sub;
int ln = args.size();
if (ln != 1) {
throw new TemplateModelException(
"?contains(...) expects one argument.");
}
obj = args.get(0);
if (!(obj instanceof TemplateScalarModel)) {
throw new TemplateModelException(
"?contains(...) expects a string as "
+ "its first argument.");
}
sub = ((TemplateScalarModel) obj).getAsString();
return
(s.indexOf(sub) != -1) ?
TemplateBooleanModel.TRUE :
TemplateBooleanModel.FALSE;
}
}
}
static class index_ofBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env)
throws TemplateException {
TemplateModel model = target.getAsTemplateModel(env);
if (model instanceof TemplateScalarModel) {
return new BIMethod(((TemplateScalarModel) model).getAsString());
}
throw invalidTypeException(model, target, env, "string");
}
private class BIMethod implements TemplateMethodModelEx {
private String s;
private BIMethod(String s) {
this.s = s;
}
public Object exec(List args) throws TemplateModelException {
Object obj;
String sub;
int fidx;
int ln = args.size();
if (ln == 0) {
throw new TemplateModelException(
"?index_of(...) expects at least one argument.");
}
if (ln > 2) {
throw new TemplateModelException(
"?index_of(...) expects at most two arguments.");
}
obj = args.get(0);
if (!(obj instanceof TemplateScalarModel)) {
throw new TemplateModelException(
"?index_of(...) expects a string as "
+ "its first argument.");
}
sub = ((TemplateScalarModel) obj).getAsString();
if (ln > 1) {
obj = args.get(1);
if (!(obj instanceof TemplateNumberModel)) {
throw new TemplateModelException(
"?index_of(...) expects a number as "
+ "its second argument.");
}
fidx = ((TemplateNumberModel) obj).getAsNumber().intValue();
} else {
fidx = 0;
}
return new SimpleNumber(s.indexOf(sub, fidx));
}
}
}
static class last_index_ofBI extends BuiltIn {
TemplateModel _getAsTemplateModel(Environment env)
throws TemplateException {
TemplateModel model = target.getAsTemplateModel(env);
if (model instanceof TemplateScalarModel) {
return new BIMethod(((TemplateScalarModel) model).getAsString());
}
throw invalidTypeException(model, target, env, "string");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -