in freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/PrintTextWithDocgenSubstitutionsDirective.java [216:251]
private void printValue(String varName, TemplateModel varValue) throws TemplateException,
IOException {
Object formattedValue;
if (varValue instanceof TemplateNumberModel) {
try {
formattedValue = env.getTemplateNumberFormat().format((TemplateNumberModel) varValue);
} catch (TemplateValueFormatException e) {
throw newFormattingFailedException(varName, e);
}
} else if (varValue instanceof TemplateDateModel) {
TemplateDateModel tdm = (TemplateDateModel) varValue;
try {
formattedValue = env.getTemplateDateFormat(tdm.getDateType(), tdm.getAsDate().getClass())
.format(tdm);
} catch (TemplateValueFormatException e) {
throw newFormattingFailedException(varName, e);
}
} else if (varValue instanceof TemplateScalarModel) {
formattedValue = ((TemplateScalarModel) varValue).getAsString();
} else if (varValue instanceof TemplateBooleanModel) {
String[] booleanStrValues = env.getBooleanFormat().split(",");
formattedValue = ((TemplateBooleanModel) varValue).getAsBoolean()
? booleanStrValues[0] : booleanStrValues[1];
} else {
throw new TemplateException(
"Docgen custom variable " + StringUtil.jQuote(varName)
+ " has an unsupported type: "
+ ClassUtil.getFTLTypeDescription(varValue),
env);
}
if (formattedValue instanceof String) {
HTMLOutputFormat.INSTANCE.output((String) formattedValue, out);
} else {
HTMLOutputFormat.INSTANCE.output((TemplateHTMLOutputModel) formattedValue, out);
}
}