Eclipse UI and Scripting

Scripting opens up an entire new world for working with ProRefactor and the syntax tree. As of version 1.7.2, the Groovy scripting engine has been added to ProRefactor's bundled libraries.

Using Scripts with ProRefactor in Eclipse

A menu item has been added to the context menu on the Navigator view: ProRefactor -> Tool Devel Utils -> Groovy Console. If you have a .p, .w, or .cls file selected when you launch the Groovy console, then within your console the File variable selectedFile is available for your script.

For example, you could select a .p, launch the Groovy Console, and then do something like this:

import org.prorefactor.core.JPNode
import org.prorefactor.core.TokenTypes
import org.prorefactor.treeparser.ParseUnit

indent = 0
def walker(node) {
	if (!node) return
	println '  '*indent + TokenTypes.getTokenName(node.getType()) + ' ' + node.getText()
	indent++
	walker(node.firstChild())
	indent--
	walker(node.nextSibling())
}

ParseUnit pu = new ParseUnit(selectedFile)
pu.loadOrBuildPUB()
walker(pu.topNode)

To see what variables are available in your Groovy Console, select Actions -> Inspect Variables from the console menu. The following little script shows something similar:

binding.variables.each {key, value ->
  if (key[0] == '_') return
  println "$key : $value"
  }

I found a way to get my own scripts directory into the classpath when using the console:

this.class.classLoader.addClasspath('/home/john/scripts')
println this.class.classLoader.classPath