in src/JetBrains.Space.Generator/CodeGeneration/CSharp/Generators/CSharpApiModelUrlParameterGenerator.cs [15:54]
public string GenerateUrlParameterDefinition(ApiUrlParameter apiUrlParameter)
{
var indent = new Indent();
var builder = new CSharpBuilder();
var typeNameForUrlParameter = apiUrlParameter.ToCSharpClassName();
if (apiUrlParameter.Deprecation != null)
{
builder.AppendLine($"{indent}{apiUrlParameter.Deprecation.ToCSharpDeprecation()}");
}
else if (apiUrlParameter.Experimental != null && FeatureFlags.GenerateExperimentalAnnotations)
{
builder.AppendLine($"{indent}{apiUrlParameter.Experimental.ToCSharpExperimental()}");
}
// Parameter type
builder.AppendLine($"{indent}[JsonConverter(typeof(UrlParameterConverter))]");
builder.AppendLine($"{indent}public abstract class {typeNameForUrlParameter} : IUrlParameter");
builder.AppendLine($"{indent}{{");
indent.Increment();
foreach (var apiUrlParameterOption in apiUrlParameter.Options)
{
builder.Append(
indent.Wrap(
GenerateUrlParameterOptionFactoryMethod(apiUrlParameter, apiUrlParameterOption, typeNameForUrlParameter)));
}
foreach (var apiUrlParameterOption in apiUrlParameter.Options)
{
builder.Append(
indent.Wrap(
GenerateUrlParameterOptionClass(apiUrlParameterOption, typeNameForUrlParameter)));
}
indent.Decrement();
builder.AppendLine($"{indent}}}");
return builder.ToString();
}