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;
}
/* FORMATTING */
private String renderKeyword(String keyword) {
switch (textFormat) {
case PLAIN:
@@ -86,16 +88,47 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
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) {
String asString = identifier.toString();
return escape(KEYWORDS.contains(asString) ? '`' + asString + '`' : asString);
}
private void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) {
stringBuilder.append(renderName(descriptor.getName()));
}
@NotNull
private String renderFqName(@NotNull FqNameUnsafe fqName) {
return renderFqName(fqName.pathSegments());
}
@NotNull
private String renderFqName(@NotNull List<Name> pathSegments) {
StringBuilder buf = new StringBuilder();
@@ -108,6 +141,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return buf.toString();
}
/* TYPES RENDERING */
@Override
public String renderType(JetType type) {
if (type == null) {
@@ -185,6 +219,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
}
}
private String renderFunctionType(JetType type) {
StringBuilder sb = new StringBuilder();
@@ -205,39 +240,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return sb.toString();
}
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("<");
}
@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();
}
/* COMMON DESCRIPTORS RENDERING */
private void appendDefinedIn(DeclarationDescriptor declarationDescriptor, StringBuilder stringBuilder) {
if (declarationDescriptor instanceof ModuleDescriptor) {
stringBuilder.append(" is a module");
@@ -252,14 +255,51 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
}
}
private String renderMessage(String message) {
switch (textFormat) {
case PLAIN:
return message;
case HTML:
return "<i>" + message + "</i>";
private void renderVisibility(Visibility visibility, StringBuilder builder) {
if (!modifiers) return;
if ("package".equals(visibility.toString())) {
builder.append("public/*package*/ ");
}
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) {
@@ -283,7 +323,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
builder.append(")");
}
}
private void renderValueParameterOfFunction(ValueParameterDescriptor descriptor, StringBuilder builder) {
rootVisitor.visitVariableDescriptor(descriptor, builder, true);
boolean withDefaultValue = debugMode ? descriptor.declaresDefaultValue() : descriptor.hasDefaultValue();
@@ -365,33 +404,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
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
public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) {
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) {
if (!descriptor.isReified()) {
String variance = descriptor.getVariance().toString();