/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ca.weblite.netbeans.mirah.lexer;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
/**
*
* @author shannah
*/
public class CodeFormatter {
public String formatMethod(Method m, int indent, int numSpacesPerIndent ){
StringBuilder sb = new StringBuilder();
//indent(sb, indent);
sb.append("def ").append(m.getName());
int i=0;
int len;
if ( ( len = m.getParameterTypes().length) > 0 ){
sb.append("(");
for ( Class pType : m.getParameterTypes()){
sb
.append("arg")
.append(i++)
.append(":")
.append(pType.getSimpleName());
if ( i<len){
sb.append(", ");
}
}
sb.append(")");
}
sb.append(":");
Class returnType;
if ( (returnType = m.getReturnType()) != null ){
sb.append(returnType.getSimpleName());
} else {
sb.append("void");
}
sb.append("\n");
indent(sb, indent);
indent(sb, numSpacesPerIndent);
sb.append("\n");
indent(sb, indent);
sb.append("end\n");
indent(sb, indent);
return sb.toString();
}
public Set<String> getRequiredImports(Method m){
Set<String> out = new HashSet<String>();
for ( Class ptype : m.getParameterTypes()){
String name = ptype.getName();
if ( name.startsWith("java.lang.")){
continue;
}
if ( ptype.isPrimitive() ){
continue;
}
out.add(ptype.getName());
}
Class retType = m.getReturnType();
if ( retType != null
&& !retType.getName().startsWith("java.lang.")
&& !retType.isPrimitive()){
out.add(retType.getName());
}
return out;
}
public void indent(StringBuilder sb, int indent){
for ( int i=0; i< indent; i++){
sb.append(" ");
}
}
}