It should work, so debug it by testing everything: ------%<------
#macro(my_trim)$bodyContent becomes $!bodyContent.trim()#end Just #qu: #query_url("sometext") Trimmed: #@my_trim()#query_url("sometext")#end ------>%------ On 08/07/2013 05:09 PM, O. Olson wrote: > > > Thank you very much Nathan for clarifying what body content > meant. At least now I know what it means, but I think I am having a problem > with my trim function here. It seems to delete everything. I have no clue how > this worked previously. > > To avoid naming conflicts, I decided to rename my macro. It > now looks like: > #macro(query_url $query_param) > q=$query_param > #end > > #macro(my_trim)$!bodyContent.trim()#end > > > > I call it using > #@my_trim()#query_url("sometext")#end > > > And the result is blank i.e. I do not see anything in the > result. I now attempt: > #macro(my_trim)PREPEND$!bodyContent.trim()#end > > > This time I see only: > PREPEND > > This is expected, but why nothing from $!bodyContent.trim() > > I don't know what is happening to trim() function i.e. why > it is not working. But thank you for answering my question. > > O. O. > > > ----- Messaggio originale ----- > Da: Nathan Bubna <nbu...@gmail.com> > A: Velocity Users List <user@velocity.apache.org>; O. Olson > <olson_...@yahoo.it> > Cc: > Inviato: Lunedì 5 Agosto 2013 22:34 > Oggetto: Re: What does "Velocimacro with a Body" mean? > > Yes, all velocimacros have bodies in their definition: > > #macro( foo ) definition only #end > #macro( bar ) definition accepts $bodyContent #end > > Not all velocimacros accept bodies in their usage: > > #foo() > #@bar() body content when used #end > > Produces: > > definition only > definition accepts body content when used > > As to why your example ends up with preceding spaces, i am not > certain. The "format" part in particular, because Velocity has only > input text and output text, no "format". Try defining your #@trim > like so: > > #macro( trim )$!bodyContent.trim()#end > > to ensure there are no sneaky whitespaces hiding in the definition. > > > On Mon, Aug 5, 2013 at 9:25 AM, O. Olson <olson_...@yahoo.it> wrote: >> Hi, >> >> I am new to >> Velocity and I am wondering what "Velocimacro with a Body" means? >> Here, I am referring to the description in >> http://velocity.apache.org/engine/releases/velocity-1.7/vtl-reference-guide.html#amacro_-_Allows_users_to_define_a_Velocimacro_VM_a_repeated_segment_of_a_VTL_template_as_required >> >> I thought >> all Velocimacros had bodies, just like all non-trivial functions in C or Java >> have bodies. I attempted the use the above suggestion given in the URL and >> it did not >> work. >> >> I attempted the following in my Global Library: >> >> #macro(query_url $query_param) >> q=$query_param >> #end >> >> #macro(trim) >> $!bodyContent.trim() >> #end >> >> According to the above URL, in my template, I called this >> using: >> >> #@trim()#query_url("sometext")#end >> >> >> The result seems to be: >> q=sometext >> >> i.e. there are spaces in the front that I don't like. >> (Depending on the format you are looking at, these preceeding spaces might be >> deleted, but they appear in the rendered results.) Any ideas what I am doing >> wrong? >> >> Thank you in advance, >> O. O. -- Sergiu Dumitriu http://purl.org/net/sergiu --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org For additional commands, e-mail: user-h...@velocity.apache.org