Have you read my answer on SO, i.e., using DirectiveCallPlace (public API-s)? Did you try to go in that direction?
On Thu, Nov 2, 2023 at 8:40 PM Cavan Morris <cavanmor...@softcoil.com> wrote: > Thank you Daniel. > I was able to solve the problem in my case by creating my own util class in > the freemarker.core package inside my own project's source tree. This > allowed me to access the package-private deprecated methods that I believe > are used for <#nested> handling. > > I plan to clean it up a bit and submit a PR once I have a moment away from > my current project. My thought is that even though this relies on > deprecated methods, those methods are required for <#nested> support so if > they are refactored in the future there will have to be similar > functionality supplied by the refactor. It should be simple to maintain my > PR in that case. > > Here is a preview of what I have now. At a minimum it will need some > modifications to use the Freemarker logging system and I will need to find > an appropriate place for it in the existing source. Any thoughts > appreciated. > > public static String getRawMacroContent(boolean trim) { > log.trace("Getting Raw Macro Content"); > > StringBuilder sb = new StringBuilder(); > > Environment environment = Environment.getCurrentEnvironment(); > Macro.Context invokingMacroContext = > environment.getCurrentMacroContext(); > TemplateObject callPlace = invokingMacroContext.callPlace; > TemplateElement[] nestedContentBuffer = callPlace instanceof > TemplateElement ? ((TemplateElement) callPlace).getChildBuffer() : > null; > if (nestedContentBuffer != null) { > for (TemplateElement templateElement : nestedContentBuffer) { > log.trace("templateElement = {}", templateElement); > sb.append(templateElement.getSource()); > } > } > > if(trim) { > return sb.toString().trim(); > } else { > return sb.toString(); > } > } > > > > On Thu, Nov 2, 2023 at 10:51 AM Daniel Dekany <daniel.dek...@gmail.com> > wrote: > > > Kind of a niche use case... I would prefer avoiding much complexity and > > backward compatibility burden for it. But, maybe it's actually already > > doable. See my answer on Stack Overflow. > > > > On Mon, Oct 30, 2023 at 6:57 PM Cavan Morris <cavanmor...@softcoil.com> > > wrote: > > > > > Hello All, > > > I am developing an internal content management system using freemarker > > > templates and have run across a speed bump I've detailed in > > > a stackoverflow question here: > > > > > > > > > https://stackoverflow.com/questions/77390595/freemarker-how-to-get-unprocessed-content-of-custom-directive > > > > > > The long and short of it is that I would like to access the RAW, > > > unprocessed content of the <#nested/> tag in my macro. I've looked > > through > > > the source for a way to do this and haven't found one. If it exists > > > please let me know! > > > > > > If not, I think it would be very useful to add this feature. Perhaps > > > through a simple flag on the existing <#nested> tag? Perhaps with the > > > addition of a new <#nested_raw> tag? > > > > > > Please let me know if you have any questions or if there is a way that > I > > > can help make this happen. > > > > > > Thank you! > > > > > > > > > -- > > Best regards, > > Daniel Dekany > > > -- Best regards, Daniel Dekany