On Jun 6, 2009, at 7:07 PM, Thomas Mortagne wrote:
On Sat, Jun 6, 2009 at 18:48, Vincent
Massol<vincent(a)massol.net>
wrote:
On Jun 6, 2009, at 6:02 PM, Thomas Mortagne wrote:
I would need some ideas for the differents modes
names
configuration.
What's the config param name? Any proposal?
rendering.velocity.whitespaceMode
I did not test yet if we can have dot in in a property key. but I was
thinking of something more like
macro.velocity.filter
since it's not have to be a white space cleaner but it's specific to
velocity macro, anyone could code any kind of velocity macro content
filter.
?
(provided dots work, if not:
velocityMacro.whitespaceMode for ex)
Here are some proposals:
- "none": the one which do nothing (the current bahavior of velocity
macro)
sounds good.
-
"html"/"compact"/"full" (I don't really like any of
theses): the
B2
behavior, i.e. replace whites spaces/new lines groups by a space
(which looks like html behavior and so "html" mode name) and inject
$nl and $sp binding in velocity context
"html" sounds good to me since it's the HTML behavior.
Another idea:
use a config param name of: stripWhitespace = none, all
This is way too specific IMO, with a conf like that it's pretty
useless to have generic component to clean/filter velocity content.
Yes, ok I see. Then you need full names like:
macro.velocity.filter = fullWhitespaceStripper
For the "no filter", we could use:
macro.velocity.filter = noFilter, voidFilter, noneFilter or simply none
We could also not define any value for "no filter":
macro.velocity.filter =
Thanks
-Vincent
> Thanks
> -Vincent
>
>> On Thu, Jun 4, 2009 at 17:24, Vincent Massol<vincent(a)massol.net>
>> wrote:
>>>
>>> On Jun 4, 2009, at 5:23 PM, Ludovic Dubost wrote:
>>>
>>>> +1 Sounds good to me
>>>>
>>>> Will this change make the macros behave like they are today ? Or
>>>> will we
>>>> have a slight change behavior in default mode ?
>>>
>>> Default will become B2 so it'll be different. If you want the same
>>> behavior you'll need to change your xwiki.properties file to
>>> specify a
>>> different default mode.
>>>
>>> -Vincent
>>>
>>>> Ludovic
>>>>
>>>> Vincent Massol a écrit :
>>>>> Hi,
>>>>>
>>>>> We really need to close this before 1.9 final. After discussing
>>>>> it
>>>>> with Thomas here's what we propose:
>>>>>
>>>>> * Introduce a "mode" parameter to the Velocity macro.
It's a
>>>>> cleaning mode.
>>>>> * Implement 2 modes for now:
>>>>> - the current mode where no cleaning is done
>>>>> - the B2 mode as defined below (using $nl and $sp)
>>>>> * Introduce a xwiki.properties config to define the default mode
>>>>> (which would be B2 by default for now)
>>>>>
>>>>> This allows users who are already using the 2.0 syntax today to
>>>>> keep
>>>>> using the current mode. It also allows us to introduce new
>>>>> cleaning
>>>>> mode later on (such as the one Ludovic wanted).
>>>>>
>>>>> WDYT?
>>>>>
>>>>> Here's my +1
>>>>>
>>>>> Thanks
>>>>> -Vincent
>>>>>
>>>>> PS: Please answer ASAP since 1.9 is supposed to be today and
>>>>> Thomas
>>>>> will need a few hours to implement this.
>>>>>
>>>>> On Thu, Apr 16, 2009 at 3:56 PM, Vincent Massol
>>>>> <vincent(a)massol.net> wrote:
>>>>>
>>>>>> 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