Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-687

Macro pass by value option

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0
    • 2.0
    • Engine
    • None

    Description

      Add a configuration property which would change macro parameter passing from pass by name, to pass by value. I think in many instances this option will provide behavior that is more intuitive to the user. There are two important exceptions to this, references created by #define, and references created by BlockMacro's $bodyContent. This allows the user to still specify pass by name semantics when desired, for example:

      #define($x) #if($foo)$foo.bar#

      {else}None#end #end
      #go($x)

      In the above example '#if($foo)$foo.bar#{else}

      None#end' will be passed by name. In all other cases pass by value rules apply for example:

      #go($foo.bar [1, 2, 3] #if($bar)Yes#

      {else}

      No#end)

      In the above example all parameters will be evaluated to a value first, then passed to #go. This has potential performance improvements also.

      Attachments

        1. value.patch
          3 kB
          Byron Foster

        Activity

          People

            Unassigned Unassigned
            byronvf Byron Foster
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: