Cleanup
This commit is contained in:
@@ -87,6 +87,14 @@ public class Annotations{
|
||||
//endregion
|
||||
//region misc. utility
|
||||
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface Multiline {
|
||||
boolean trim() default true;
|
||||
boolean merge() default false;
|
||||
char mergeChar() default ' ';
|
||||
}
|
||||
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface StyleDefaults{
|
||||
|
||||
@@ -3,9 +3,14 @@ package mindustry.annotations;
|
||||
import arc.files.*;
|
||||
import arc.struct.Array;
|
||||
import arc.util.*;
|
||||
import arc.util.Log;
|
||||
import arc.util.Log.*;
|
||||
import com.squareup.javapoet.*;
|
||||
import com.sun.source.util.*;
|
||||
import com.sun.tools.javac.model.*;
|
||||
import com.sun.tools.javac.processing.*;
|
||||
import com.sun.tools.javac.tree.*;
|
||||
import com.sun.tools.javac.util.*;
|
||||
import mindustry.annotations.util.*;
|
||||
|
||||
import javax.annotation.processing.*;
|
||||
@@ -19,6 +24,7 @@ import java.io.*;
|
||||
import java.lang.annotation.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
||||
@SupportedSourceVersion(SourceVersion.RELEASE_8)
|
||||
public abstract class BaseProcessor extends AbstractProcessor{
|
||||
@@ -36,6 +42,10 @@ public abstract class BaseProcessor extends AbstractProcessor{
|
||||
protected RoundEnvironment env;
|
||||
protected Fi rootDirectory;
|
||||
|
||||
protected Context context;
|
||||
protected JavacElements elementUtils;
|
||||
protected TreeMaker maker;
|
||||
|
||||
public static String getMethodName(Element element){
|
||||
return ((TypeElement)element.getEnclosingElement()).getQualifiedName().toString() + "." + element.getSimpleName();
|
||||
}
|
||||
@@ -185,6 +195,11 @@ public abstract class BaseProcessor extends AbstractProcessor{
|
||||
elementu = env.getElementUtils();
|
||||
filer = env.getFiler();
|
||||
messager = env.getMessager();
|
||||
context = ((JavacProcessingEnvironment)env).getContext();
|
||||
|
||||
JavacProcessingEnvironment javacProcessingEnv = (JavacProcessingEnvironment)env;
|
||||
this.elementUtils = javacProcessingEnv.getElementUtils();
|
||||
this.maker = TreeMaker.instance(javacProcessingEnv.getContext());
|
||||
|
||||
Log.setLogLevel(LogLevel.info);
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package mindustry.annotations.mutate;
|
||||
|
||||
import com.sun.tools.javac.tree.JCTree.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.annotations.*;
|
||||
|
||||
import javax.annotation.processing.*;
|
||||
import javax.lang.model.element.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
//currently unused
|
||||
@SupportedAnnotationTypes({"mindustry.annotations.Annotations.Multiline"})
|
||||
public final class MultilineProcessor extends BaseProcessor{
|
||||
|
||||
@Override
|
||||
public void process(RoundEnvironment env){
|
||||
Set<? extends Element> fields = env.getElementsAnnotatedWith(Multiline.class);
|
||||
for(Element field : fields){
|
||||
String docComment = elementUtils.getDocComment(field);
|
||||
if(null != docComment){
|
||||
JCVariableDecl fieldNode = (JCVariableDecl)elementUtils.getTree(field);
|
||||
fieldNode.init = maker.Literal(toString(docComment, field.getAnnotation(Multiline.class)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static String toString(String value, Multiline annotation){
|
||||
if(!annotation.merge() && !annotation.trim()){
|
||||
return value;
|
||||
}
|
||||
|
||||
String crnl = System.getProperty("line.separator");
|
||||
try{
|
||||
BufferedReader reader = new BufferedReader(new StringReader(value));
|
||||
StringBuilder buf = new StringBuilder();
|
||||
String line = reader.readLine();
|
||||
while(line != null){
|
||||
if(annotation.trim()){
|
||||
line = line.trim();
|
||||
}
|
||||
if(annotation.merge() && buf.length() > 0){
|
||||
if(annotation.mergeChar() != '\0'){
|
||||
buf.append(annotation.mergeChar());
|
||||
}
|
||||
}
|
||||
buf.append(line);
|
||||
if(!annotation.merge()){
|
||||
buf.append(crnl);
|
||||
}
|
||||
|
||||
line = reader.readLine();
|
||||
}
|
||||
return buf.toString();
|
||||
}catch(IOException ex){
|
||||
throw new RuntimeException("checked exceptions are disgusting", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user