Re: comments trump newline?
"Zemian Deng" <[email protected]>
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <[email protected]> |
Bug filed at http://sourceforge.net/tracker/index.php?func=detail&aid=2002691&group_id=794&atid=100794 On Wed, Jun 25, 2008 at 11:33 AM, Jonathan Revusky <[email protected]> wrote: > On Wed, Jun 25, 2008 at 4:17 PM, Zemian Deng <[email protected]> wrote: >> Okay, I did more experiments, and I got even more confused. :( >> >> Example1 template: >> ONE >> <#-- c1 --> >> <#nt> >> <#-- c2 --> >> THREE >> >> Example1 output: >> ONE >> THREE > > Hmm, that's probably a bug, even though it kind of makes sense if you > get into a very complex mental model of what the whitespace stripping > does. I mean, it has to do with the fact that the whitespace trimming > algorithm is actually stripping the whitespace at two levels. It > ignores the whitespace between comments, or between macros, or, for > example, between a command and a macro, that's WS trimming at the > block or element level, let's say, and there is WS trimming at the > line by line level. The <#nt> doesn't work as expected above, because > even if you say not to strip the whitespace at the line by line level, > it is still stripping it at the block level. Of course, that's a > description of why it is that way, I'm not saying it's the right > thing. > >> >> Example2 template: >> ONE >> <#-- c1 --> >> X<#-- c2 --> >> <#-- c3 --> >> THREE >> >> Example2 output: >> ONE >> XTHREE > > Well, that is working as it is described as working, which is that it > is getting rid of the whitespace between the comments c2 and c3, which > includes the newline. So, in principle, if you wanted the newline to > appear, you would have to write: > > <#--c2 -->X > <#-- c3 --> > > and then what is between the two comments is not whitespace. > > As Daniel, said, it is probably true that stripping the whitespace > between two comments is not the best behavior. I guess I was thinking > of the whitespace between two macros and between a comment and a > macro, which should almost always be stripped, and I generalized that > to the whitespace between any two non-outputting elements, and that > included between two comments. > > Maybe we'll change this for 2.4. As a practical matter, I don't think > this is causing people a lot of problems out there. Of course, most > people are outputting HTML anyway, so it doesn't affect them in most > cases. Of course another way of looking at it is that there is little > reason to write consecutive comments anyway, since you could just > write: > > <# -- c2 > c3 --> > > so you could conceptualize it that the consecutive comments are > getting fused into one comment and the intervening whtiespace is part > of that fused comment... > >> >> So <#nt> has no effect? and what happens in Example2? > > Well, I guess the rule about ignoring whitespace between two > non-outputting elements, in particular between two comments, has some > anti-intuitive results in these cases. > > JR > >> >> Thanks, >> -Z >> >> On Wed, Jun 25, 2008 at 8:41 AM, Zemian Deng <[email protected]> wrote: >>> +1 with Daniel. >>> >>> Hello Jonathan, >>> Yes I can use <#ftl strip_whitespace=false>, but that affect the >>> entire template, and I only have problem for that single new line >>> space. >>> >>> I have to say this expected behavior is a bit confusing. If you say >>> "Whitespace between non-outputting elements (comments among them) is >>> stripped. ", then to me, it's white-space that are enclosed will be >>> striped, but a well defined separated two non-outputting elements. >>> >>> For example if I have these >>> <#if cond> >>> >>> </#if> >>> >>> or even this >>> <#-- c1 >>> >>> --> >>> >>> Then the whitespace is stripped is WHAT I expected, but this >>> <#-- c1 --> >>> >>> <#-- c2 --> >>> >>> Shouldn't strip my whitespace in between. >>> >>> This is just my feedback as user. >>> >>> -Z >>> >>> On Wed, Jun 25, 2008 at 5:16 AM, Daniel Dekany <[email protected]> wrote: >>>> Wednesday, June 25, 2008, 10:14:24 AM, Jonathan Revusky wrote: >>>> >>>>> This is the expected behavior, unless your template begins with something like >>>>> <#ftl strip_whitespace=false> >>>>> >>>>> Whitespace between non-outputting elements (comments among them) is >>>>> stripped. >>>> >>>> I hope you don't keep this behavior with comments in 2.4. A comment >>>> should not influence the output in any way, except that the whitespace >>>> in its own line should be removed if the comment is the only thing in >>>> that line (beside whitespace). >>>> >>>>> Also, the whitespace on a line that contains only non-outputting >>>>> elements is ignored. >>>> >>>> Except that for user-defined FTL tags you don't know which is >>>> outputting, so it's not entirely true. >>>> >>>>> JR >>>>> >>>>> On Wed, Jun 25, 2008 at 6:39 AM, Zemian Deng <[email protected]> wrote: >>>>>> Hi list, >>>>>> >>>>>> I have this template: >>>>>> >>>>>> ONE >>>>>> <#-- comment here --> >>>>>> TWO >>>>>> <#-- --> >>>>>> THREE >>>>>> ===== >>>>>> ONE >>>>>> <#-- comment here --> >>>>>> >>>>>> <#-- --> >>>>>> THREE >>>>>> >>>>>> And I get this output: >>>>>> ONE >>>>>> TWO >>>>>> THREE >>>>>> ===== >>>>>> ONE >>>>>> THREE >>>>>> >>>>>> Should I be getting a empty line above the second THREE? I tried with >>>>>> multiple empty lines between comments, and they all get stripped out. >>>>>> Is this expected? >>>>>> >>>>>> Thanks, >>>>>> -Z >>>>>> >>>>>> ------------------------------------------------------------------------- >>>>>> Check out the new SourceForge.net Marketplace. >>>>>> It's the best place to buy or sell services for >>>>>> just about anything Open Source. >>>>>> http://sourceforge.net/services/buy/index.php >>>>>> _______________________________________________ >>>>>> FreeMarker-user mailing list >>>>>> [email protected] >>>>>> https://lists.sourceforge.net/lists/listinfo/freemarker-user >>>>>> >>>>> >>>>> ------------------------------------------------------------------------- >>>>> Check out the new SourceForge.net Marketplace. >>>>> It's the best place to buy or sell services for >>>>> just about anything Open Source. >>>>> http://sourceforge.net/services/buy/index.php >>>>> _______________________________________________ >>>>> FreeMarker-user mailing list >>>>> [email protected] >>>>> https://lists.sourceforge.net/lists/listinfo/freemarker-user >>>> >>>> -- >>>> Best regards, >>>> Daniel Dekany >>>> >>>> >>>> ------------------------------------------------------------------------- >>>> Check out the new SourceForge.net Marketplace. >>>> It's the best place to buy or sell services for >>>> just about anything Open Source. >>>> http://sourceforge.net/services/buy/index.php >>>> _______________________________________________ >>>> FreeMarker-user mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/freemarker-user >>>> >>> >> >> ------------------------------------------------------------------------- >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> FreeMarker-user mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/freemarker-user >> > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > FreeMarker-user mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/freemarker-user > ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php