Konstantin Priblouda wrote:
--- Adrian Tarau <[EMAIL PROTECTED]> wrote:

I agree, don't judge any online community based on
guys like Jonathan. Just ignore them...

funny thig is, it' s spillover from completely
different community ;)

What different community? What are you talking about? The origin of this thread is Adrian responding to my private note on a public list, this one. The poor boy thought it was so shocking that I said that Velocity (and I was quite specific referring to its macro system) as "junk" in a private note, it was so shocking that he just had to reply to me in a lecturing tone *in public*!!!

And then this guy continually lies subsequently, that he had heatedly written a response to me "automatically". If he'd done that, he would have hit "reply-to" and would have answered in private. He then later referred to my private email as a rant, he had never seen anything like that in 8 years! THat was really a lie, I mean, what I wrote him in private a technically focused note. I'm going to provide it again so you see what kind of snivelling lying scum this guy is.

The text of my "rant" (according to Adrian) follows:
----------------------------------------------------------
Adrian Tarau wrote:
> I've always used #if to implement the 'switch' but I think, even for 3-4
> conditions, the template will look cleaner.
>
> Instead of
>
> #if('renderLabel' == $macroToCall)
> #renderLabel($component)
> #elseif('renderInput' == $macroToCall)
> #renderInput($component)
> #elseif(...)
> ...
> #end
>
> we will have
>
> #call($macroToCall $component).

This kind of thing is trivial in FreeMarker. For example, suppose you had:

<#assign macroHash = {'renderLabel' : labelMacro, 'renderInput' : renderMacro, .... >

and then, supposing you have an action string, like suppose:

[#assign action = 'renderLabel']

then you could invoke the macro via:

<@macroHash[action] component />


The thing is that macros in FreeMarker are variables, and can be in hashes or assigned to variables or whatever, and also the foo in <@foo/> to invoke the macro can be any arbitrary expression.

So, for example, suppose the macro you want to invoke is in the string macroName, you could invoke it via:

<@.vars[macroName] component/>

(.vars is a special built-in hash that contains the variables available in the template and since macros are variables as well, .vars[macroName] is the macro with the name macroName and it can be invoked this way, or you could create a variable.

<#assign myMacro = .vars[macroName]>

and invoke it via:

<@myMacro component/>


Well, in general, once you want to do anything moderately complex with velocimacros, the thing breaks because it's.... junk. :-)

Here is a blog entry I wrote regarding some of this sort of thing:

http://freemarker.blogspot.com/2007/12/velocity-of-freemarker-looking-at-5.html





----[ Konstantin Pribluda http://www.pribluda.de ]----------------
JTec quality components: http://www.pribluda.de/projects/


      
____________________________________________________________________________________
Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to