There is also an implicit syntaxic change in Henning's code example:

he uses
  #macro myNamedMacro($arg1, $arg2, $arg3)
    ... do something with $arg1, $arg2, $arg3
  #end

which is quite natural but AFAIK not supported since the valid syntax is:
  #macro (myNamedMacro, $arg1, $arg2, $arg3)
    ... do something with $arg1, $arg2, $arg3
  #end

Supporting the former syntax would be great.


  Claude


Le mardi 29 mai 2007 à 18:28 +0530, Supun Kamburugamuva a écrit :
> Hi,
> 
> I have gone through most of the stuff pointed by Henning and now I
> think I'm ready to start the real work. So I thought I should start
> with a simple thing at the beginning. So I choose the 4th suggestion
> (blank as argument delimiter') from Hennings list (I don't think this
> will take much time). At the moment I'm working on it and trying to
> figure out how it should be done.
> 
> Regards,
> Supun..
> 
> 
> 
> 
> On 5/10/07, Henning P. Schmiedehausen <[EMAIL PROTECTED]> wrote:
> > "Supun Kamburugamuva" <[EMAIL PROTECTED]> writes:
> >
> > Hi Supun,
> >
> > >I would like to start working on the macro issues as soon as possible.
> > > I know the code writing officially starts on 28th May. But I thought
> > >starting early would be better.
> >
> >
> > I added a page to the Wiki about this
> > (http://wiki.apache.org/velocity/GoogleSummerOfCode2007) and also some
> > suggestions. Please do not be afraid about my + - ++++ scale, I might
> > be terribly off. Also bear with my syntax typos, it's already late
> > here.
> >
> > If we can get one or two ++ items resolved or even one ++++ item, I
> > would be very happy with the GSOC project.
> >
> > >I have gone through the macro code and still I don't have a clear
> > >picture of how the macro stuff is working.  What I have done up to now
> > >is setting up debug points where I feel important and debugging the
> > >code.
> >
> > Welcome to our world. :-)
> >
> > Here is the whirlwind tour. Let's see how much I still remember off
> > the top of my head and how much I must look up in the code base:
> >
> > In the depths of the parser, there is Macro.processAndRegister. This
> > is where a macro is registered with the engine. This in turn calls
> > addVelocimacro on the passed RuntimeServices object (which is the
> > actual instance of the engine). This is where the Velocimacro Factory
> > comes in, because this call is just a facade before the call in the
> > factory. The factory and the VelocimacroManager (which is inside the
> > factory) are what keeps the macros inside the engine. The factory
> > manages the macros and the manager the namespaces (yes, we do have
> > such an underdocumented feature).
> >
> > The macros themselves are invoked when the AST is parsed, through a
> > lookup in the ASTDirective class. This represents a directive on the
> > AST, either one of the defined (#if, #set etc) through
> > parser.isDirective() or a macro (which is similar, e.g. #foo, #bar)
> > through rsvc.isVelocimacro()).
> >
> > I'd suggest that you check out src/parser/Parser.jjt which gets
> > compiled by JJTree/JavaCC into the parser-related classes.
> >
> > The most interesting breakpoints are probably the following method
> > entry points:
> >
> > RuntimeInstance:
> >
> >  * addVelocimacro
> >  * getVelocimacro
> >
> > VelociMacroManager:
> >
> >  * addNamespace
> >  * getNamespace (multiple)
> >
> > VelociMacroManager.MacroEntry:
> >
> >  * C'tor
> >  * getNodeTree
> >  * createVelocimacro
> >  * parseTree
> >  * setup
> >
> > VelocimacroFactory:
> >
> >  * getVelocimacro (do not remove the synchronized block!)
> >  * initVelocimacro
> >  * addVelocimacro
> >
> > This is hopefully enough to get you going. Write a small harness to
> > test your code (load a template, parse it, render it) and test a few
> > very simple templates under the debugger. This should give you an idea
> > how inline macros work. Try again with a macro library (configured in
> > properties) to understand the difference. Look at the setFromLibrary()
> > methods in the MacroEntry class.
> >
> > Find out, what the Twonk is good for. ;-)
> >
> >        Best regards
> >                Henning
> >
> > --
> > Henning P. Schmiedehausen  -- [EMAIL PROTECTED] | J2EE, Linux,              
> >  |gls
> > 91054 Buckenhof, Germany   -- +49 9131 506540  | Apache person              
> > |eau
> > Open Source Consulting, Development, Design    | Velocity - Turbine guy     
> > |rwc
> >                                                                            
> > |m k
> > INTERMETA - Gesellschaft fuer Mehrwertdienste mbH - RG Fuerth, HRB 7350     
> > |a s
> > Sitz der Gesellschaft: Buckenhof. Geschaeftsfuehrer: Henning Schmiedehausen 
> > |n
> >
> >               "Save the cheerleader. Save the world."
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


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

Reply via email to