Let's be clear with exact examples:
With B2/ rule what do we get for
I like this
#if($a==1)
apple
#else
orange
#end
blabla
I would like to get
I like this
apple
blabla
Which is passed to the following rendered.
I agree that white spaces should be non meaningful
I like this
#if($a==1)
apple
#else
orange
#end
blabla
Should get the exact same result
I like this
apple
blabla
Basically I think it should give about the same result it used to get in
syntax 1.0
Ludovic
Sergiu Dumitriu a écrit :
> Ludovic Dubost wrote:
>
>> Can't we make NL be removed only before velocity directives:
>>
>> (\n\s+)#if
>> (\n\s+)#foreach
>> (\n\s+)#set
>> (\n\s+)#else
>> (\n\s+)#elseif
>>
>> This would sound much better to me
>>
>
> Note that velocity also has its own newline removal rules, which we
> can't control. This means that even if we want it, we can't introduce a
> newline here:
>
> Start the line #set($x = 'x')
> ... and this is on the same line
>
>
>> Ludovic
>>
>>
>>
>> Vincent Massol a écrit :
>>
>>> On Apr 17, 2009, at 12:01 AM, Vincent Massol wrote:
>>>
>>>
>>>
>>>> On Apr 16, 2009, at 11:49 PM, Ludovic Dubost wrote:
>>>>
>>>>
>>>>
>>>>> I'm a bit afraid by B2.. It sound really weird to me to have all this
>>>>>
>>>>> some text $nl
>>>>> $sp next line
>>>>>
>>>>> #if (...)
>>>>> this goes on the same line
>>>>> #something(...) <-- this is also on the same line
>>>>> #end
>>>>>
>>>>> $nl $nl
>>>>> This a new paragraph
>>>>>
>>>>>
>>>>> Not produce something that would look more like what is typed.
>>>>>
>>>>>
>>> The problem is that this is scripting and some construct take several
>>> lines for ex and you don't want to put everything on the same line
>>> when you code so we definitely not want to display what is typed.
>>>
>>> -Vincent
>>>
>>>
>>>
>>>>> The stripping of leading white spaces sounds ok to me.
>>>>> But the stripping of new lines sounds bad to me.
>>>>>
>>>>> We can still use ## for spacing out code if I don't want a line for
>>>>> it.
>>>>> This sounds a good solution to me.
>>>>>
>>>>>
>>>> B1 means that have to put velocity code on the same line if it goes
>>>> on the same line and we cannot align it on following lines (as shown
>>>> in the example below).
>>>>
>>>> For ex:
>>>>
>>>> hello #if (...)
>>>> ...
>>>> #end
>>>>
>>>> The following will generate an extra NL:
>>>>
>>>> hello
>>>> #if (...)
>>>> ...
>>>> #end
>>>>
>>>> Right now we already have an important issue in velocity code that
>>>> make it awkward and generate lots of problems: the fact that code
>>>> cannot be spaced out and empty lines generate paragraphs. With B1 we
>>>> have the same problems but worse since NL are significants.
>>>>
>>>>
>>>>
>>>>> I don't really understand the issur with line breaks with the new
>>>>> line
>>>>> starting with space.
>>>>>
>>>>>
>>>> If you strip leading spaces you need a way to force a leading space
>>>> when you have a line break and want to have the second line with
>>>> leading spaces.
>>>>
>>>>
>>>>
>>>>> For splitting code over 2 lines, could we use \ at the end of the
>>>>> line
>>>>> to remove the new line ?
>>>>>
>>>>>
>>>> \\ forces a line break so it's the opposite. You don't need \\ with
>>>> B1 since NL are significant.
>>>>
>>>> BTW if you want to see more exampleq, see
>>>> http://jira.xwiki.org/jira/browse/XWIKI-3107?focusedCommentId=37707&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_37707
>>>>
>>>> Another example is:
>>>>
>>>> hello #if (...)
>>>> ...
>>>> #end #if (...)
>>>> ...
>>>>
>>>> meaning you have to make sure you put velocity commands one next to
>>>> the other or they'll be displayed on the next line.
>>>>
>>>> Thanks
>>>> -Vincent
>>>>
>>>>
>>>>
>>>>> So I'm +1 B1/ -1 on B2/
>>>>>
>>>>> I'm not sure to understand the implications of A/
>>>>>
>>>>> Vincent Massol a écrit :
>>>>>
>>>>>
>>>>>> Hi devs,
>>>>>>
>>>>>> We need to come to a conclusion for handling New Lines(NL) and white
>>>>>> spaces (WS) in HTML and Velocity Macro.
>>>>>> If you remember from http://markmail.org/thread/mhqhxnz5twhev5se the
>>>>>> current problem is that we cannot indent scripts since WS and NL are
>>>>>> meaningful.
>>>>>>
>>>>>> I'd like to reiterate the proposal that was sent but not enough
>>>>>> people
>>>>>> voted on it (only Thomas did).
>>>>>>
>>>>>> A) For the HTML macro, we propose to make the following changes:
>>>>>> - strip NL/WS between elements (elements that don't accept CDATA)
>>>>>> - strip leading/trailing NL/WS for element content before passing
>>>>>> them
>>>>>> to the wiki syntax parser
>>>>>>
>>>>>> B) for the Velocity macro we have 2 choices I can think of:
>>>>>>
>>>>>> 1) strip all leading spaces for all lines (but keep NL)
>>>>>>
>>>>>> Note that this means that inside a velocity macro you wouldn't be
>>>>>> able
>>>>>> to have a line break with the new line starting with spaces without
>>>>>> escaping the leading space with ~(space).
>>>>>> Note also that this means we will not be able to add extra new lines
>>>>>> to format the text nicely (since that would add new paragraphs) or
>>>>>> split a single line into several lines for extra readability. This
>>>>>> is
>>>>>> the case today with the old syntax and it's a pain not to be able to
>>>>>> aerate the text with empty lines.
>>>>>>
>>>>>> Ex:
>>>>>>
>>>>>> some text
>>>>>> ~ next line #if (...) this goes on the same line #something(...)
>>>>>> #end
>>>>>>
>>>>>> This is a new paragraph
>>>>>>
>>>>>> In this example notice that we need the velocity #if to be on the
>>>>>> same
>>>>>> line since NL are significant.
>>>>>>
>>>>>> 2) strip all leading spaces for all lines + remove all NL too.
>>>>>>
>>>>>> This means we need to ensure we still have one space remaining
>>>>>> between
>>>>>> "words" (same as HTML).
>>>>>> The user would use something like $nl and $sp to explicitely enter
>>>>>> new
>>>>>> lines and spaces.
>>>>>> The advantage is that you control completely the formatting (no
>>>>>> magic
>>>>>> anymore) at the cost of a little extra work (adding the $nl where
>>>>>> required).
>>>>>> Basically this means the same pros/cons as when you work with HTML
>>>>>> where you need to explicitly add <br/> when you want new lines.
>>>>>>
>>>>>> Ex:
>>>>>>
>>>>>> some text $nl
>>>>>> $sp next line
>>>>>>
>>>>>> #if (...)
>>>>>> this goes on the same line
>>>>>> #something(...) <-- this is also on the same line
>>>>>> #end
>>>>>>
>>>>>> $nl $nl
>>>>>> This a new paragraph
>>>>>>
>>>>>> Note: I've aerated the text by putting extra new lines around the
>>>>>> velocity #if to show that it would work.
>>>>>>
>>>>>> 3) Same as 1) + strip 1 NL (i.e. line breaks) and only allow
>>>>>> "forced"
>>>>>> line breaks with "\\".
>>>>>>
>>>>>> The exact algorithm is: if there's 1 NL remove it, if there's more
>>>>>> than 1 leave them.
>>>>>>
>>>>>> Ex:
>>>>>>
>>>>>> some text\\
>>>>>> ~ next line
>>>>>> #if (...)
>>>>>> this goes on the same line
>>>>>> #something(...) <-- this is also on the same line
>>>>>> #end
>>>>>>
>>>>>> This a new paragraph
>>>>>>
>>>>>> I'm +1 for A)
>>>>>>
>>>>>> For B) I think the most flexible is 2) but I'm wondering if it's too
>>>>>> big a change for our users or not. If not 2) then 3).
>>>>>>
>>>>>> Thanks
>>>>>> -Vincent
>>>>>>
>>>>>>
>
>
>
--
Ludovic Dubost
Blog: http://blog.ludovic.org/
XWiki: http://www.xwiki.com
Skype: ldubost GTalk: ldubost
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs