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 @NotNull 040 private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN; 041 @NotNull 042 private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler(); 043 @NotNull 044 private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN; 045 @NotNull 046 private Collection<FqName> excludedAnnotationClasses = Collections.emptyList(); 047 048 public DescriptorRendererBuilder() { 049 } 050 051 public DescriptorRendererBuilder setShortNames(boolean shortNames) { 052 this.shortNames = shortNames; 053 return this; 054 } 055 056 public DescriptorRendererBuilder setWithDefinedIn(boolean withDefinedIn) { 057 this.withDefinedIn = withDefinedIn; 058 return this; 059 } 060 061 public DescriptorRendererBuilder setModifiers(Set<DescriptorRenderer.Modifier> modifiers) { 062 this.modifiers = modifiers; 063 return this; 064 } 065 066 public DescriptorRendererBuilder setModifiers(DescriptorRenderer.Modifier... modifiers) { 067 return setModifiers(ImmutableSet.copyOf(modifiers)); 068 } 069 070 public DescriptorRendererBuilder setStartFromName(boolean startFromName) { 071 this.startFromName = startFromName; 072 return this; 073 } 074 075 public DescriptorRendererBuilder setDebugMode(boolean debugMode) { 076 this.debugMode = debugMode; 077 return this; 078 } 079 080 public DescriptorRendererBuilder setClassWithPrimaryConstructor(boolean classWithPrimaryConstructor) { 081 this.classWithPrimaryConstructor = classWithPrimaryConstructor; 082 return this; 083 } 084 085 public DescriptorRendererBuilder setVerbose(boolean verbose) { 086 this.verbose = verbose; 087 return this; 088 } 089 090 public DescriptorRendererBuilder setUnitReturnType(boolean unitReturnType) { 091 this.unitReturnType = unitReturnType; 092 return this; 093 } 094 095 public DescriptorRendererBuilder setNormalizedVisibilities(boolean normalizedVisibilities) { 096 this.normalizedVisibilities = normalizedVisibilities; 097 return this; 098 } 099 100 public DescriptorRendererBuilder setShowInternalKeyword(boolean showInternalKeyword) { 101 this.showInternalKeyword = showInternalKeyword; 102 return this; 103 } 104 105 public DescriptorRendererBuilder setOverrideRenderingPolicy(DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy) { 106 this.overrideRenderingPolicy = overrideRenderingPolicy; 107 return this; 108 } 109 110 public DescriptorRendererBuilder setValueParametersHandler(@NotNull DescriptorRenderer.ValueParametersHandler valueParametersHandler) { 111 this.valueParametersHandler = valueParametersHandler; 112 return this; 113 } 114 115 public DescriptorRendererBuilder setTextFormat(@NotNull DescriptorRenderer.TextFormat textFormat) { 116 this.textFormat = textFormat; 117 return this; 118 } 119 120 public DescriptorRendererBuilder setExcludedAnnotationClasses(@NotNull Collection<FqName> excludedAnnotationClasses) { 121 this.excludedAnnotationClasses = excludedAnnotationClasses; 122 return this; 123 } 124 125 public DescriptorRendererBuilder setPrettyFunctionTypes(boolean prettyFunctionTypes) { 126 this.prettyFunctionTypes = prettyFunctionTypes; 127 return this; 128 } 129 130 public DescriptorRenderer build() { 131 return new DescriptorRendererImpl(shortNames, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, 132 verbose, unitReturnType, normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, 133 overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses); 134 } 135 136 }