public class NormalizeNewlines extends java.lang.Object implements TemplateTransformModel
Transformer that supports FreeMarker legacy behavior: all newlines appearing within the transformed area will be transformed into the platform's default newline. Unlike the old behavior, however, newlines generated by the data model are also converted. Legacy behavior was to leave newlines in the data model unaltered.
Usage:
From java:
SimpleHash root = new SimpleHash(); root.put( "normalizeNewlines", new freemarker.template.utility.NormalizeNewlines() ); ...
From your FreeMarker template:
<transform normalizeNewlines> <html> <head> ... <p>This template has all newlines normalized to the current platform's default.</p> ... </body> </html> </transform>
NOTHING
Constructor and Description |
---|
NormalizeNewlines() |
Modifier and Type | Method and Description |
---|---|
java.io.Writer |
getWriter(java.io.Writer out,
java.util.Map args)
Returns a writer that will be used by the engine to feed the transformation input to the transform.
|
void |
transform(java.io.Reader in,
java.io.Writer out)
Performs newline normalization on FreeMarker output.
|
public java.io.Writer getWriter(java.io.Writer out, java.util.Map args)
TemplateTransformModel
This method should not throw RuntimeException
, nor IOException
that wasn't caused by writing to
the output. Such exceptions should be catched inside the method and wrapped inside a
TemplateModelException
. (Note that setting Configuration.setWrapUncheckedExceptions(boolean)
to
true
can mitigate the negative effects of implementations that throw RuntimeException
-s.)
getWriter
in interface TemplateTransformModel
out
- the character stream to which to write the transformed outputargs
- the arguments (if any) passed to the transformation as a map of key/value pairs where the keys are
strings and the arguments are TemplateModel
instances. This is never null
. (If you
need to convert the template models to POJOs, you can use the utility methods in the
DeepUnwrap
class. Though it's recommended to work with TemplateModel
-s directly.)Writer
to which the engine will write the content to transform, or null
if the
transform does not support nested content (body). The returned Writer
may implements the
TransformControl
interface if it needs advanced control over the evaluation of the nested
content. FreeMarker will call Writer.close()
after the transform end-tag. Writer.close()
must not close the Writer
received as the out
parameter (so if you are using a
FilterWriter
, you must override FilterWriter.close()
, as by default that closes the
wrapped Writer
). Since 2.3.27 its also allowed to return the out
writer as is, in which
case it won't be closed.public void transform(java.io.Reader in, java.io.Writer out) throws java.io.IOException
in
- the input to be transformedout
- the destination of the transformationjava.io.IOException