freemarker.template.expression
Class ExpressionUtils

java.lang.Object
  extended by freemarker.template.expression.ExpressionUtils

public final class ExpressionUtils
extends java.lang.Object

Utility methods for evaluating expressions. These are used in various parts of the freemarker.template.expression package. They are also generally useful when dealing with TemplateModels directly, such as when retrieving parameters from a TemplateMethodModel2 parameter list.

Since:
1.7.5

Field Summary
static int EXPRESSION_TYPE_HASH
          The expression can return type Hash.
static int EXPRESSION_TYPE_LIST
          The expression can return type List.
static int EXPRESSION_TYPE_METHOD
          The expression can return type Method.
static int EXPRESSION_TYPE_NUMBER
          The expression can return type Number.
static int EXPRESSION_TYPE_STRING
          The expression can return type String.
static int EXPRESSION_TYPE_TRANSFORM
          The expression can return type Transform.
static int EXPRESSION_TYPE_VARIABLE
          The expression is a variable, so can return anything.
 
Method Summary
static long compareNumbers(TemplateModel leftModel, TemplateModel rightModel)
          Compares two numeric expressions.
static long getAsNumber(TemplateModel model)
           Determines the given TemplateModel's long value.
static java.lang.String getAsString(TemplateModel model)
           Determines the given TemplateModel's String value.
static java.lang.String getAsStringOrEmpty(TemplateModel model)
           Determines the given TemplateModel's String value.
static boolean isEqual(TemplateModel leftModel, TemplateModel rightModel)
          Determines whether both sides of an expression are equal.
static boolean isTrue(TemplateModel model)
           Determines the "truth" of a given template model.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EXPRESSION_TYPE_STRING

public static final int EXPRESSION_TYPE_STRING
The expression can return type String.

See Also:
Constant Field Values

EXPRESSION_TYPE_NUMBER

public static final int EXPRESSION_TYPE_NUMBER
The expression can return type Number.

See Also:
Constant Field Values

EXPRESSION_TYPE_LIST

public static final int EXPRESSION_TYPE_LIST
The expression can return type List.

See Also:
Constant Field Values

EXPRESSION_TYPE_HASH

public static final int EXPRESSION_TYPE_HASH
The expression can return type Hash.

See Also:
Constant Field Values

EXPRESSION_TYPE_TRANSFORM

public static final int EXPRESSION_TYPE_TRANSFORM
The expression can return type Transform.

See Also:
Constant Field Values

EXPRESSION_TYPE_METHOD

public static final int EXPRESSION_TYPE_METHOD
The expression can return type Method.

See Also:
Constant Field Values

EXPRESSION_TYPE_VARIABLE

public static final int EXPRESSION_TYPE_VARIABLE
The expression is a variable, so can return anything.

See Also:
Constant Field Values
Method Detail

isTrue

public static boolean isTrue(TemplateModel model)
                      throws TemplateModelException

Determines the "truth" of a given template model. This is determined as follows:

Parameters:
model - the TemplateModel to be tested, possibly null
Returns:
true if the model evaluates to true, otherwise false
Throws:
TemplateModelException - the truth of the template model could not be determined

getAsString

public static java.lang.String getAsString(TemplateModel model)
                                    throws TemplateModelException

Determines the given TemplateModel's String value. This is a simple case of getting the TemplateScalarModel.getAsString() value from the model, assuming it implements TemplateScalarModel. If it's a TemplateNumberModel, we return a base-10 encoding of the number value. If it's empty or null, return null.

Parameters:
model - the TemplateModel to get the String value from, possibly null
Returns:
the String value, or null if the model is empty
Throws:
TemplateModelException - the String value of the template model could not be determined

getAsStringOrEmpty

public static java.lang.String getAsStringOrEmpty(TemplateModel model)
                                           throws TemplateModelException

Determines the given TemplateModel's String value. This is a simple case of getting the TemplateScalarModel.getAsString() value from the model, assuming it implements TemplateScalarModel. If it's a TemplateNumberModel, we return a base-10 encoding of the number value. If it's empty or null, return the empty string.

Parameters:
model - the TemplateModel to get the String value from, possibly null
Returns:
the String value, or the empty String if the model is empty
Throws:
TemplateModelException - the String value of the template model could not be determined
Since:
1.9

getAsNumber

public static long getAsNumber(TemplateModel model)
                        throws TemplateModelException

Determines the given TemplateModel's long value. This is a simple case of getting the TemplateNumberModel.getAsNumber() value from the model, assuming it implements TemplateNumberModel. If it's empty or null, return 0.

Parameters:
model - the TemplateModel to get the long value from, possibly null
Throws:
TemplateModelException - the String value of the template model could not be determined

isEqual

public static boolean isEqual(TemplateModel leftModel,
                              TemplateModel rightModel)
                       throws TemplateModelException
Determines whether both sides of an expression are equal. Can deal with null values on either side of the test.

Parameters:
leftModel - the left-hand TemplateModel to be compared, possibly null
rightModel - the right-hand TemplateModel to be compared, possibly null
Returns:
true if the models are equal in value, otherwise false
Throws:
TemplateModelException - the template models could not be compared

compareNumbers

public static long compareNumbers(TemplateModel leftModel,
                                  TemplateModel rightModel)
                           throws TemplateModelException
Compares two numeric expressions. Can deal with null values on either side of the comparison.

Parameters:
leftModel - the left-hand TemplateModel to be compared, possibly null
rightModel - the right-hand TemplateModel to be compared, possibly null
Returns:
<0 if the left model is less than the right model, >0 if the left model is greater than the right model, or == 0 if the models are the same
Throws:
TemplateModelException - the template models could not be compared