package com.tinkerpop.gremlin.groovy.console; import com.tinkerpop.pipes.transform.ToStringPipe; import com.tinkerpop.pipes.util.iterators.SingleIterator; import groovy.lang.Closure; import org.codehaus.groovy.tools.shell.IO; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class ResultHookClosure extends Closure { private final String resultPrompt; private final IO io; public ResultHookClosure(final Object owner, final IO io, final String resultPrompt) { super(owner); this.io = io; this.resultPrompt = resultPrompt; } public Object call(final Object[] args) { final Object result = args[0]; ToStringPipe toStringPipe = new ToStringPipe(); toStringPipe.setStarts(new SingleIterator<Object>(result)); while (toStringPipe.hasNext()) { this.io.out.println(this.resultPrompt + toStringPipe.next()); } return null; } }