package org.rubypeople.rdt.internal.formatter.rewriter;
import java.util.Iterator;
import org.jruby.ast.BlockNode;
import org.jruby.ast.NewlineNode;
import org.jruby.ast.Node;
import org.rubypeople.rdt.core.formatter.ReWriteVisitor;
import org.rubypeople.rdt.core.formatter.ReWriterContext;
public class ClassBodyWriter {
private ReWriteVisitor visitor;
private Node bodyNode;
private ReWriterContext context;
public ClassBodyWriter(ReWriteVisitor visitor, Node bodyNode) {
this.visitor = visitor;
this.bodyNode = bodyNode;
this.context = visitor.getConfig();
}
public void write(){
if (bodyNode instanceof BlockNode) {
context.getIndentor().indent();
writeContent((BlockNode) bodyNode);
context.getIndentor().outdent();
} else if (bodyNode instanceof NewlineNode) {
visitor.visitNodeInIndentation(bodyNode);
} else {
visitor.visitNode(bodyNode);
}
}
private void writeContent(BlockNode node) {
for (Iterator<Node> it = node.childNodes().iterator(); it.hasNext(); ) {
visitor.visitNode(it.next());
if (it.hasNext()) {
context.getOutput().print(context.getFormatHelper().classBodyElementsSeparator());
}
}
}
}