'eval' Method
eval(String script)
This method will evaluate a Groovy code from a string and return the result.
$groovy.eval("println 'Hello World!'")
eval(String script, String bindingName, Object bindingObject)
This method will evaluate a Groovy code with a single binding object and specified binding name. The code will be evaluated from a string. The binding name will be used as the name for this object.
#foreach ($c in $Class) $groovy.eval("println classname", "classname", $c.name) #end
eval(String script, Map bindingMap)
This method will evaluate a Groovy code with a set of binding arguments (a name and an object). The code will be evaluated from a string. The binding map consists of key-value pairs for the binding name and the binding object.
#set ($dict = $map.createHashMap()) #set ($void = $dict.put("first", "foo")) #set ($void = $dict.put("last", "bar")) $groovy.eval("println first + last", $dict)
Or
$groovy.eval("println first + ' ' + last", {"first":"foo", "last":"bar"})
The second code contains curly brackets; '{' and '}' characters, which are not allowed to be used in any RTF template. For the RTF template, use the first code instead.
'execute' method
execute(String filename)
This method will execute a Groovy file. The 'filename' parameter refers to a name of the Groovy file, an absolute path to the Groovy file, or a relative path starting from the template to the Groovy file.
$groovy.execute("filename.groovy")
If the Groovy file contains Groovy functions, you can recall the functions by using 'eval()' methods.
$groovy.execute('filename.groovy') $groovy.eval("new groovy().functionname()")
execute(String filename, String bindingName, Object bindingObject)
This method will execute a Groovy file with a single binding object and specified binding name. The 'filename' parameter refers to a name of the Groovy file, an absolute path to the Groovy file, or a relative path starting from the template to the Groovy file. The binding name will be used as the name for this object.
File filename.groovy
"Class name is " + $c.name
The template code
#foreach ($c in $Class) $groovy.execute("filename.groovy", 'c', $c) #end
execute(String filename, Map bindingMap)
This method will execute a Groovy file with a set of binding arguments (a name and an object). The 'filename' parameter refers to a name of the Groovy file, an absolute path to the Groovy file, or a relative path starting from the template to the Groovy file. The binding map consists of key-value pairs for the binding name and the binding object.
File filename.groovy
first + " " + last
The template code
#set ($dict = $map.createHashMap()) #set ($void = $dict.put("first", "foo")) #set ($void = $dict.put("last", "bar")) $groovy.execute("filename.groovy", $dict)
- Absolute Path: If the 'filename' is provided with an absolute path, Groovy Tool will read the Groovy file from an absolute location such as $groovy.execute('c:/mycode/readclass.groovy').
- Relative Path: If the 'filename' is provided with a relative path, Groovy Tool will read the template from a relative location. This relative location starts from the current directory in which the template is located such as $groovy.execute('readclass.groovy').