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 uninferredTypeParameterAsName = false; 040 private boolean includePropertyConstant = false; 041 private boolean includeSynthesizedParameterNames = true; 042 @NotNull 043 private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN; 044 @NotNull 045 private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler(); 046 @NotNull 047 private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN; 048 @NotNull 049 private Collection<FqName> excludedAnnotationClasses = Collections.emptyList(); 050 051 public DescriptorRendererBuilder() { 052 } 053 054 @NotNull 055 public DescriptorRendererBuilder setShortNames(boolean shortNames) { 056 this.shortNames = shortNames; 057 return this; 058 } 059 060 @NotNull 061 public DescriptorRendererBuilder setWithDefinedIn(boolean withDefinedIn) { 062 this.withDefinedIn = withDefinedIn; 063 return this; 064 } 065 066 @NotNull 067 public DescriptorRendererBuilder setModifiers(Set<DescriptorRenderer.Modifier> modifiers) { 068 this.modifiers = modifiers; 069 return this; 070 } 071 072 @NotNull 073 public DescriptorRendererBuilder setModifiers(DescriptorRenderer.Modifier... modifiers) { 074 return setModifiers(ImmutableSet.copyOf(modifiers)); 075 } 076 077 @NotNull 078 public DescriptorRendererBuilder setStartFromName(boolean startFromName) { 079 this.startFromName = startFromName; 080 return this; 081 } 082 083 @NotNull 084 public DescriptorRendererBuilder setDebugMode(boolean debugMode) { 085 this.debugMode = debugMode; 086 return this; 087 } 088 089 @NotNull 090 public DescriptorRendererBuilder setClassWithPrimaryConstructor(boolean classWithPrimaryConstructor) { 091 this.classWithPrimaryConstructor = classWithPrimaryConstructor; 092 return this; 093 } 094 095 @NotNull 096 public DescriptorRendererBuilder setVerbose(boolean verbose) { 097 this.verbose = verbose; 098 return this; 099 } 100 101 @NotNull 102 public DescriptorRendererBuilder setUnitReturnType(boolean unitReturnType) { 103 this.unitReturnType = unitReturnType; 104 return this; 105 } 106 107 @NotNull 108 public DescriptorRendererBuilder setNormalizedVisibilities(boolean normalizedVisibilities) { 109 this.normalizedVisibilities = normalizedVisibilities; 110 return this; 111 } 112 113 @NotNull 114 public DescriptorRendererBuilder setShowInternalKeyword(boolean showInternalKeyword) { 115 this.showInternalKeyword = showInternalKeyword; 116 return this; 117 } 118 119 @NotNull 120 public DescriptorRendererBuilder setOverrideRenderingPolicy(@NotNull DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy) { 121 this.overrideRenderingPolicy = overrideRenderingPolicy; 122 return this; 123 } 124 125 @NotNull 126 public DescriptorRendererBuilder setValueParametersHandler(@NotNull DescriptorRenderer.ValueParametersHandler valueParametersHandler) { 127 this.valueParametersHandler = valueParametersHandler; 128 return this; 129 } 130 131 @NotNull 132 public DescriptorRendererBuilder setTextFormat(@NotNull DescriptorRenderer.TextFormat textFormat) { 133 this.textFormat = textFormat; 134 return this; 135 } 136 137 @NotNull 138 public DescriptorRendererBuilder setExcludedAnnotationClasses(@NotNull Collection<FqName> excludedAnnotationClasses) { 139 this.excludedAnnotationClasses = excludedAnnotationClasses; 140 return this; 141 } 142 143 @NotNull 144 public DescriptorRendererBuilder setPrettyFunctionTypes(boolean prettyFunctionTypes) { 145 this.prettyFunctionTypes = prettyFunctionTypes; 146 return this; 147 } 148 149 @NotNull 150 public DescriptorRendererBuilder setUninferredTypeParameterAsName(boolean uninferredTypeParameterAsName) { 151 this.uninferredTypeParameterAsName = uninferredTypeParameterAsName; 152 return this; 153 } 154 155 public DescriptorRendererBuilder setIncludePropertyConstant(boolean includePropertyConstant) { 156 this.includePropertyConstant = includePropertyConstant; 157 return this; 158 } 159 160 public DescriptorRendererBuilder setIncludeSynthesizedParameterNames(boolean includeSynthesizedParameterNames) { 161 this.includeSynthesizedParameterNames = includeSynthesizedParameterNames; 162 return this; 163 } 164 165 @NotNull 166 public DescriptorRenderer build() { 167 return new DescriptorRendererImpl( 168 shortNames, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, verbose, unitReturnType, 169 normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName, 170 overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant, 171 includeSynthesizedParameterNames); 172 } 173 174 }