You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@velocity.apache.org by Raghuram Rajah <rr...@hotmail.com> on 2008/01/03 04:13:00 UTC

Blocks in Velocimacros

Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.

I would ideally like to do something like,

#myForm(...)
  <!-- some arbitrary html here -->
#end

generating something like

<form .... 
  <!-- some arbitrary html here -->
</form>

Any suggestions would be greatly appreciated.

Thanks,
Raghu.

_________________________________________________________________
Share life as it happens with the new Windows Live.
http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007

Re: Blocks in Velocimacros

Posted by Will Glass-Husain <wg...@gmail.com>.
Hi Raghuram,

Unfortunately, no.  (There's a feature request in JIRA somewhere about this).

You can however code this in Java with a custom directive.  See the
notes in "Hacking Velocity" (downloadable from the Wiki) on how to do
this.  There's an example directive which takes a block of text,
parses it and generates end notes.
http://wiki.apache.org/velocity/HackingVelocity

Best, WILL

On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
>
> I would ideally like to do something like,
>
> #myForm(...)
>   <!-- some arbitrary html here -->
> #end
>
> generating something like
>
> <form ....
>   <!-- some arbitrary html here -->
> </form>
>
> Any suggestions would be greatly appreciated.
>
> Thanks,
> Raghu.
>
> _________________________________________________________________
> Share life as it happens with the new Windows Live.
> http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007



-- 
Forio Business Simulations

Will Glass-Husain
wglass@forio.com
www.forio.com

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
For additional commands, e-mail: user-help@velocity.apache.org


Re: Blocks in Velocimacros

Posted by Raghu Rajah <rr...@hotmail.com>.
Actually, I was saying the opposite. We can keep the calling semantics, as
is. I might have to use an alternate directive (other than #macro) for
definition. The definition parsing would become non-deterministic otherwise
We already have block handling for directives within the parser grammar,
that I can overload for handling block macro usage as well.

On Will's suggestion, I personally would prefer to keep the calling
semantics between #macro and #blockmacro (or #block) the same. That would
give us interesting opportunities to genericize the VTL language in the
future (if we can address the block-breaking structure like elseif) and
perhaps provide support for alternate DSLs.

I prefer "yield" too. I will stick with that for the moment. Should be an
easy one to change if there is disagreement over it

Thanks,
 Raghu.

On 1/7/08 6:22 AM, "Claude Brisson" <cl...@renegat.net> wrote:

> Yes, Raghu, I'm "+1" if we find a mean of implementing it and agree
> about the syntax.
> 
> It's the use of the macro that should be differenciated between block
> and non-block versions, not definition (for definition, I guess we can
> keep #macro), for the parsing process to be deterministic.
> 
> It looks like using a special directive to call the macro -as Will
> suggests- is the only way to go. And yes, block macros should having
> both a body and (a variable number of) arguments.
> 
> #call? #block? #blockmacro? I like #block.
> 
> #block(onemacro) without arg #end
> #block(anothermacro,$arg1) only one arg #end
> #block(themacro,$arg1,$arg2) etc... #end
> 
> Concerning the name of the reference holding the body: it should anyway
> be made configurable. $bodyContent looks heavier than $yield but much
> more explicit.
> 
>   Claude
> 
> Le dimanche 06 janvier 2008 à 21:18 -0800, Will Glass-Husain a écrit :
>> I like this idea.  Similar to JSP tags that have attributes and body.
>> 
>> Question--- would a block macro be able to have both arguments and a
>> body?  I'd think this would be useful.
>> 
>> Second, to clarify Claude's point about the difficulty.  The issue is
>> that the parser needs to call the block-macro, but since the actual
>> macro is defined at run-time, the parser doesn't know whether to call
>> a regular macro (no #end required) a block macro (needs an end) or
>> just pass through verbatim (e.g. not defined macro).  I guess to make
>> this work the parser would need to open up a macro node any time a
>> #abc() is included and just have all the following VTL be children.
>> (either to an #end statement or to the end of the file.  Not sure if
>> this is workable, though it might be.
>> 
>> An alternative would be to use a unique way of identifying block
>> macros that could be recognized by the parser.  Maybe a special
>> directive to call the macro?  In other words, to call the block macro
>> "strong" the syntax would be
>> 
>> #call(strong)
>> 
>> #end
>> 
>> WILL
>> 
>> On Jan 6, 2008 6:06 PM, Raghu Rajah <rr...@hotmail.com> wrote:
>>> Nathan - Overloading #macro would be rather hard, especially since VTL does
>>> not have a begin token for blocks, the parser lookahead would become
>>> non-deterministic, I think. I can call the inner call "contentBody", "yield"
>>> is rather commonly used term for this purpose in the ruby world.
>>> 
>>> Claude - Was that a +1? Trust you are a committer.
>>> 
>>> Raghu.
>>> 
>>>> Subject: Re: Blocks in Velocimacros
>>>> From: claude@renegat.net
>>>> To: dev@velocity.apache.org
>>>> Date: Sun, 6 Jan 2008 23:39:43 +0100
>>> 
>>>> 
>>>> I agree, this would be useful. But since the parser would have to know
>>>> macros definitions to detect blocks, I'm pretty sure it's very hard to
>>>> implement.
>>>> 
>>>> The way to go is the custom directive - that's much easier.
>>>> 
>>>> 
>>>>   Claude
>>>> 
>>>> Le dimanche 06 janvier 2008 à 14:13 -0800, Nathan Bubna a écrit :
>>>>> Yeah, i'm at least interested.  If it works well and we have some good
>>>>> tests for it (and, of course, all existing tests pass), i would even
>>>>> support putting it into Velocity 1.6 (rather than wait for 1.7).
>>>>> We've already got a lot of macro improvements in, this would Though,
>>>>> i'd want the support of at least one other committer before doing
>>>>> that.  I do have one question and one suggestion at this point:  Would
>>>>> it work to overload the #macro directive instead of using #blockmacro?
>>>>>  (Not that big a deal to me, but people will ask.)  And i would
>>>>> suggest using $bodyContent as the default, instead of $yield since
>>>>> that is more familiar to people.
>>>>> 
>>>>> This is a great idea though!  People have talked about it, but no one
>>>>> has ever taken it upon themselves to work on it.
>>>>> 
>>>>> On Jan 6, 2008 12:19 PM, Raghu Rajah <rr...@hotmail.com> wrote:
>>>>>> If I offer to implement block support, is there any interest in absorbing
>>>>>> this contribution into the codebase.
>>>>>> 
>>>>>> Here's what I intend to do,
>>>>>> 
>>>>>> 1. Add a new directive called "blockmacro", along the same lines as
>>>>>> macro, subclassing behavior from the current macro processing both in the
>>>>>> directive and the JJT.
>>>>>> 2. In order to render the content of the block, one could use a special
>>>>>> context variable called "yield", that could be customized as whatever in
>>>>>> the properties.
>>>>>> 
>>>>>> The net definition would look something like,
>>>>>> 
>>>>>> #blockmacro strong
>>>>>> <strong>${yield}</strong>
>>>>>> #end
>>>>>> 
>>>>>> and usage would look like
>>>>>> 
>>>>>> #strong
>>>>>>   This is a strong text for #if (${user.male}) Mr. #else Ms. #end
>>>>>> ${user.name}.
>>>>>> #end
>>>>>> 
>>>>>> Regards,
>>>>>>  Raghu.
>>>>>> 
>>>>>>> From: rraghuram@hotmail.com
>>>>>>> To: user@velocity.apache.org
>>>>>>> Subject: RE: Blocks in Velocimacros
>>>>>>> Date: Thu, 3 Jan 2008 17:49:07 -0500
>>>>>> 
>>>>>>> 
>>>>>>> I think I will go the custom directive route.
>>>>>>> 
>>>>>>> Thanks for all the pointers. I especially like the Hacking Velocity
>>>>>>> presentation - rather groovy. It addresses nearly all the issues I had.
>>>>>>> 
>>>>>>> Raghu.
>>>>>>> 
>>>>>>> 
>>>>>>>> Date: Thu, 3 Jan 2008 14:37:35 -0800
>>>>>>>> From: nbubna@gmail.com
>>>>>>>> To: user@velocity.apache.org
>>>>>>>> Subject: Re: Blocks in Velocimacros
>>>>>>>> 
>>>>>>>> Of course, you would then have to be sure to escape all " characters
>>>>>>>> in your body content:
>>>>>>>> 
>>>>>>>> #set( $Q = '"' )
>>>>>>>> 
>>>>>>>> #myForm( "
>>>>>>>> <!-- some ${Q}arbitrary${Q} -->
>>>>>>>> " )
>>>>>>>> 
>>>>>>>> so that you don't prematurely end your $body parameter.  this is
>>>>>>>> obviously not ideal, but may be easier than writing a custom
>>>>>>>> directive, depending on the specifics of your case(s).
>>>>>>>> 
>>>>>>>> On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
>>>>>>>>> Also note that as of Velocity 1.5, you can include line breaks in
>>>>>>>>> strings, making it reasonable (though not as pretty to do something
>>>>>>>>> like:
>>>>>>>>> 
>>>>>>>>> #macro( myForm $body )
>>>>>>>>> <form...>
>>>>>>>>> $body
>>>>>>>>> </form>
>>>>>>>>> #end
>>>>>>>>> 
>>>>>>>>> #myForm("
>>>>>>>>> <!-- some arbitrary html here -->
>>>>>>>>> ")
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
>>>>>>>>> 
>>>>>>>>>> Can I use a block within a velocimacro? Basically, I am trying to
>>>>>>>>>> create a macro that will emit a XHTML tag with some javascript out. I
>>>>>>>>>> would hate to create a begin macro and an end macro to accomplish
>>>>>>>>>> this. That would be rather error prone.
>>>>>>>>>> 
>>>>>>>>>> I would ideally like to do something like,
>>>>>>>>>> 
>>>>>>>>>> #myForm(...)
>>>>>>>>>>   <!-- some arbitrary html here -->
>>>>>>>>>> #end
>>>>>>>>>> 
>>>>>>>>>> generating something like
>>>>>>>>>> 
>>>>>>>>>> <form ....
>>>>>>>>>>   <!-- some arbitrary html here -->
>>>>>>>>>> </form>
>>>>>>>>>> 
>>>>>>>>>> Any suggestions would be greatly appreciated.
>>>>>>>>>> 
>>>>>>>>>> Thanks,
>>>>>>>>>> Raghu.
>>>>>>>>>> 
>>>>>>>>>> _________________________________________________________________
>>>>>>>>>> Share life as it happens with the new Windows Live.
>>>>>>>>>> http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_
>>>>>>>>>> 122007
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>>>>>>>> For additional commands, e-mail: user-help@velocity.apache.org
>>>>>>>> 
>>>>>>> 
>>>>>>> _________________________________________________________________
>>>>>>> i'm is proud to present Cause Effect, a series about real people making
>>>>>>> a difference.
>>>>>>> http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect
>>>>>> 
>>>>>> _________________________________________________________________
>>>>>> Watch "Cause Effect," a show about real people making a real difference.
>>>>>> http://im.live.com/Messenger/IM/MTV/?source=text_watchcause
>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
>>>>> For additional commands, e-mail: dev-help@velocity.apache.org
>>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
>>>> For additional commands, e-mail: dev-help@velocity.apache.org
>>>> 
>>> 
>>> _________________________________________________________________
>>> Get the power of Windows + Web with the new Windows Live.
>>> http://www.windowslive.com?ocid=TXT_TAGHM_Wave2_powerofwindows_012008
>> 
>> 
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> For additional commands, e-mail: dev-help@velocity.apache.org
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org


Re: Blocks in Velocimacros

Posted by Claude Brisson <cl...@renegat.net>.
Yes, Raghu, I'm "+1" if we find a mean of implementing it and agree
about the syntax.

It's the use of the macro that should be differenciated between block
and non-block versions, not definition (for definition, I guess we can
keep #macro), for the parsing process to be deterministic.

It looks like using a special directive to call the macro -as Will
suggests- is the only way to go. And yes, block macros should having
both a body and (a variable number of) arguments.

#call? #block? #blockmacro? I like #block.

#block(onemacro) without arg #end
#block(anothermacro,$arg1) only one arg #end
#block(themacro,$arg1,$arg2) etc... #end

Concerning the name of the reference holding the body: it should anyway
be made configurable. $bodyContent looks heavier than $yield but much
more explicit.

  Claude

Le dimanche 06 janvier 2008 à 21:18 -0800, Will Glass-Husain a écrit :
> I like this idea.  Similar to JSP tags that have attributes and body.
> 
> Question--- would a block macro be able to have both arguments and a
> body?  I'd think this would be useful.
> 
> Second, to clarify Claude's point about the difficulty.  The issue is
> that the parser needs to call the block-macro, but since the actual
> macro is defined at run-time, the parser doesn't know whether to call
> a regular macro (no #end required) a block macro (needs an end) or
> just pass through verbatim (e.g. not defined macro).  I guess to make
> this work the parser would need to open up a macro node any time a
> #abc() is included and just have all the following VTL be children.
> (either to an #end statement or to the end of the file.  Not sure if
> this is workable, though it might be.
> 
> An alternative would be to use a unique way of identifying block
> macros that could be recognized by the parser.  Maybe a special
> directive to call the macro?  In other words, to call the block macro
> "strong" the syntax would be
> 
> #call(strong)
> 
> #end
> 
> WILL
> 
> On Jan 6, 2008 6:06 PM, Raghu Rajah <rr...@hotmail.com> wrote:
> > Nathan - Overloading #macro would be rather hard, especially since VTL does not have a begin token for blocks, the parser lookahead would become non-deterministic, I think. I can call the inner call "contentBody", "yield" is rather commonly used term for this purpose in the ruby world.
> >
> > Claude - Was that a +1? Trust you are a committer.
> >
> > Raghu.
> >
> > > Subject: Re: Blocks in Velocimacros
> > > From: claude@renegat.net
> > > To: dev@velocity.apache.org
> > > Date: Sun, 6 Jan 2008 23:39:43 +0100
> >
> > >
> > > I agree, this would be useful. But since the parser would have to know
> > > macros definitions to detect blocks, I'm pretty sure it's very hard to
> > > implement.
> > >
> > > The way to go is the custom directive - that's much easier.
> > >
> > >
> > >   Claude
> > >
> > > Le dimanche 06 janvier 2008 à 14:13 -0800, Nathan Bubna a écrit :
> > > > Yeah, i'm at least interested.  If it works well and we have some good
> > > > tests for it (and, of course, all existing tests pass), i would even
> > > > support putting it into Velocity 1.6 (rather than wait for 1.7).
> > > > We've already got a lot of macro improvements in, this would Though,
> > > > i'd want the support of at least one other committer before doing
> > > > that.  I do have one question and one suggestion at this point:  Would
> > > > it work to overload the #macro directive instead of using #blockmacro?
> > > >  (Not that big a deal to me, but people will ask.)  And i would
> > > > suggest using $bodyContent as the default, instead of $yield since
> > > > that is more familiar to people.
> > > >
> > > > This is a great idea though!  People have talked about it, but no one
> > > > has ever taken it upon themselves to work on it.
> > > >
> > > > On Jan 6, 2008 12:19 PM, Raghu Rajah <rr...@hotmail.com> wrote:
> > > > > If I offer to implement block support, is there any interest in absorbing this contribution into the codebase.
> > > > >
> > > > > Here's what I intend to do,
> > > > >
> > > > > 1. Add a new directive called "blockmacro", along the same lines as macro, subclassing behavior from the current macro processing both in the directive and the JJT.
> > > > > 2. In order to render the content of the block, one could use a special context variable called "yield", that could be customized as whatever in the properties.
> > > > >
> > > > > The net definition would look something like,
> > > > >
> > > > > #blockmacro strong
> > > > > <strong>${yield}</strong>
> > > > > #end
> > > > >
> > > > > and usage would look like
> > > > >
> > > > > #strong
> > > > >   This is a strong text for #if (${user.male}) Mr. #else Ms. #end  ${user.name}.
> > > > > #end
> > > > >
> > > > > Regards,
> > > > >  Raghu.
> > > > >
> > > > > > From: rraghuram@hotmail.com
> > > > > > To: user@velocity.apache.org
> > > > > > Subject: RE: Blocks in Velocimacros
> > > > > > Date: Thu, 3 Jan 2008 17:49:07 -0500
> > > > >
> > > > > >
> > > > > > I think I will go the custom directive route.
> > > > > >
> > > > > > Thanks for all the pointers. I especially like the Hacking Velocity presentation - rather groovy. It addresses nearly all the issues I had.
> > > > > >
> > > > > > Raghu.
> > > > > >
> > > > > >
> > > > > > > Date: Thu, 3 Jan 2008 14:37:35 -0800
> > > > > > > From: nbubna@gmail.com
> > > > > > > To: user@velocity.apache.org
> > > > > > > Subject: Re: Blocks in Velocimacros
> > > > > > >
> > > > > > > Of course, you would then have to be sure to escape all " characters
> > > > > > > in your body content:
> > > > > > >
> > > > > > > #set( $Q = '"' )
> > > > > > >
> > > > > > > #myForm( "
> > > > > > > <!-- some ${Q}arbitrary${Q} -->
> > > > > > > " )
> > > > > > >
> > > > > > > so that you don't prematurely end your $body parameter.  this is
> > > > > > > obviously not ideal, but may be easier than writing a custom
> > > > > > > directive, depending on the specifics of your case(s).
> > > > > > >
> > > > > > > On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> > > > > > > > Also note that as of Velocity 1.5, you can include line breaks in
> > > > > > > > strings, making it reasonable (though not as pretty to do something
> > > > > > > > like:
> > > > > > > >
> > > > > > > > #macro( myForm $body )
> > > > > > > > <form...>
> > > > > > > > $body
> > > > > > > > </form>
> > > > > > > > #end
> > > > > > > >
> > > > > > > > #myForm("
> > > > > > > > <!-- some arbitrary html here -->
> > > > > > > > ")
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> > > > > > > >
> > > > > > > > > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> > > > > > > > >
> > > > > > > > > I would ideally like to do something like,
> > > > > > > > >
> > > > > > > > > #myForm(...)
> > > > > > > > >   <!-- some arbitrary html here -->
> > > > > > > > > #end
> > > > > > > > >
> > > > > > > > > generating something like
> > > > > > > > >
> > > > > > > > > <form ....
> > > > > > > > >   <!-- some arbitrary html here -->
> > > > > > > > > </form>
> > > > > > > > >
> > > > > > > > > Any suggestions would be greatly appreciated.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Raghu.
> > > > > > > > >
> > > > > > > > > _________________________________________________________________
> > > > > > > > > Share life as it happens with the new Windows Live.
> > > > > > > > > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
> > > > > > > >
> > > > > > >
> > > > > > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> > > > > > > For additional commands, e-mail: user-help@velocity.apache.org
> > > > > > >
> > > > > >
> > > > > > _________________________________________________________________
> > > > > > i'm is proud to present Cause Effect, a series about real people making a difference.
> > > > > > http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect
> > > > >
> > > > > _________________________________________________________________
> > > > > Watch "Cause Effect," a show about real people making a real difference.
> > > > > http://im.live.com/Messenger/IM/MTV/?source=text_watchcause
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> > > > For additional commands, e-mail: dev-help@velocity.apache.org
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> > > For additional commands, e-mail: dev-help@velocity.apache.org
> > >
> >
> > _________________________________________________________________
> > Get the power of Windows + Web with the new Windows Live.
> > http://www.windowslive.com?ocid=TXT_TAGHM_Wave2_powerofwindows_012008
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org


Re: Blocks in Velocimacros

Posted by Will Glass-Husain <wg...@gmail.com>.
I like this idea.  Similar to JSP tags that have attributes and body.

Question--- would a block macro be able to have both arguments and a
body?  I'd think this would be useful.

Second, to clarify Claude's point about the difficulty.  The issue is
that the parser needs to call the block-macro, but since the actual
macro is defined at run-time, the parser doesn't know whether to call
a regular macro (no #end required) a block macro (needs an end) or
just pass through verbatim (e.g. not defined macro).  I guess to make
this work the parser would need to open up a macro node any time a
#abc() is included and just have all the following VTL be children.
(either to an #end statement or to the end of the file.  Not sure if
this is workable, though it might be.

An alternative would be to use a unique way of identifying block
macros that could be recognized by the parser.  Maybe a special
directive to call the macro?  In other words, to call the block macro
"strong" the syntax would be

#call(strong)

#end

WILL

On Jan 6, 2008 6:06 PM, Raghu Rajah <rr...@hotmail.com> wrote:
> Nathan - Overloading #macro would be rather hard, especially since VTL does not have a begin token for blocks, the parser lookahead would become non-deterministic, I think. I can call the inner call "contentBody", "yield" is rather commonly used term for this purpose in the ruby world.
>
> Claude - Was that a +1? Trust you are a committer.
>
> Raghu.
>
> > Subject: Re: Blocks in Velocimacros
> > From: claude@renegat.net
> > To: dev@velocity.apache.org
> > Date: Sun, 6 Jan 2008 23:39:43 +0100
>
> >
> > I agree, this would be useful. But since the parser would have to know
> > macros definitions to detect blocks, I'm pretty sure it's very hard to
> > implement.
> >
> > The way to go is the custom directive - that's much easier.
> >
> >
> >   Claude
> >
> > Le dimanche 06 janvier 2008 à 14:13 -0800, Nathan Bubna a écrit :
> > > Yeah, i'm at least interested.  If it works well and we have some good
> > > tests for it (and, of course, all existing tests pass), i would even
> > > support putting it into Velocity 1.6 (rather than wait for 1.7).
> > > We've already got a lot of macro improvements in, this would Though,
> > > i'd want the support of at least one other committer before doing
> > > that.  I do have one question and one suggestion at this point:  Would
> > > it work to overload the #macro directive instead of using #blockmacro?
> > >  (Not that big a deal to me, but people will ask.)  And i would
> > > suggest using $bodyContent as the default, instead of $yield since
> > > that is more familiar to people.
> > >
> > > This is a great idea though!  People have talked about it, but no one
> > > has ever taken it upon themselves to work on it.
> > >
> > > On Jan 6, 2008 12:19 PM, Raghu Rajah <rr...@hotmail.com> wrote:
> > > > If I offer to implement block support, is there any interest in absorbing this contribution into the codebase.
> > > >
> > > > Here's what I intend to do,
> > > >
> > > > 1. Add a new directive called "blockmacro", along the same lines as macro, subclassing behavior from the current macro processing both in the directive and the JJT.
> > > > 2. In order to render the content of the block, one could use a special context variable called "yield", that could be customized as whatever in the properties.
> > > >
> > > > The net definition would look something like,
> > > >
> > > > #blockmacro strong
> > > > <strong>${yield}</strong>
> > > > #end
> > > >
> > > > and usage would look like
> > > >
> > > > #strong
> > > >   This is a strong text for #if (${user.male}) Mr. #else Ms. #end  ${user.name}.
> > > > #end
> > > >
> > > > Regards,
> > > >  Raghu.
> > > >
> > > > > From: rraghuram@hotmail.com
> > > > > To: user@velocity.apache.org
> > > > > Subject: RE: Blocks in Velocimacros
> > > > > Date: Thu, 3 Jan 2008 17:49:07 -0500
> > > >
> > > > >
> > > > > I think I will go the custom directive route.
> > > > >
> > > > > Thanks for all the pointers. I especially like the Hacking Velocity presentation - rather groovy. It addresses nearly all the issues I had.
> > > > >
> > > > > Raghu.
> > > > >
> > > > >
> > > > > > Date: Thu, 3 Jan 2008 14:37:35 -0800
> > > > > > From: nbubna@gmail.com
> > > > > > To: user@velocity.apache.org
> > > > > > Subject: Re: Blocks in Velocimacros
> > > > > >
> > > > > > Of course, you would then have to be sure to escape all " characters
> > > > > > in your body content:
> > > > > >
> > > > > > #set( $Q = '"' )
> > > > > >
> > > > > > #myForm( "
> > > > > > <!-- some ${Q}arbitrary${Q} -->
> > > > > > " )
> > > > > >
> > > > > > so that you don't prematurely end your $body parameter.  this is
> > > > > > obviously not ideal, but may be easier than writing a custom
> > > > > > directive, depending on the specifics of your case(s).
> > > > > >
> > > > > > On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> > > > > > > Also note that as of Velocity 1.5, you can include line breaks in
> > > > > > > strings, making it reasonable (though not as pretty to do something
> > > > > > > like:
> > > > > > >
> > > > > > > #macro( myForm $body )
> > > > > > > <form...>
> > > > > > > $body
> > > > > > > </form>
> > > > > > > #end
> > > > > > >
> > > > > > > #myForm("
> > > > > > > <!-- some arbitrary html here -->
> > > > > > > ")
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> > > > > > >
> > > > > > > > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> > > > > > > >
> > > > > > > > I would ideally like to do something like,
> > > > > > > >
> > > > > > > > #myForm(...)
> > > > > > > >   <!-- some arbitrary html here -->
> > > > > > > > #end
> > > > > > > >
> > > > > > > > generating something like
> > > > > > > >
> > > > > > > > <form ....
> > > > > > > >   <!-- some arbitrary html here -->
> > > > > > > > </form>
> > > > > > > >
> > > > > > > > Any suggestions would be greatly appreciated.
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Raghu.
> > > > > > > >
> > > > > > > > _________________________________________________________________
> > > > > > > > Share life as it happens with the new Windows Live.
> > > > > > > > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
> > > > > > >
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> > > > > > For additional commands, e-mail: user-help@velocity.apache.org
> > > > > >
> > > > >
> > > > > _________________________________________________________________
> > > > > i'm is proud to present Cause Effect, a series about real people making a difference.
> > > > > http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect
> > > >
> > > > _________________________________________________________________
> > > > Watch "Cause Effect," a show about real people making a real difference.
> > > > http://im.live.com/Messenger/IM/MTV/?source=text_watchcause
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> > > For additional commands, e-mail: dev-help@velocity.apache.org
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> > For additional commands, e-mail: dev-help@velocity.apache.org
> >
>
> _________________________________________________________________
> Get the power of Windows + Web with the new Windows Live.
> http://www.windowslive.com?ocid=TXT_TAGHM_Wave2_powerofwindows_012008



-- 
Forio Business Simulations

Will Glass-Husain
wglass@forio.com
www.forio.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org


RE: Blocks in Velocimacros

Posted by Raghu Rajah <rr...@hotmail.com>.
Nathan - Overloading #macro would be rather hard, especially since VTL does not have a begin token for blocks, the parser lookahead would become non-deterministic, I think. I can call the inner call "contentBody", "yield" is rather commonly used term for this purpose in the ruby world.

Claude - Was that a +1? Trust you are a committer.

Raghu.

> Subject: Re: Blocks in Velocimacros
> From: claude@renegat.net
> To: dev@velocity.apache.org
> Date: Sun, 6 Jan 2008 23:39:43 +0100
> 
> I agree, this would be useful. But since the parser would have to know
> macros definitions to detect blocks, I'm pretty sure it's very hard to
> implement.
> 
> The way to go is the custom directive - that's much easier.
> 
> 
>   Claude
> 
> Le dimanche 06 janvier 2008 à 14:13 -0800, Nathan Bubna a écrit :
> > Yeah, i'm at least interested.  If it works well and we have some good
> > tests for it (and, of course, all existing tests pass), i would even
> > support putting it into Velocity 1.6 (rather than wait for 1.7).
> > We've already got a lot of macro improvements in, this would Though,
> > i'd want the support of at least one other committer before doing
> > that.  I do have one question and one suggestion at this point:  Would
> > it work to overload the #macro directive instead of using #blockmacro?
> >  (Not that big a deal to me, but people will ask.)  And i would
> > suggest using $bodyContent as the default, instead of $yield since
> > that is more familiar to people.
> > 
> > This is a great idea though!  People have talked about it, but no one
> > has ever taken it upon themselves to work on it.
> > 
> > On Jan 6, 2008 12:19 PM, Raghu Rajah <rr...@hotmail.com> wrote:
> > > If I offer to implement block support, is there any interest in absorbing this contribution into the codebase.
> > >
> > > Here's what I intend to do,
> > >
> > > 1. Add a new directive called "blockmacro", along the same lines as macro, subclassing behavior from the current macro processing both in the directive and the JJT.
> > > 2. In order to render the content of the block, one could use a special context variable called "yield", that could be customized as whatever in the properties.
> > >
> > > The net definition would look something like,
> > >
> > > #blockmacro strong
> > > <strong>${yield}</strong>
> > > #end
> > >
> > > and usage would look like
> > >
> > > #strong
> > >   This is a strong text for #if (${user.male}) Mr. #else Ms. #end  ${user.name}.
> > > #end
> > >
> > > Regards,
> > >  Raghu.
> > >
> > > > From: rraghuram@hotmail.com
> > > > To: user@velocity.apache.org
> > > > Subject: RE: Blocks in Velocimacros
> > > > Date: Thu, 3 Jan 2008 17:49:07 -0500
> > >
> > > >
> > > > I think I will go the custom directive route.
> > > >
> > > > Thanks for all the pointers. I especially like the Hacking Velocity presentation - rather groovy. It addresses nearly all the issues I had.
> > > >
> > > > Raghu.
> > > >
> > > >
> > > > > Date: Thu, 3 Jan 2008 14:37:35 -0800
> > > > > From: nbubna@gmail.com
> > > > > To: user@velocity.apache.org
> > > > > Subject: Re: Blocks in Velocimacros
> > > > >
> > > > > Of course, you would then have to be sure to escape all " characters
> > > > > in your body content:
> > > > >
> > > > > #set( $Q = '"' )
> > > > >
> > > > > #myForm( "
> > > > > <!-- some ${Q}arbitrary${Q} -->
> > > > > " )
> > > > >
> > > > > so that you don't prematurely end your $body parameter.  this is
> > > > > obviously not ideal, but may be easier than writing a custom
> > > > > directive, depending on the specifics of your case(s).
> > > > >
> > > > > On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> > > > > > Also note that as of Velocity 1.5, you can include line breaks in
> > > > > > strings, making it reasonable (though not as pretty to do something
> > > > > > like:
> > > > > >
> > > > > > #macro( myForm $body )
> > > > > > <form...>
> > > > > > $body
> > > > > > </form>
> > > > > > #end
> > > > > >
> > > > > > #myForm("
> > > > > > <!-- some arbitrary html here -->
> > > > > > ")
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> > > > > >
> > > > > > > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> > > > > > >
> > > > > > > I would ideally like to do something like,
> > > > > > >
> > > > > > > #myForm(...)
> > > > > > >   <!-- some arbitrary html here -->
> > > > > > > #end
> > > > > > >
> > > > > > > generating something like
> > > > > > >
> > > > > > > <form ....
> > > > > > >   <!-- some arbitrary html here -->
> > > > > > > </form>
> > > > > > >
> > > > > > > Any suggestions would be greatly appreciated.
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Raghu.
> > > > > > >
> > > > > > > _________________________________________________________________
> > > > > > > Share life as it happens with the new Windows Live.
> > > > > > > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
> > > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> > > > > For additional commands, e-mail: user-help@velocity.apache.org
> > > > >
> > > >
> > > > _________________________________________________________________
> > > > i'm is proud to present Cause Effect, a series about real people making a difference.
> > > > http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect
> > >
> > > _________________________________________________________________
> > > Watch "Cause Effect," a show about real people making a real difference.
> > > http://im.live.com/Messenger/IM/MTV/?source=text_watchcause
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> > For additional commands, e-mail: dev-help@velocity.apache.org
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> For additional commands, e-mail: dev-help@velocity.apache.org
> 

_________________________________________________________________
Get the power of Windows + Web with the new Windows Live.
http://www.windowslive.com?ocid=TXT_TAGHM_Wave2_powerofwindows_012008

Re: Blocks in Velocimacros

Posted by Claude Brisson <cl...@renegat.net>.
I agree, this would be useful. But since the parser would have to know
macros definitions to detect blocks, I'm pretty sure it's very hard to
implement.

The way to go is the custom directive - that's much easier.


  Claude

Le dimanche 06 janvier 2008 à 14:13 -0800, Nathan Bubna a écrit :
> Yeah, i'm at least interested.  If it works well and we have some good
> tests for it (and, of course, all existing tests pass), i would even
> support putting it into Velocity 1.6 (rather than wait for 1.7).
> We've already got a lot of macro improvements in, this would Though,
> i'd want the support of at least one other committer before doing
> that.  I do have one question and one suggestion at this point:  Would
> it work to overload the #macro directive instead of using #blockmacro?
>  (Not that big a deal to me, but people will ask.)  And i would
> suggest using $bodyContent as the default, instead of $yield since
> that is more familiar to people.
> 
> This is a great idea though!  People have talked about it, but no one
> has ever taken it upon themselves to work on it.
> 
> On Jan 6, 2008 12:19 PM, Raghu Rajah <rr...@hotmail.com> wrote:
> > If I offer to implement block support, is there any interest in absorbing this contribution into the codebase.
> >
> > Here's what I intend to do,
> >
> > 1. Add a new directive called "blockmacro", along the same lines as macro, subclassing behavior from the current macro processing both in the directive and the JJT.
> > 2. In order to render the content of the block, one could use a special context variable called "yield", that could be customized as whatever in the properties.
> >
> > The net definition would look something like,
> >
> > #blockmacro strong
> > <strong>${yield}</strong>
> > #end
> >
> > and usage would look like
> >
> > #strong
> >   This is a strong text for #if (${user.male}) Mr. #else Ms. #end  ${user.name}.
> > #end
> >
> > Regards,
> >  Raghu.
> >
> > > From: rraghuram@hotmail.com
> > > To: user@velocity.apache.org
> > > Subject: RE: Blocks in Velocimacros
> > > Date: Thu, 3 Jan 2008 17:49:07 -0500
> >
> > >
> > > I think I will go the custom directive route.
> > >
> > > Thanks for all the pointers. I especially like the Hacking Velocity presentation - rather groovy. It addresses nearly all the issues I had.
> > >
> > > Raghu.
> > >
> > >
> > > > Date: Thu, 3 Jan 2008 14:37:35 -0800
> > > > From: nbubna@gmail.com
> > > > To: user@velocity.apache.org
> > > > Subject: Re: Blocks in Velocimacros
> > > >
> > > > Of course, you would then have to be sure to escape all " characters
> > > > in your body content:
> > > >
> > > > #set( $Q = '"' )
> > > >
> > > > #myForm( "
> > > > <!-- some ${Q}arbitrary${Q} -->
> > > > " )
> > > >
> > > > so that you don't prematurely end your $body parameter.  this is
> > > > obviously not ideal, but may be easier than writing a custom
> > > > directive, depending on the specifics of your case(s).
> > > >
> > > > On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> > > > > Also note that as of Velocity 1.5, you can include line breaks in
> > > > > strings, making it reasonable (though not as pretty to do something
> > > > > like:
> > > > >
> > > > > #macro( myForm $body )
> > > > > <form...>
> > > > > $body
> > > > > </form>
> > > > > #end
> > > > >
> > > > > #myForm("
> > > > > <!-- some arbitrary html here -->
> > > > > ")
> > > > >
> > > > >
> > > > >
> > > > > On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> > > > >
> > > > > > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> > > > > >
> > > > > > I would ideally like to do something like,
> > > > > >
> > > > > > #myForm(...)
> > > > > >   <!-- some arbitrary html here -->
> > > > > > #end
> > > > > >
> > > > > > generating something like
> > > > > >
> > > > > > <form ....
> > > > > >   <!-- some arbitrary html here -->
> > > > > > </form>
> > > > > >
> > > > > > Any suggestions would be greatly appreciated.
> > > > > >
> > > > > > Thanks,
> > > > > > Raghu.
> > > > > >
> > > > > > _________________________________________________________________
> > > > > > Share life as it happens with the new Windows Live.
> > > > > > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> > > > For additional commands, e-mail: user-help@velocity.apache.org
> > > >
> > >
> > > _________________________________________________________________
> > > i'm is proud to present Cause Effect, a series about real people making a difference.
> > > http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect
> >
> > _________________________________________________________________
> > Watch "Cause Effect," a show about real people making a real difference.
> > http://im.live.com/Messenger/IM/MTV/?source=text_watchcause
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
> For additional commands, e-mail: dev-help@velocity.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org


Re: Blocks in Velocimacros

Posted by Nathan Bubna <nb...@gmail.com>.
Yeah, i'm at least interested.  If it works well and we have some good
tests for it (and, of course, all existing tests pass), i would even
support putting it into Velocity 1.6 (rather than wait for 1.7).
We've already got a lot of macro improvements in, this would Though,
i'd want the support of at least one other committer before doing
that.  I do have one question and one suggestion at this point:  Would
it work to overload the #macro directive instead of using #blockmacro?
 (Not that big a deal to me, but people will ask.)  And i would
suggest using $bodyContent as the default, instead of $yield since
that is more familiar to people.

This is a great idea though!  People have talked about it, but no one
has ever taken it upon themselves to work on it.

On Jan 6, 2008 12:19 PM, Raghu Rajah <rr...@hotmail.com> wrote:
> If I offer to implement block support, is there any interest in absorbing this contribution into the codebase.
>
> Here's what I intend to do,
>
> 1. Add a new directive called "blockmacro", along the same lines as macro, subclassing behavior from the current macro processing both in the directive and the JJT.
> 2. In order to render the content of the block, one could use a special context variable called "yield", that could be customized as whatever in the properties.
>
> The net definition would look something like,
>
> #blockmacro strong
> <strong>${yield}</strong>
> #end
>
> and usage would look like
>
> #strong
>   This is a strong text for #if (${user.male}) Mr. #else Ms. #end  ${user.name}.
> #end
>
> Regards,
>  Raghu.
>
> > From: rraghuram@hotmail.com
> > To: user@velocity.apache.org
> > Subject: RE: Blocks in Velocimacros
> > Date: Thu, 3 Jan 2008 17:49:07 -0500
>
> >
> > I think I will go the custom directive route.
> >
> > Thanks for all the pointers. I especially like the Hacking Velocity presentation - rather groovy. It addresses nearly all the issues I had.
> >
> > Raghu.
> >
> >
> > > Date: Thu, 3 Jan 2008 14:37:35 -0800
> > > From: nbubna@gmail.com
> > > To: user@velocity.apache.org
> > > Subject: Re: Blocks in Velocimacros
> > >
> > > Of course, you would then have to be sure to escape all " characters
> > > in your body content:
> > >
> > > #set( $Q = '"' )
> > >
> > > #myForm( "
> > > <!-- some ${Q}arbitrary${Q} -->
> > > " )
> > >
> > > so that you don't prematurely end your $body parameter.  this is
> > > obviously not ideal, but may be easier than writing a custom
> > > directive, depending on the specifics of your case(s).
> > >
> > > On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> > > > Also note that as of Velocity 1.5, you can include line breaks in
> > > > strings, making it reasonable (though not as pretty to do something
> > > > like:
> > > >
> > > > #macro( myForm $body )
> > > > <form...>
> > > > $body
> > > > </form>
> > > > #end
> > > >
> > > > #myForm("
> > > > <!-- some arbitrary html here -->
> > > > ")
> > > >
> > > >
> > > >
> > > > On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> > > >
> > > > > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> > > > >
> > > > > I would ideally like to do something like,
> > > > >
> > > > > #myForm(...)
> > > > >   <!-- some arbitrary html here -->
> > > > > #end
> > > > >
> > > > > generating something like
> > > > >
> > > > > <form ....
> > > > >   <!-- some arbitrary html here -->
> > > > > </form>
> > > > >
> > > > > Any suggestions would be greatly appreciated.
> > > > >
> > > > > Thanks,
> > > > > Raghu.
> > > > >
> > > > > _________________________________________________________________
> > > > > Share life as it happens with the new Windows Live.
> > > > > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> > > For additional commands, e-mail: user-help@velocity.apache.org
> > >
> >
> > _________________________________________________________________
> > i'm is proud to present Cause Effect, a series about real people making a difference.
> > http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect
>
> _________________________________________________________________
> Watch "Cause Effect," a show about real people making a real difference.
> http://im.live.com/Messenger/IM/MTV/?source=text_watchcause

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org


RE: Blocks in Velocimacros

Posted by Raghu Rajah <rr...@hotmail.com>.
If I offer to implement block support, is there any interest in absorbing this contribution into the codebase. 

Here's what I intend to do,

1. Add a new directive called "blockmacro", along the same lines as macro, subclassing behavior from the current macro processing both in the directive and the JJT.
2. In order to render the content of the block, one could use a special context variable called "yield", that could be customized as whatever in the properties.

The net definition would look something like,

#blockmacro strong
<strong>${yield}</strong>
#end

and usage would look like

#strong
  This is a strong text for #if (${user.male}) Mr. #else Ms. #end  ${user.name}. 
#end

Regards,
 Raghu.

> From: rraghuram@hotmail.com
> To: user@velocity.apache.org
> Subject: RE: Blocks in Velocimacros
> Date: Thu, 3 Jan 2008 17:49:07 -0500
> 
> I think I will go the custom directive route. 
> 
> Thanks for all the pointers. I especially like the Hacking Velocity presentation - rather groovy. It addresses nearly all the issues I had.
> 
> Raghu.
> 
> 
> > Date: Thu, 3 Jan 2008 14:37:35 -0800
> > From: nbubna@gmail.com
> > To: user@velocity.apache.org
> > Subject: Re: Blocks in Velocimacros
> > 
> > Of course, you would then have to be sure to escape all " characters
> > in your body content:
> > 
> > #set( $Q = '"' )
> > 
> > #myForm( "
> > <!-- some ${Q}arbitrary${Q} -->
> > " )
> > 
> > so that you don't prematurely end your $body parameter.  this is
> > obviously not ideal, but may be easier than writing a custom
> > directive, depending on the specifics of your case(s).
> > 
> > On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> > > Also note that as of Velocity 1.5, you can include line breaks in
> > > strings, making it reasonable (though not as pretty to do something
> > > like:
> > >
> > > #macro( myForm $body )
> > > <form...>
> > > $body
> > > </form>
> > > #end
> > >
> > > #myForm("
> > > <!-- some arbitrary html here -->
> > > ")
> > >
> > >
> > >
> > > On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> > >
> > > > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> > > >
> > > > I would ideally like to do something like,
> > > >
> > > > #myForm(...)
> > > >   <!-- some arbitrary html here -->
> > > > #end
> > > >
> > > > generating something like
> > > >
> > > > <form ....
> > > >   <!-- some arbitrary html here -->
> > > > </form>
> > > >
> > > > Any suggestions would be greatly appreciated.
> > > >
> > > > Thanks,
> > > > Raghu.
> > > >
> > > > _________________________________________________________________
> > > > Share life as it happens with the new Windows Live.
> > > > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
> > >
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> > For additional commands, e-mail: user-help@velocity.apache.org
> > 
> 
> _________________________________________________________________
> i’m is proud to present Cause Effect, a series about real people making a difference.
> http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect

_________________________________________________________________
Watch “Cause Effect,” a show about real people making a real difference.
http://im.live.com/Messenger/IM/MTV/?source=text_watchcause

HTML+Velocity code formatter

Posted by csanders <cs...@hoovers.com>.
Is there something that understands Velocity syntax that can correctly
indent HTML+Velocity ?

Thanks,
Charlie

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
For additional commands, e-mail: user-help@velocity.apache.org


RE: Blocks in Velocimacros

Posted by Raghu Rajah <rr...@hotmail.com>.
I think I will go the custom directive route. 

Thanks for all the pointers. I especially like the Hacking Velocity presentation - rather groovy. It addresses nearly all the issues I had.

Raghu.


> Date: Thu, 3 Jan 2008 14:37:35 -0800
> From: nbubna@gmail.com
> To: user@velocity.apache.org
> Subject: Re: Blocks in Velocimacros
> 
> Of course, you would then have to be sure to escape all " characters
> in your body content:
> 
> #set( $Q = '"' )
> 
> #myForm( "
> <!-- some ${Q}arbitrary${Q} -->
> " )
> 
> so that you don't prematurely end your $body parameter.  this is
> obviously not ideal, but may be easier than writing a custom
> directive, depending on the specifics of your case(s).
> 
> On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> > Also note that as of Velocity 1.5, you can include line breaks in
> > strings, making it reasonable (though not as pretty to do something
> > like:
> >
> > #macro( myForm $body )
> > <form...>
> > $body
> > </form>
> > #end
> >
> > #myForm("
> > <!-- some arbitrary html here -->
> > ")
> >
> >
> >
> > On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> >
> > > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> > >
> > > I would ideally like to do something like,
> > >
> > > #myForm(...)
> > >   <!-- some arbitrary html here -->
> > > #end
> > >
> > > generating something like
> > >
> > > <form ....
> > >   <!-- some arbitrary html here -->
> > > </form>
> > >
> > > Any suggestions would be greatly appreciated.
> > >
> > > Thanks,
> > > Raghu.
> > >
> > > _________________________________________________________________
> > > Share life as it happens with the new Windows Live.
> > > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
> 

_________________________________________________________________
i’m is proud to present Cause Effect, a series about real people making a difference.
http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect

Re: Blocks in Velocimacros

Posted by Nathan Bubna <nb...@gmail.com>.
Of course, you would then have to be sure to escape all " characters
in your body content:

#set( $Q = '"' )

#myForm( "
<!-- some ${Q}arbitrary${Q} -->
" )

so that you don't prematurely end your $body parameter.  this is
obviously not ideal, but may be easier than writing a custom
directive, depending on the specifics of your case(s).

On Jan 3, 2008 2:35 PM, Nathan Bubna <nb...@gmail.com> wrote:
> Also note that as of Velocity 1.5, you can include line breaks in
> strings, making it reasonable (though not as pretty to do something
> like:
>
> #macro( myForm $body )
> <form...>
> $body
> </form>
> #end
>
> #myForm("
> <!-- some arbitrary html here -->
> ")
>
>
>
> On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
>
> > Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
> >
> > I would ideally like to do something like,
> >
> > #myForm(...)
> >   <!-- some arbitrary html here -->
> > #end
> >
> > generating something like
> >
> > <form ....
> >   <!-- some arbitrary html here -->
> > </form>
> >
> > Any suggestions would be greatly appreciated.
> >
> > Thanks,
> > Raghu.
> >
> > _________________________________________________________________
> > Share life as it happens with the new Windows Live.
> > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
For additional commands, e-mail: user-help@velocity.apache.org


Re: Blocks in Velocimacros

Posted by Nathan Bubna <nb...@gmail.com>.
Also note that as of Velocity 1.5, you can include line breaks in
strings, making it reasonable (though not as pretty to do something
like:

#macro( myForm $body )
<form...>
$body
</form>
#end

#myForm("
<!-- some arbitrary html here -->
")



On Jan 2, 2008 7:13 PM, Raghuram Rajah <rr...@hotmail.com> wrote:
> Can I use a block within a velocimacro? Basically, I am trying to create a macro that will emit a XHTML tag with some javascript out. I would hate to create a begin macro and an end macro to accomplish this. That would be rather error prone.
>
> I would ideally like to do something like,
>
> #myForm(...)
>   <!-- some arbitrary html here -->
> #end
>
> generating something like
>
> <form ....
>   <!-- some arbitrary html here -->
> </form>
>
> Any suggestions would be greatly appreciated.
>
> Thanks,
> Raghu.
>
> _________________________________________________________________
> Share life as it happens with the new Windows Live.
> http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
For additional commands, e-mail: user-help@velocity.apache.org