This seems like a lot of extra work for a relatively minor issue, and it might significantly affect performance - code needs to be really tight when dealing with the buffer stuff. I really think the best way to deal with this is to monkeypatch a post-processor into #render.
- Nathan Wincent Colaiuta wrote: > On 8 feb, 15:32, "Nathan Weizenbaum" <[EMAIL PROTECTED]> wrote: > >> This is why we use the newline escapes: nested templates don't touch them at >> all. Note that your solution still falls down if you have a three-deep >> nested template. >> > > I hadn't tested that so I'll take your word for it. I imagine I could > avoid that by echoing the markers through rather than suppressing > them; I probably should have done that anyway. Of course, even if it > works with any level of nesting it's still a hack. > > I have another nascent idea that may work and which I like much better > than this hacky one I've shown so far. Basically if I can train > push_script to accept an Array parameter rather than a straight String > then it could act in a way that preserves whitespace when appropriate > and leaves it untouched otherwise through any number of nested > template levels. > > Basically it would act as follows: > > * if param is a String, act just like it does now > * if param is an Array, iterate and handle each item as it does now > * if param (or any item during iteration) is a special String > subclass, say PreservingString, suppress the tabulation and instead of > appending the result to the existing @buffer, start a new one marked > as preserving whitespace and stick the result in there (not sure yet > whether this should be a Haml::Buffer subclass or just a normal > instance with an attribute set) > * this would be accompanied by a helper method that instantiates one > of these PreservingString instances > > Then elsewhere in the code (at the Engine level I guess, haven't > explored it yet) I'd need to make changes so that it was prepared to > handle multiple buffers instead of just one. Evidently I'd need to > change the code wherever it assumed a single buffer and replace that > with an Array. Probably haven't explained my idea very well but > hopefully you get some idea of what I'm suggesting. > > It's just an idea which I haven't tried to put into practice yet so it > might be flawed. > > Cheers, > Wincent > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Haml" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/haml?hl=en -~----------~----~----~----~------~----~------~--~---
