freemarker
freemarker copied to clipboard
Add fine-grained mixed-content support to markup output formats.
The existing logic is all-or-nothing: either an output format permits mixed content, in which case output of any other format may be interspersed in it, or it does not - and mixed content is completely disallowed. (The latter is recommended, as mixed content often indicates an application bug).
This PR enables an output format to enable mixed content while implementing an outputForeign
method, which can inspect the foreign output's MIME type, and either pass it through, block it, or even output the foreign-format content using the new format. This e.g. enables a custom format to embed (and custom-escape) HTML that was provided in the data model as TemplateHTMLOutputModel
rather than a plain string.