[
https://issues.apache.org/jira/browse/VELOCITY-787?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12928618#action_12928618
]
Christoph Reck commented on VELOCITY-787:
-----------------------------------------
I don't think this needs to be solved within the engine. In the past I've
solved this through a controller template, string interpolation, and a file
writer tool. Example:
#macro( createCode $params )
## ... do something wise here
#end
...
#foreach ($file $list)
#set( $fileContents = "#createCode(...)" )
$FileTool.write($file, $fileContents)
#end
> Write to multiple files, controlled by template directives
> ----------------------------------------------------------
>
> Key: VELOCITY-787
> URL: https://issues.apache.org/jira/browse/VELOCITY-787
> Project: Velocity
> Issue Type: New Feature
> Components: Engine
> Affects Versions: 2.0
> Environment: All environments
> Reporter: Don Mendelson
>
> For some purposes, such as code generation, it would be very desirable to
> output to multiple files from the same context. For example, to generate code
> for a C++ class, two files must be generated - a header and implementation
> file. Rendering could be driven by the same context in both cases, which
> would desribe the class name, method signatures, etc. Currently this must be
> done by running the engine twice - once with a header template and again with
> an implementation file template.
> Furthermore, it would desirable to determine the output file names during
> rendering, based on a combination of template directives and data in the
> context. To use the code generation example, the header and implementation
> file names would be determined by the name of the class to be generated.
> This is not possible with the current method signature of Directive:
> public boolean render(InternalContextAdapter context, Writer writer, Node
> node)
> An output directive would want to change the writer to a different instance
> of FileWriter, for instance. But since Java passes object references by
> value, the writer object cannot be replaced.
> The proposal is to provide a method to install a new instance of Writer
> during rendering of a template. This would support both writing multiple
> outputs in one run of the engine as well as controlling the file names of the
> outputs.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]