Re: Leading/trailing newlines
"C.J. Adams-Collier" <[email protected]> Sun, 23 Sep 2007 11:44:12 -0700
| Newsgroups | gmane.comp.web.mason.devel |
|---|---|
| Message-ID | <[email protected]> |
heh. sounds useful to me. it would be nice to have > 1 field for the <%flag> block :) can you cobble together a couple of real world use cases, determine the "correct" name for the flag, write up some docs, put together some .t bits and submit a udiff to the list? You'd probably see some traction then. oh, and no flag set means status quo On 9/23/07, Alex Robinson <[email protected]> wrote: > >It would be expensive, but I'm not sure it'd be _too_ expensive. > > Well if it really was, what about having the default being 'never' > (with no overrides allowed) and using the lazy function definition > pattern (sorry, don't know what it's called in Perl) to return an > anonymous sub that redefines the relevant bit to match the > user-chosen default behaviour? > > Though as it's just checking 2 hash values (directly rather than > through the api) and then doing a simple substitution, I would have > thought that paled into insignifance compared to the overhead of > actually calling the component in the first place. > > >However, if the goal is to provide a feature similar to what TT provides > >for controlling newlines/whitespace _around template directives_, then it > >should be done at compile time only. > > OK. I'm just throwing it out there, you know.... Stirring what's on > the back burner. > > >What Alex was describing would affect all the output, including the output > >from interpolated variables/functions/etc. I think this would be too much > >for most people. > > But it would only apply to component calls. How would it affect > interpolated variables? As for functions, I'm not clear as to what > you mean (my bad, not yours ;). My proposed solution, targets > components pure and simple (be they regular components, top level > components or def or method components). I don't see what else would > get affected. I'm not suggesting we patch $m->print ;) > > Oh, I see what you mean. I think. > > If, for absurd scenario, a component simply consisted of > > >>> > <% $ARGS{output} %> > <<< > > and $ARGS{output} purposefully contained additional newlines at start > and end, you'd be screwed. > > Unless of course you set > > <%flags> > filter_newlines => 'none > </%flags> > # or even 'one' in the more likely situation that it's in a def or method block > > And hell, it only takes wrapping the newlines with any character at > all for it to resist destruction. Previous discussion have broken > down on the premise that output would not be very predictable, > figuring out which bits of the compiler to twiddle. The solution I've > sketched out seems to be utterly predictable. And easily > controllable. If that can be achieved in a Compiler-based solution, > then that's great :) > > So, leaving aside the issue of Compiler vs Request, what about the > very concept of 'filter_newlines' (or better name) as a) Interp > parameter and b) per-component flag? Would those still be good to go > for a compiler-based version or does someone have a better way? > > > > > The other thing I forgot, is that something similar should probably > happen to $m->content as well. (In this case, Dave's point about > interpolated values does come home to roost, but again the flag of > choice could be set on the component with content to prevent overly > greedy stripping.) > > > > By the way CJ, I haven't provided tests, because, well I wanted to > run this up the flagpole first and see whether it a) met with > approval and b) if so, what form it should take first. > > Currently, I think it's falling down at a). *I* like it, but that's > because it works for me and I haven't yet seen a working > compiler-based version. But I'm not one of the core Mason dev team, > but rather a designer who codes and who wants to not have to think > about whether a given component needs a filter block to soak up > surplus space ;) > -- moo. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/