Introduce default ValueParametersHandler.
This commit is contained in:
@@ -55,17 +55,36 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
|
|||||||
PLAIN, HTML
|
PLAIN, HTML
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @see DefaultValueParameterHandler */
|
||||||
interface ValueParametersHandler {
|
interface ValueParametersHandler {
|
||||||
// by default, renders "("
|
|
||||||
void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
|
void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
|
||||||
|
|
||||||
// by default, renders ")"
|
|
||||||
void appendAfterValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
|
void appendAfterValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
|
||||||
|
|
||||||
// by default, renders nothing
|
|
||||||
void appendBeforeValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder);
|
void appendBeforeValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder);
|
||||||
|
|
||||||
// by default, renders ", " if its not last parameter
|
|
||||||
void appendAfterValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder);
|
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;
|
package org.jetbrains.jet.renderer;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
public class DescriptorRendererBuilder {
|
public class DescriptorRendererBuilder {
|
||||||
private boolean shortNames = false;
|
private boolean shortNames = false;
|
||||||
@@ -25,8 +24,8 @@ public class DescriptorRendererBuilder {
|
|||||||
private boolean modifiers = true;
|
private boolean modifiers = true;
|
||||||
private boolean startFromName = false;
|
private boolean startFromName = false;
|
||||||
private boolean debugMode = false;
|
private boolean debugMode = false;
|
||||||
@Nullable
|
@NotNull
|
||||||
private DescriptorRenderer.ValueParametersHandler valueParametersHandler = null;
|
private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler();
|
||||||
@NotNull
|
@NotNull
|
||||||
private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN;
|
private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN;
|
||||||
|
|
||||||
@@ -58,7 +57,7 @@ public class DescriptorRendererBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DescriptorRendererBuilder setValueParametersHandler(@Nullable DescriptorRenderer.ValueParametersHandler valueParametersHandler) {
|
public DescriptorRendererBuilder setValueParametersHandler(@NotNull DescriptorRenderer.ValueParametersHandler valueParametersHandler) {
|
||||||
this.valueParametersHandler = valueParametersHandler;
|
this.valueParametersHandler = valueParametersHandler;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.intellij.psi.tree.IElementType;
|
import com.intellij.psi.tree.IElementType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -51,7 +50,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
private final boolean modifiers;
|
private final boolean modifiers;
|
||||||
private final boolean startFromName;
|
private final boolean startFromName;
|
||||||
private final boolean debugMode;
|
private final boolean debugMode;
|
||||||
@Nullable
|
@NotNull
|
||||||
private final ValueParametersHandler handler;
|
private final ValueParametersHandler handler;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final TextFormat textFormat;
|
private final TextFormat textFormat;
|
||||||
@@ -62,7 +61,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
boolean modifiers,
|
boolean modifiers,
|
||||||
boolean startFromName,
|
boolean startFromName,
|
||||||
boolean debugMode,
|
boolean debugMode,
|
||||||
@Nullable ValueParametersHandler handler,
|
@NotNull ValueParametersHandler handler,
|
||||||
@NotNull TextFormat textFormat
|
@NotNull TextFormat textFormat
|
||||||
) {
|
) {
|
||||||
this.shortNames = shortNames;
|
this.shortNames = shortNames;
|
||||||
@@ -423,25 +422,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void renderValueParameters(FunctionDescriptor function, StringBuilder builder) {
|
private void renderValueParameters(FunctionDescriptor function, StringBuilder builder) {
|
||||||
if (handler != null) {
|
handler.appendBeforeValueParameters(function, builder);
|
||||||
handler.appendBeforeValueParameters(function, builder);
|
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
|
||||||
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
|
handler.appendBeforeValueParameter(parameter, builder);
|
||||||
handler.appendBeforeValueParameter(parameter, builder);
|
renderValueParameter(parameter, builder, false);
|
||||||
renderValueParameter(parameter, builder, false);
|
handler.appendAfterValueParameter(parameter, builder);
|
||||||
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.appendAfterValueParameters(function, builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* VARIABLES */
|
/* VARIABLES */
|
||||||
@@ -634,6 +621,5 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
renderClass(descriptor, builder);
|
renderClass(descriptor, builder);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user