Skip to content

Instantly share code, notes, and snippets.

@robhinds
Created January 22, 2014 21:14
Show Gist options
  • Select an option

  • Save robhinds/8567455 to your computer and use it in GitHub Desktop.

Select an option

Save robhinds/8567455 to your computer and use it in GitHub Desktop.
class UnwelcomeVisitorIterator {
static public traverse( data, visitor ){
if ( data instanceof Map ){
data.each{ entrySet ->
entrySet.value = visitor.visitMap( entrySet.key, entrySet.value )
entrySet.value = traverse( entrySet.value, visitor )
}
} else if ( data instanceof Collection ){
def processedList = []
data.each{
def visitedEntry = visitor.visitList( it )
processedList << traverse( visitedEntry, visitor )
}
data = processedList
}
data
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment