Package freemarker.core
Class CommonMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- java.lang.Object
-
- freemarker.core.OutputFormat
-
- freemarker.core.MarkupOutputFormat<MO>
-
- freemarker.core.CommonMarkupOutputFormat<MO>
-
- Direct Known Subclasses:
CombinedMarkupOutputFormat
,HTMLOutputFormat
,RTFOutputFormat
,XMLOutputFormat
public abstract class CommonMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel> extends MarkupOutputFormat<MO>
Common superclass for implementingMarkupOutputFormat
-s that use aCommonTemplateMarkupOutputModel
subclass.- Since:
- 2.3.24
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
CommonMarkupOutputFormat()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description MO
concat(MO mo1, MO mo2)
Returns aTemplateMarkupOutputModel
that contains the content of bothTemplateMarkupOutputModel
objects concatenated.MO
fromMarkup(java.lang.String markupText)
Wraps aString
that's already markup toTemplateMarkupOutputModel
interface, to indicate its format.MO
fromPlainTextByEscaping(java.lang.String textToEsc)
Converts aString
that's assumed to be plain text toTemplateMarkupOutputModel
, by escaping any special characters in the plain text.java.lang.String
getMarkupString(MO mo)
Returns the content as markup text; nevernull
.java.lang.String
getSourcePlainText(MO mo)
If thisTemplateMarkupOutputModel
was created withMarkupOutputFormat.fromPlainTextByEscaping(String)
, it returns the original plain text, otherwise it returnsnull
.boolean
isAutoEscapedByDefault()
Tells if by default auto-escaping should be on for this format.boolean
isEmpty(MO mo)
Returns if the markup is empty (0 length).boolean
isOutputFormatMixingAllowed()
Tells if this output format allows insertingTemplateMarkupOutputModel
-s of another output formats into it.protected abstract MO
newTemplateMarkupOutputModel(java.lang.String plainTextContent, java.lang.String markupContent)
Creates a newCommonTemplateMarkupOutputModel
that's bound to thisOutputFormat
instance.abstract void
output(java.lang.String textToEsc, java.io.Writer out)
Equivalent to callingMarkupOutputFormat.fromPlainTextByEscaping(String)
and thenMarkupOutputFormat.output(TemplateMarkupOutputModel, Writer)
, but the implementation may uses a more efficient solution.void
output(MO mo, java.io.Writer out)
Prints the parameter model to the output.-
Methods inherited from class freemarker.core.MarkupOutputFormat
escapePlainText, isLegacyBuiltInBypassed
-
Methods inherited from class freemarker.core.OutputFormat
getMimeType, getName, toString, toStringExtraProperties
-
-
-
-
Method Detail
-
fromPlainTextByEscaping
public final MO fromPlainTextByEscaping(java.lang.String textToEsc) throws TemplateModelException
Description copied from class:MarkupOutputFormat
Converts aString
that's assumed to be plain text toTemplateMarkupOutputModel
, by escaping any special characters in the plain text. This corresponds to?esc
, or, to outputting with auto-escaping if that wasn't usingMarkupOutputFormat.output(String, Writer)
as an optimization.- Specified by:
fromPlainTextByEscaping
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
TemplateModelException
- See Also:
MarkupOutputFormat.escapePlainText(String)
,MarkupOutputFormat.getSourcePlainText(TemplateMarkupOutputModel)
-
fromMarkup
public final MO fromMarkup(java.lang.String markupText) throws TemplateModelException
Description copied from class:MarkupOutputFormat
Wraps aString
that's already markup toTemplateMarkupOutputModel
interface, to indicate its format. This corresponds to?noEsc
. (This methods is allowed to throwTemplateModelException
if the parameter markup text is malformed, but it's unlikely that an implementation chooses to parse the parameter until, and if ever, that becomes necessary.)- Specified by:
fromMarkup
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
TemplateModelException
- See Also:
MarkupOutputFormat.getMarkupString(TemplateMarkupOutputModel)
-
output
public final void output(MO mo, java.io.Writer out) throws java.io.IOException, TemplateModelException
Description copied from class:MarkupOutputFormat
Prints the parameter model to the output.- Specified by:
output
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
java.io.IOException
TemplateModelException
-
output
public abstract void output(java.lang.String textToEsc, java.io.Writer out) throws java.io.IOException, TemplateModelException
Description copied from class:MarkupOutputFormat
Equivalent to callingMarkupOutputFormat.fromPlainTextByEscaping(String)
and thenMarkupOutputFormat.output(TemplateMarkupOutputModel, Writer)
, but the implementation may uses a more efficient solution.- Specified by:
output
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
java.io.IOException
TemplateModelException
-
getSourcePlainText
public final java.lang.String getSourcePlainText(MO mo) throws TemplateModelException
Description copied from class:MarkupOutputFormat
If thisTemplateMarkupOutputModel
was created withMarkupOutputFormat.fromPlainTextByEscaping(String)
, it returns the original plain text, otherwise it returnsnull
. Useful for converting between different types of markups, as if the source format can be converted to plain text without loss, then that just has to be re-escaped with the target format to do the conversion.- Specified by:
getSourcePlainText
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
TemplateModelException
-
getMarkupString
public final java.lang.String getMarkupString(MO mo) throws TemplateModelException
Description copied from class:MarkupOutputFormat
Returns the content as markup text; nevernull
. If thisTemplateMarkupOutputModel
was created withMarkupOutputFormat.fromMarkup(String)
, it might returns the original markup text literally, but this is not required as far as the returned markup means the same. If thisTemplateMarkupOutputModel
wasn't created withMarkupOutputFormat.fromMarkup(String)
and it doesn't yet have the markup, it has to generate the markup now.- Specified by:
getMarkupString
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
TemplateModelException
-
concat
public final MO concat(MO mo1, MO mo2) throws TemplateModelException
Description copied from class:MarkupOutputFormat
Returns aTemplateMarkupOutputModel
that contains the content of bothTemplateMarkupOutputModel
objects concatenated.- Specified by:
concat
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
TemplateModelException
-
isEmpty
public boolean isEmpty(MO mo) throws TemplateModelException
Description copied from class:MarkupOutputFormat
Returns if the markup is empty (0 length). This is used by at least?hasContent
.- Specified by:
isEmpty
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- Throws:
TemplateModelException
-
isOutputFormatMixingAllowed
public boolean isOutputFormatMixingAllowed()
Description copied from class:OutputFormat
Tells if this output format allows insertingTemplateMarkupOutputModel
-s of another output formats into it. Iftrue
, the foreignTemplateMarkupOutputModel
will be inserted into the output as is (like if the surrounding output format was the same). This is usually a bad idea to allow, as such an event could indicate application bugs. If this method returnsfalse
(recommended), then FreeMarker will try to assimilate the inserted value by converting its format to this format, which will currently (2.3.24) cause exception, unless the inserted value is made by escaping plain text and the target format is non-escaping, in which case format conversion is trivially possible. (It's not impossible that conversions will be extended beyond this, if there will be demand for that.)true
value is used byUndefinedOutputFormat
.- Specified by:
isOutputFormatMixingAllowed
in classOutputFormat
-
isAutoEscapedByDefault
public boolean isAutoEscapedByDefault()
Description copied from class:MarkupOutputFormat
Tells if by default auto-escaping should be on for this format. It should betrue
if you need to escape on most of the places where you insert values.- Specified by:
isAutoEscapedByDefault
in classMarkupOutputFormat<MO extends CommonTemplateMarkupOutputModel>
- See Also:
Configuration.setAutoEscapingPolicy(int)
-
newTemplateMarkupOutputModel
protected abstract MO newTemplateMarkupOutputModel(java.lang.String plainTextContent, java.lang.String markupContent) throws TemplateModelException
Creates a newCommonTemplateMarkupOutputModel
that's bound to thisOutputFormat
instance.- Throws:
TemplateModelException
-
-