cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Glen Ezkovich <ge...@mac.com>
Subject Re: JXTG: invoke macro by name from expression
Date Thu, 09 Dec 2004 03:44:31 GMT

On Dec 8, 2004, at 3:04 PM, Leszek Gawron wrote:

> I would like to add one feature to JXTG that would allow not to 
> promote hacks like [1]. Example:
>
> <jx:macro name="fooBar">
>   <some>content</some>
> </jx:macro>
>
> you can only invoke it by <fooBar/>
>
> If I were able to do <jx:invoke macro="fooBar"/> I would be able to 
> pass macro name as a parameter to other macro which allows quite 
> powerful data injection technique:
>
> <jx:macro name="superPrettyPrintedTable">
>   <jx:parameter name="headerTemplate"/>
>   <jx:parameter name="elements"/>
>   <jx:parameter name="rowTemplate"/>
>   <!-- fancy code with lots of graphics here -->
>   <table>
>     <tr>
>       <jx:invoke macro="${headerTemplate}"/>
>     </tr>
>     <jx:forEach var="currentElement"
>                 items="elements"
>                 varStatus="status">
>       <tr>
>         <td>${status.index}</td>
>         <jx:invoke macro="${rowTemplate}" element="${currentElement}"/>
>       </tr>
>     </jx:forEach>
>   </table>
>   <!-- fancy code with lots of graphics there -->
> </jx:macro>
>
> then use the macro like this:
> <jx:macro name="addressesHeaderTemplate">
>   <th>City</th><th>Street</th>
> </jx:macro>
> <jx:macro name="addressRowTemplate">
>   <jx:parameter name="address"/>
>   <td>${address.city}</td>
>   <td>${address.street}/td>
> </jx:macro>
> <jx:invoke macro="superPrettyPrintedTable"
>            headerTemplate="addressHeaderTemplate"
>            elements="${addresses}"
>            rowTemplate="addressRowTemplate"/>
>
>
> WDYT? We could deprecate jx:eval then which is not fully supported as 
> additional Map structure has to be used as [1] shows.
>
> It does not seem that much coding is needed. I could also strip all 
> inner classes from JXTG at the same time as the first step for JXTG 
> refactoring.

Sounds good to me. a non-voting +1


Glen Ezkovich
HardBop Consulting
glen at hard-bop.com
http://www.hard-bop.com



A Proverb for Paranoids:
"If they can get you asking the wrong questions, they don't have to 
worry about answers."
- Thomas Pynchon Gravity's Rainbow


Mime
View raw message