001 /*
002 * Copyright 2010-2013 JetBrains s.r.o.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 package org.jetbrains.jet.renderer;
018
019 import com.google.common.collect.ImmutableSet;
020 import org.jetbrains.annotations.NotNull;
021 import org.jetbrains.jet.lang.resolve.name.FqName;
022
023 import java.util.Collection;
024 import java.util.Collections;
025 import java.util.Set;
026
027 public class DescriptorRendererBuilder {
028 private boolean shortNames = false;
029 private boolean withDefinedIn = true;
030 private Set<DescriptorRenderer.Modifier> modifiers = ImmutableSet.copyOf(DescriptorRenderer.Modifier.values());
031 private boolean startFromName = false;
032 private boolean debugMode = false;
033 private boolean classWithPrimaryConstructor = false;
034 private boolean verbose = false;
035 private boolean unitReturnType = true;
036 private boolean normalizedVisibilities = false;
037 private boolean showInternalKeyword = true;
038 private boolean prettyFunctionTypes = true;
039 private boolean includePropertyConstant = false;
040 @NotNull
041 private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN;
042 @NotNull
043 private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler();
044 @NotNull
045 private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN;
046 @NotNull
047 private Collection<FqName> excludedAnnotationClasses = Collections.emptyList();
048
049 public DescriptorRendererBuilder() {
050 }
051
052 @NotNull
053 public DescriptorRendererBuilder setShortNames(boolean shortNames) {
054 this.shortNames = shortNames;
055 return this;
056 }
057
058 @NotNull
059 public DescriptorRendererBuilder setWithDefinedIn(boolean withDefinedIn) {
060 this.withDefinedIn = withDefinedIn;
061 return this;
062 }
063
064 @NotNull
065 public DescriptorRendererBuilder setModifiers(Set<DescriptorRenderer.Modifier> modifiers) {
066 this.modifiers = modifiers;
067 return this;
068 }
069
070 @NotNull
071 public DescriptorRendererBuilder setModifiers(DescriptorRenderer.Modifier... modifiers) {
072 return setModifiers(ImmutableSet.copyOf(modifiers));
073 }
074
075 @NotNull
076 public DescriptorRendererBuilder setStartFromName(boolean startFromName) {
077 this.startFromName = startFromName;
078 return this;
079 }
080
081 @NotNull
082 public DescriptorRendererBuilder setDebugMode(boolean debugMode) {
083 this.debugMode = debugMode;
084 return this;
085 }
086
087 @NotNull
088 public DescriptorRendererBuilder setClassWithPrimaryConstructor(boolean classWithPrimaryConstructor) {
089 this.classWithPrimaryConstructor = classWithPrimaryConstructor;
090 return this;
091 }
092
093 @NotNull
094 public DescriptorRendererBuilder setVerbose(boolean verbose) {
095 this.verbose = verbose;
096 return this;
097 }
098
099 @NotNull
100 public DescriptorRendererBuilder setUnitReturnType(boolean unitReturnType) {
101 this.unitReturnType = unitReturnType;
102 return this;
103 }
104
105 @NotNull
106 public DescriptorRendererBuilder setNormalizedVisibilities(boolean normalizedVisibilities) {
107 this.normalizedVisibilities = normalizedVisibilities;
108 return this;
109 }
110
111 @NotNull
112 public DescriptorRendererBuilder setShowInternalKeyword(boolean showInternalKeyword) {
113 this.showInternalKeyword = showInternalKeyword;
114 return this;
115 }
116
117 @NotNull
118 public DescriptorRendererBuilder setOverrideRenderingPolicy(@NotNull DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy) {
119 this.overrideRenderingPolicy = overrideRenderingPolicy;
120 return this;
121 }
122
123 @NotNull
124 public DescriptorRendererBuilder setValueParametersHandler(@NotNull DescriptorRenderer.ValueParametersHandler valueParametersHandler) {
125 this.valueParametersHandler = valueParametersHandler;
126 return this;
127 }
128
129 @NotNull
130 public DescriptorRendererBuilder setTextFormat(@NotNull DescriptorRenderer.TextFormat textFormat) {
131 this.textFormat = textFormat;
132 return this;
133 }
134
135 @NotNull
136 public DescriptorRendererBuilder setExcludedAnnotationClasses(@NotNull Collection<FqName> excludedAnnotationClasses) {
137 this.excludedAnnotationClasses = excludedAnnotationClasses;
138 return this;
139 }
140
141 @NotNull
142 public DescriptorRendererBuilder setPrettyFunctionTypes(boolean prettyFunctionTypes) {
143 this.prettyFunctionTypes = prettyFunctionTypes;
144 return this;
145 }
146
147 public DescriptorRendererBuilder setIncludePropertyConstant(boolean includePropertyConstant) {
148 this.includePropertyConstant = includePropertyConstant;
149 return this;
150 }
151
152 @NotNull
153 public DescriptorRenderer build() {
154 return new DescriptorRendererImpl(shortNames, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor,
155 verbose, unitReturnType, normalizedVisibilities, showInternalKeyword, prettyFunctionTypes,
156 overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses,
157 includePropertyConstant);
158 }
159
160 }