You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by ge...@apache.org on 2003/10/22 21:31:23 UTC

cvs commit: jakarta-velocity/contrib/temporary/localdirective LocalDirective.java foo.vm readme.txt recurse.vm velocity.properties

geirm       2003/10/22 12:31:22

  Added:       contrib/temporary/localdirective LocalDirective.java foo.vm
                        readme.txt recurse.vm velocity.properties
  Log:
  A little directive to protect references
  
  Revision  Changes    Path
  1.1                  jakarta-velocity/contrib/temporary/localdirective/LocalDirective.java
  
  Index: LocalDirective.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Velocity", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  
  import org.apache.velocity.context.InternalContextAdapter;
  import org.apache.velocity.runtime.parser.node.Node;
  import org.apache.velocity.runtime.parser.node.SimpleNode;
  import org.apache.velocity.runtime.directive.Directive;
  import org.apache.velocity.runtime.parser.ParserTreeConstants;
  import org.apache.velocity.exception.MethodInvocationException;
  import org.apache.velocity.exception.ResourceNotFoundException;
  import org.apache.velocity.exception.ParseErrorException;
  
  import org.apache.velocity.runtime.parser.node.ASTReference;
  
  import java.io.Writer;
  import java.io.IOException;
  import java.util.Map;
  import java.util.HashMap;
  import java.util.Iterator;
  
  
  /**
   *   Simple directive to provide ability to trap a local value for
   *   iteration.
   *
   *   Ex :
   *
   *   #set($foo = 1)
   *   $foo
   *   #local($foo)
   *      #set($foo = 2)
   *      $foo
   *   #end
   *    $foo
   *
   *    should output
   *
   *    1
   *       2
   *    1
   *
   * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
   * @version $Id: LocalDirective.java,v 1.1 2003/10/22 19:31:22 geirm Exp $ 
   */
  public class LocalDirective extends Directive
  {
      public String getName()
      {
          return "local";
      }
  
          public int getType()
          {
              return BLOCK;
          }
  
          public boolean render(InternalContextAdapter context,
                                 Writer writer, Node node)
          throws IOException,  MethodInvocationException, ResourceNotFoundException,
                  ParseErrorException
          {
              Map data = new HashMap();
  
              int num = node.jjtGetNumChildren();
  
              /*
               * get the references
               */
  
              for (int i=0; i < num; i++)
              {
                  SimpleNode child = (SimpleNode) node.jjtGetChild(i);
  
                  /*
                   * if a block, just execute
                   */
  
                  if (child.getType() == ParserTreeConstants.JJTBLOCK)
                  {
                      child.render(context, writer);
                      break;
                  }
                  else
                  {
                      /* save the values - for now, just w/ ref to test */
  
                      if (child.getType() == ParserTreeConstants.JJTREFERENCE)
                      {
                          data.put(child, child.execute(null, context));
                      }
                      else
                      {
                          System.out.println("unhandled type");
                      }
                  }
              }
  
              Iterator it = data.keySet().iterator();
  
              while(it.hasNext())
              {
                  ASTReference ref = (ASTReference) it.next();
  
                  ref.setValue(context, data.get(ref));
              }
  
              return true;
          }
  }
  
  
  
  1.1                  jakarta-velocity/contrib/temporary/localdirective/foo.vm
  
  Index: foo.vm
  ===================================================================
  #set($foo = 1)
  $foo
  #local( $foo)
     $foo
     #set($foo = 2)
     $foo
  
     #local($foo)
       #set($foo = 5)
       $foo
     #end
  
     $foo
  
  #end
  
  $foo
  
  
  
  
  1.1                  jakarta-velocity/contrib/temporary/localdirective/readme.txt
  
  Index: readme.txt
  ===================================================================
  This is an implementation of a #local() directive.
  
  Use :
  
    #local($arg $arg1...)
  
  
    #end
  
  and the values for $arg etc will be 'protected' - the will be the same
  after the block as before.  Currently this is limited to references $<foo>
  
  
  
  
  1.1                  jakarta-velocity/contrib/temporary/localdirective/recurse.vm
  
  Index: recurse.vm
  ===================================================================
  #macro(foo $value)
    $value
     #if ($value > 0)
         #set($value = $value - 1)
         #foo($value)
     #end
     $value
  #end
  
  #macro(foofoo $value)
    $value
    #local($value)
     #if ($value > 0)
         #set($value = $value - 1)
         #foofoo($value)
     #end
     #end
     $value
  #end
  
  
  #foo(5)
  #foofoo(5)
  
  
  
  1.1                  jakarta-velocity/contrib/temporary/localdirective/velocity.properties
  
  Index: velocity.properties
  ===================================================================
  userdirective=LocalDirective
  
  
  

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


Re: cvs commit: jakarta-velocity/contrib/temporary/localdirective LocalDirective.java foo.vm readme.txt recurse.vm velocity.properties

Posted by "Geir Magnusson Jr." <ge...@optonline.net>.
indeed.  Been switching to a new box now that I'm done with Adeptra and 
have to give the pb17 back.  I guess I've screwed up some settings in 
Idea.

Thx

Will fix

On Wednesday, October 22, 2003, at 07:25 PM, Daniel Rall wrote:

> The indentation appears to be horked.  Tab problem, perhaps?
>
> geirm@apache.org wrote:
>> geirm       2003/10/22 12:31:22
>>   Added:       contrib/temporary/localdirective LocalDirective.java 
>> foo.vm
>>                         readme.txt recurse.vm velocity.properties
>>   Log:
>>   A little directive to protect references
>>     Revision  Changes    Path
>>   1.1                  
>> jakarta-velocity/contrib/temporary/localdirective/LocalDirective.java
>>     Index: LocalDirective.java
>>   ===================================================================
>>   /*
>>    * The Apache Software License, Version 1.1
>>    *
>>    * Copyright (c) 2003 The Apache Software Foundation.  All rights
>>    * reserved.
>>    *
>>    * Redistribution and use in source and binary forms, with or 
>> without
>>    * modification, are permitted provided that the following 
>> conditions
>>    * are met:
>>    *
>>    * 1. Redistributions of source code must retain the above copyright
>>    *    notice, this list of conditions and the following disclaimer.
>>    *
>>    * 2. Redistributions in binary form must reproduce the above 
>> copyright
>>    *    notice, this list of conditions and the following disclaimer 
>> in
>>    *    the documentation and/or other materials provided with the
>>    *    distribution.
>>    *
>>    * 3. The end-user documentation included with the redistribution, 
>> if
>>    *    any, must include the following acknowlegement:
>>    *       "This product includes software developed by the
>>    *        Apache Software Foundation (http://www.apache.org/)."
>>    *    Alternately, this acknowlegement may appear in the software 
>> itself,
>>    *    if and wherever such third-party acknowlegements normally 
>> appear.
>>    *
>>    * 4. The names "The Jakarta Project", "Velocity", and "Apache 
>> Software
>>    *    Foundation" must not be used to endorse or promote products 
>> derived
>>    *    from this software without prior written permission. For 
>> written
>>    *    permission, please contact apache@apache.org.
>>    *
>>    * 5. Products derived from this software may not be called "Apache"
>>    *    nor may "Apache" appear in their names without prior written
>>    *    permission of the Apache Group.
>>    *
>>    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>>    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>>    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>>    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>>    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>>    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>>    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>>    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
>> AND
>>    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
>> LIABILITY,
>>    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
>> OUT
>>    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
>> OF
>>    * SUCH DAMAGE.
>>    * 
>> ====================================================================
>>    *
>>    * This software consists of voluntary contributions made by many
>>    * individuals on behalf of the Apache Software Foundation.  For 
>> more
>>    * information on the Apache Software Foundation, please see
>>    * <http://www.apache.org/>.
>>    */
>>       import org.apache.velocity.context.InternalContextAdapter;
>>   import org.apache.velocity.runtime.parser.node.Node;
>>   import org.apache.velocity.runtime.parser.node.SimpleNode;
>>   import org.apache.velocity.runtime.directive.Directive;
>>   import org.apache.velocity.runtime.parser.ParserTreeConstants;
>>   import org.apache.velocity.exception.MethodInvocationException;
>>   import org.apache.velocity.exception.ResourceNotFoundException;
>>   import org.apache.velocity.exception.ParseErrorException;
>>     import org.apache.velocity.runtime.parser.node.ASTReference;
>>     import java.io.Writer;
>>   import java.io.IOException;
>>   import java.util.Map;
>>   import java.util.HashMap;
>>   import java.util.Iterator;
>>       /**
>>    *   Simple directive to provide ability to trap a local value for
>>    *   iteration.
>>    *
>>    *   Ex :
>>    *
>>    *   #set($foo = 1)
>>    *   $foo
>>    *   #local($foo)
>>    *      #set($foo = 2)
>>    *      $foo
>>    *   #end
>>    *    $foo
>>    *
>>    *    should output
>>    *
>>    *    1
>>    *       2
>>    *    1
>>    *
>>    * @author <a href="mailto:geirm@optonline.net">Geir Magnusson 
>> Jr.</a>
>>    * @version $Id: LocalDirective.java,v 1.1 2003/10/22 19:31:22 
>> geirm Exp $    */
>>   public class LocalDirective extends Directive
>>   {
>>       public String getName()
>>       {
>>           return "local";
>>       }
>>             public int getType()
>>           {
>>               return BLOCK;
>>           }
>>             public boolean render(InternalContextAdapter context,
>>                                  Writer writer, Node node)
>>           throws IOException,  MethodInvocationException, 
>> ResourceNotFoundException,
>>                   ParseErrorException
>>           {
>>               Map data = new HashMap();
>>                 int num = node.jjtGetNumChildren();
>>                 /*
>>                * get the references
>>                */
>>                 for (int i=0; i < num; i++)
>>               {
>>                   SimpleNode child = (SimpleNode) node.jjtGetChild(i);
>>                     /*
>>                    * if a block, just execute
>>                    */
>>                     if (child.getType() == 
>> ParserTreeConstants.JJTBLOCK)
>>                   {
>>                       child.render(context, writer);
>>                       break;
>>                   }
>>                   else
>>                   {
>>                       /* save the values - for now, just w/ ref to 
>> test */
>>                         if (child.getType() == 
>> ParserTreeConstants.JJTREFERENCE)
>>                       {
>>                           data.put(child, child.execute(null, 
>> context));
>>                       }
>>                       else
>>                       {
>>                           System.out.println("unhandled type");
>>                       }
>>                   }
>>               }
>>                 Iterator it = data.keySet().iterator();
>>                 while(it.hasNext())
>>               {
>>                   ASTReference ref = (ASTReference) it.next();
>>                     ref.setValue(context, data.get(ref));
>>               }
>>                 return true;
>>           }
>>   }
>>         1.1                  
>> jakarta-velocity/contrib/temporary/localdirective/foo.vm
>>     Index: foo.vm
>>   ===================================================================
>>   #set($foo = 1)
>>   $foo
>>   #local( $foo)
>>      $foo
>>      #set($foo = 2)
>>      $foo
>>        #local($foo)
>>        #set($foo = 5)
>>        $foo
>>      #end
>>        $foo
>>     #end
>>     $foo
>>           1.1                  
>> jakarta-velocity/contrib/temporary/localdirective/readme.txt
>>     Index: readme.txt
>>   ===================================================================
>>   This is an implementation of a #local() directive.
>>     Use :
>>       #local($arg $arg1...)
>>         #end
>>     and the values for $arg etc will be 'protected' - the will be the 
>> same
>>   after the block as before.  Currently this is limited to references 
>> $<foo>
>>           1.1                  
>> jakarta-velocity/contrib/temporary/localdirective/recurse.vm
>>     Index: recurse.vm
>>   ===================================================================
>>   #macro(foo $value)
>>     $value
>>      #if ($value > 0)
>>          #set($value = $value - 1)
>>          #foo($value)
>>      #end
>>      $value
>>   #end
>>     #macro(foofoo $value)
>>     $value
>>     #local($value)
>>      #if ($value > 0)
>>          #set($value = $value - 1)
>>          #foofoo($value)
>>      #end
>>      #end
>>      $value
>>   #end
>>       #foo(5)
>>   #foofoo(5)
>>         1.1                  
>> jakarta-velocity/contrib/temporary/localdirective/velocity.properties
>>     Index: velocity.properties
>>   ===================================================================
>>   userdirective=LocalDirective
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: velocity-dev-help@jakarta.apache.org
>
>
-- 
Geir Magnusson Jr                                   203-247-1713(m)
geirm@optonline.net


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


Re: cvs commit: jakarta-velocity/contrib/temporary/localdirective LocalDirective.java foo.vm readme.txt recurse.vm velocity.properties

Posted by Daniel Rall <dl...@finemaltcoding.com>.
The indentation appears to be horked.  Tab problem, perhaps?

geirm@apache.org wrote:
> geirm       2003/10/22 12:31:22
> 
>   Added:       contrib/temporary/localdirective LocalDirective.java foo.vm
>                         readme.txt recurse.vm velocity.properties
>   Log:
>   A little directive to protect references
>   
>   Revision  Changes    Path
>   1.1                  jakarta-velocity/contrib/temporary/localdirective/LocalDirective.java
>   
>   Index: LocalDirective.java
>   ===================================================================
>   /*
>    * The Apache Software License, Version 1.1
>    *
>    * Copyright (c) 2003 The Apache Software Foundation.  All rights
>    * reserved.
>    *
>    * Redistribution and use in source and binary forms, with or without
>    * modification, are permitted provided that the following conditions
>    * are met:
>    *
>    * 1. Redistributions of source code must retain the above copyright
>    *    notice, this list of conditions and the following disclaimer.
>    *
>    * 2. Redistributions in binary form must reproduce the above copyright
>    *    notice, this list of conditions and the following disclaimer in
>    *    the documentation and/or other materials provided with the
>    *    distribution.
>    *
>    * 3. The end-user documentation included with the redistribution, if
>    *    any, must include the following acknowlegement:
>    *       "This product includes software developed by the
>    *        Apache Software Foundation (http://www.apache.org/)."
>    *    Alternately, this acknowlegement may appear in the software itself,
>    *    if and wherever such third-party acknowlegements normally appear.
>    *
>    * 4. The names "The Jakarta Project", "Velocity", and "Apache Software
>    *    Foundation" must not be used to endorse or promote products derived
>    *    from this software without prior written permission. For written
>    *    permission, please contact apache@apache.org.
>    *
>    * 5. Products derived from this software may not be called "Apache"
>    *    nor may "Apache" appear in their names without prior written
>    *    permission of the Apache Group.
>    *
>    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
>    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
>    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
>    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>    * SUCH DAMAGE.
>    * ====================================================================
>    *
>    * This software consists of voluntary contributions made by many
>    * individuals on behalf of the Apache Software Foundation.  For more
>    * information on the Apache Software Foundation, please see
>    * <http://www.apache.org/>.
>    */
>   
>   
>   import org.apache.velocity.context.InternalContextAdapter;
>   import org.apache.velocity.runtime.parser.node.Node;
>   import org.apache.velocity.runtime.parser.node.SimpleNode;
>   import org.apache.velocity.runtime.directive.Directive;
>   import org.apache.velocity.runtime.parser.ParserTreeConstants;
>   import org.apache.velocity.exception.MethodInvocationException;
>   import org.apache.velocity.exception.ResourceNotFoundException;
>   import org.apache.velocity.exception.ParseErrorException;
>   
>   import org.apache.velocity.runtime.parser.node.ASTReference;
>   
>   import java.io.Writer;
>   import java.io.IOException;
>   import java.util.Map;
>   import java.util.HashMap;
>   import java.util.Iterator;
>   
>   
>   /**
>    *   Simple directive to provide ability to trap a local value for
>    *   iteration.
>    *
>    *   Ex :
>    *
>    *   #set($foo = 1)
>    *   $foo
>    *   #local($foo)
>    *      #set($foo = 2)
>    *      $foo
>    *   #end
>    *    $foo
>    *
>    *    should output
>    *
>    *    1
>    *       2
>    *    1
>    *
>    * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
>    * @version $Id: LocalDirective.java,v 1.1 2003/10/22 19:31:22 geirm Exp $ 
>    */
>   public class LocalDirective extends Directive
>   {
>       public String getName()
>       {
>           return "local";
>       }
>   
>           public int getType()
>           {
>               return BLOCK;
>           }
>   
>           public boolean render(InternalContextAdapter context,
>                                  Writer writer, Node node)
>           throws IOException,  MethodInvocationException, ResourceNotFoundException,
>                   ParseErrorException
>           {
>               Map data = new HashMap();
>   
>               int num = node.jjtGetNumChildren();
>   
>               /*
>                * get the references
>                */
>   
>               for (int i=0; i < num; i++)
>               {
>                   SimpleNode child = (SimpleNode) node.jjtGetChild(i);
>   
>                   /*
>                    * if a block, just execute
>                    */
>   
>                   if (child.getType() == ParserTreeConstants.JJTBLOCK)
>                   {
>                       child.render(context, writer);
>                       break;
>                   }
>                   else
>                   {
>                       /* save the values - for now, just w/ ref to test */
>   
>                       if (child.getType() == ParserTreeConstants.JJTREFERENCE)
>                       {
>                           data.put(child, child.execute(null, context));
>                       }
>                       else
>                       {
>                           System.out.println("unhandled type");
>                       }
>                   }
>               }
>   
>               Iterator it = data.keySet().iterator();
>   
>               while(it.hasNext())
>               {
>                   ASTReference ref = (ASTReference) it.next();
>   
>                   ref.setValue(context, data.get(ref));
>               }
>   
>               return true;
>           }
>   }
>   
>   
>   
>   1.1                  jakarta-velocity/contrib/temporary/localdirective/foo.vm
>   
>   Index: foo.vm
>   ===================================================================
>   #set($foo = 1)
>   $foo
>   #local( $foo)
>      $foo
>      #set($foo = 2)
>      $foo
>   
>      #local($foo)
>        #set($foo = 5)
>        $foo
>      #end
>   
>      $foo
>   
>   #end
>   
>   $foo
>   
>   
>   
>   
>   1.1                  jakarta-velocity/contrib/temporary/localdirective/readme.txt
>   
>   Index: readme.txt
>   ===================================================================
>   This is an implementation of a #local() directive.
>   
>   Use :
>   
>     #local($arg $arg1...)
>   
>   
>     #end
>   
>   and the values for $arg etc will be 'protected' - the will be the same
>   after the block as before.  Currently this is limited to references $<foo>
>   
>   
>   
>   
>   1.1                  jakarta-velocity/contrib/temporary/localdirective/recurse.vm
>   
>   Index: recurse.vm
>   ===================================================================
>   #macro(foo $value)
>     $value
>      #if ($value > 0)
>          #set($value = $value - 1)
>          #foo($value)
>      #end
>      $value
>   #end
>   
>   #macro(foofoo $value)
>     $value
>     #local($value)
>      #if ($value > 0)
>          #set($value = $value - 1)
>          #foofoo($value)
>      #end
>      #end
>      $value
>   #end
>   
>   
>   #foo(5)
>   #foofoo(5)
>   
>   
>   
>   1.1                  jakarta-velocity/contrib/temporary/localdirective/velocity.properties
>   
>   Index: velocity.properties
>   ===================================================================
>   userdirective=LocalDirective



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