Organized methods in DescriptorRendererImpl.

This commit is contained in:
Evgeny Gerashchenko
2012-12-13 22:33:00 +04:00
parent d27eb680e0
commit 2f545688eb
@@ -76,6 +76,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
this.textFormat = textFormat; this.textFormat = textFormat;
} }
/* FORMATTING */
private String renderKeyword(String keyword) { private String renderKeyword(String keyword) {
switch (textFormat) { switch (textFormat) {
case PLAIN: case PLAIN:
@@ -86,16 +88,47 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
throw new IllegalStateException("Unexpected textFormat: " + textFormat); throw new IllegalStateException("Unexpected textFormat: " + textFormat);
} }
private String escape(String s) {
switch (textFormat) {
case PLAIN:
return s;
case HTML:
return s.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
}
throw new IllegalStateException("Unexpected textFormat: " + textFormat);
}
private String lt() {
return escape("<");
}
private String renderMessage(String message) {
switch (textFormat) {
case PLAIN:
return message;
case HTML:
return "<i>" + message + "</i>";
}
throw new IllegalStateException("Unexpected textFormat: " + textFormat);
}
/* NAMES RENDERING */
private String renderName(Name identifier) { private String renderName(Name identifier) {
String asString = identifier.toString(); String asString = identifier.toString();
return escape(KEYWORDS.contains(asString) ? '`' + asString + '`' : asString); return escape(KEYWORDS.contains(asString) ? '`' + asString + '`' : asString);
} }
private void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) {
stringBuilder.append(renderName(descriptor.getName()));
}
@NotNull @NotNull
private String renderFqName(@NotNull FqNameUnsafe fqName) { private String renderFqName(@NotNull FqNameUnsafe fqName) {
return renderFqName(fqName.pathSegments()); return renderFqName(fqName.pathSegments());
} }
@NotNull @NotNull
private String renderFqName(@NotNull List<Name> pathSegments) { private String renderFqName(@NotNull List<Name> pathSegments) {
StringBuilder buf = new StringBuilder(); StringBuilder buf = new StringBuilder();
@@ -108,6 +141,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return buf.toString(); return buf.toString();
} }
/* TYPES RENDERING */
@Override @Override
public String renderType(JetType type) { public String renderType(JetType type) {
if (type == null) { if (type == null) {
@@ -185,6 +219,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
} }
private String renderFunctionType(JetType type) { private String renderFunctionType(JetType type) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@@ -205,39 +240,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return sb.toString(); return sb.toString();
} }
private String escape(String s) { /* COMMON DESCRIPTORS RENDERING */
switch (textFormat) {
case PLAIN:
return s;
case HTML:
return s.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
}
throw new IllegalStateException("Unexpected textFormat: " + textFormat);
}
private String lt() {
return escape("<");
}
@NotNull
@Override
public String render(@NotNull DeclarationDescriptor declarationDescriptor) {
StringBuilder stringBuilder = new StringBuilder();
declarationDescriptor.accept(rootVisitor, stringBuilder);
if (withDefinedIn) {
appendDefinedIn(declarationDescriptor, stringBuilder);
}
return stringBuilder.toString();
}
@Override
public String renderFunctionParameters(@NotNull FunctionDescriptor functionDescriptor) {
StringBuilder stringBuilder = new StringBuilder();
renderValueParameters(functionDescriptor, stringBuilder);
return stringBuilder.toString();
}
private void appendDefinedIn(DeclarationDescriptor declarationDescriptor, StringBuilder stringBuilder) { private void appendDefinedIn(DeclarationDescriptor declarationDescriptor, StringBuilder stringBuilder) {
if (declarationDescriptor instanceof ModuleDescriptor) { if (declarationDescriptor instanceof ModuleDescriptor) {
stringBuilder.append(" is a module"); stringBuilder.append(" is a module");
@@ -252,14 +255,51 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
} }
private String renderMessage(String message) { private void renderVisibility(Visibility visibility, StringBuilder builder) {
switch (textFormat) { if (!modifiers) return;
case PLAIN: if ("package".equals(visibility.toString())) {
return message; builder.append("public/*package*/ ");
case HTML:
return "<i>" + message + "</i>";
} }
throw new IllegalStateException("Unexpected textFormat: " + textFormat); else {
builder.append(renderKeyword(visibility.toString())).append(" ");
}
}
private void renderModality(Modality modality, StringBuilder builder) {
if (!modifiers) return;
String keyword = "";
switch (modality) {
case FINAL:
keyword = "final";
break;
case OPEN:
keyword = "open";
break;
case ABSTRACT:
keyword = "abstract";
break;
}
builder.append(renderKeyword(keyword)).append(" ");
}
@NotNull
@Override
public String render(@NotNull DeclarationDescriptor declarationDescriptor) {
StringBuilder stringBuilder = new StringBuilder();
declarationDescriptor.accept(rootVisitor, stringBuilder);
if (withDefinedIn) {
appendDefinedIn(declarationDescriptor, stringBuilder);
}
return stringBuilder.toString();
}
/* FUNCTION DESCRIPTORS */
@Override
public String renderFunctionParameters(@NotNull FunctionDescriptor functionDescriptor) {
StringBuilder stringBuilder = new StringBuilder();
renderValueParameters(functionDescriptor, stringBuilder);
return stringBuilder.toString();
} }
private void renderValueParameters(FunctionDescriptor function, StringBuilder builder) { private void renderValueParameters(FunctionDescriptor function, StringBuilder builder) {
@@ -283,7 +323,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
builder.append(")"); builder.append(")");
} }
} }
private void renderValueParameterOfFunction(ValueParameterDescriptor descriptor, StringBuilder builder) { private void renderValueParameterOfFunction(ValueParameterDescriptor descriptor, StringBuilder builder) {
rootVisitor.visitVariableDescriptor(descriptor, builder, true); rootVisitor.visitVariableDescriptor(descriptor, builder, true);
boolean withDefaultValue = debugMode ? descriptor.declaresDefaultValue() : descriptor.hasDefaultValue(); boolean withDefaultValue = debugMode ? descriptor.declaresDefaultValue() : descriptor.hasDefaultValue();
@@ -365,33 +404,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return null; return null;
} }
private void renderVisibility(Visibility visibility, StringBuilder builder) {
if (!modifiers) return;
if ("package".equals(visibility.toString())) {
builder.append("public/*package*/ ");
}
else {
builder.append(renderKeyword(visibility.toString())).append(" ");
}
}
private void renderModality(Modality modality, StringBuilder builder) {
if (!modifiers) return;
String keyword = "";
switch (modality) {
case FINAL:
keyword = "final";
break;
case OPEN:
keyword = "open";
break;
case ABSTRACT:
keyword = "abstract";
break;
}
builder.append(renderKeyword(keyword)).append(" ");
}
@Override @Override
public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) { public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) {
if (!startFromName) { if (!startFromName) {
@@ -560,10 +572,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
} }
private void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) {
stringBuilder.append(escape(DescriptorRendererImpl.this.renderName(descriptor.getName())));
}
private void renderTypeParameter(TypeParameterDescriptor descriptor, StringBuilder builder, boolean topLevel) { private void renderTypeParameter(TypeParameterDescriptor descriptor, StringBuilder builder, boolean topLevel) {
if (!descriptor.isReified()) { if (!descriptor.isReified()) {
String variance = descriptor.getVariance().toString(); String variance = descriptor.getVariance().toString();