Introduce default ValueParametersHandler.

This commit is contained in:
Evgeny Gerashchenko
2012-12-14 19:18:44 +04:00
parent 85b50aefda
commit 520b16e065
3 changed files with 36 additions and 32 deletions
@@ -55,17 +55,36 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
PLAIN, HTML
}
/** @see DefaultValueParameterHandler */
interface ValueParametersHandler {
// by default, renders "("
void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
// by default, renders ")"
void appendAfterValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
// by default, renders nothing
void appendBeforeValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder);
// by default, renders ", " if its not last parameter
void appendAfterValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder);
}
class DefaultValueParameterHandler implements ValueParametersHandler {
@Override
public void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder) {
stringBuilder.append("(");
}
@Override
public void appendAfterValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder) {
stringBuilder.append(")");
}
@Override
public void appendBeforeValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder) {
}
@Override
public void appendAfterValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder) {
FunctionDescriptor function = (FunctionDescriptor) parameter.getContainingDeclaration();
if (parameter.getIndex() != function.getValueParameters().size() - 1) {
stringBuilder.append(", ");
}
}
}
}
@@ -17,7 +17,6 @@
package org.jetbrains.jet.renderer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class DescriptorRendererBuilder {
private boolean shortNames = false;
@@ -25,8 +24,8 @@ public class DescriptorRendererBuilder {
private boolean modifiers = true;
private boolean startFromName = false;
private boolean debugMode = false;
@Nullable
private DescriptorRenderer.ValueParametersHandler valueParametersHandler = null;
@NotNull
private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler();
@NotNull
private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN;
@@ -58,7 +57,7 @@ public class DescriptorRendererBuilder {
return this;
}
public DescriptorRendererBuilder setValueParametersHandler(@Nullable DescriptorRenderer.ValueParametersHandler valueParametersHandler) {
public DescriptorRendererBuilder setValueParametersHandler(@NotNull DescriptorRenderer.ValueParametersHandler valueParametersHandler) {
this.valueParametersHandler = valueParametersHandler;
return this;
}
@@ -20,7 +20,6 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -51,7 +50,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
private final boolean modifiers;
private final boolean startFromName;
private final boolean debugMode;
@Nullable
@NotNull
private final ValueParametersHandler handler;
@NotNull
private final TextFormat textFormat;
@@ -62,7 +61,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
boolean modifiers,
boolean startFromName,
boolean debugMode,
@Nullable ValueParametersHandler handler,
@NotNull ValueParametersHandler handler,
@NotNull TextFormat textFormat
) {
this.shortNames = shortNames;
@@ -423,25 +422,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
}
private void renderValueParameters(FunctionDescriptor function, StringBuilder builder) {
if (handler != null) {
handler.appendBeforeValueParameters(function, builder);
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
handler.appendBeforeValueParameter(parameter, builder);
renderValueParameter(parameter, builder, false);
handler.appendAfterValueParameter(parameter, builder);
}
handler.appendAfterValueParameters(function, builder);
}
else {
builder.append("(");
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
renderValueParameter(parameter, builder, false);
if (parameter.getIndex() != function.getValueParameters().size() - 1) {
builder.append(", ");
}
}
builder.append(")");
handler.appendBeforeValueParameters(function, builder);
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
handler.appendBeforeValueParameter(parameter, builder);
renderValueParameter(parameter, builder, false);
handler.appendAfterValueParameter(parameter, builder);
}
handler.appendAfterValueParameters(function, builder);
}
/* VARIABLES */
@@ -634,6 +621,5 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
renderClass(descriptor, builder);
return null;
}
}
}