Introduce default ValueParametersHandler.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user