本文整理汇总了C#中Microsoft.Rest.Generator.Utilities.IndentedStringBuilder类的典型用法代码示例。如果您正苦于以下问题:C# IndentedStringBuilder类的具体用法?C# IndentedStringBuilder怎么用?C# IndentedStringBuilder使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IndentedStringBuilder类属于Microsoft.Rest.Generator.Utilities命名空间,在下文中一共展示了IndentedStringBuilder类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AppendWorksWithNull
public void AppendWorksWithNull()
{
IndentedStringBuilder sb = new IndentedStringBuilder();
var expected = "";
var result = sb.Indent().Append(null);
Assert.Equal(expected, result.ToString());
}
示例2: DeserializeProperty
/// <summary>
/// Generates code for model deserialization.
/// </summary>
/// <param name="variableName">Variable deserialize model from.</param>
/// <param name="type">The type of the model.</param>
/// <returns>The code for вуserialization in string format.</returns>
public override string DeserializeProperty(string variableName, IType type)
{
var builder = new IndentedStringBuilder(" ");
string serializationLogic = type.AzureDeserializeType(this.Scope, variableName);
return builder.AppendLine(serializationLogic).ToString();
}
示例3: AppendDoesNotAddIndentation
public void AppendDoesNotAddIndentation(string input)
{
IndentedStringBuilder sb = new IndentedStringBuilder();
var expected = input;
var result = sb.Indent().Append(input);
Assert.Equal(expected, result.ToString());
}
示例4: GetOperationsRequiredFiles
public string GetOperationsRequiredFiles()
{
var sb = new IndentedStringBuilder();
this.MethodGroups.ForEach(method => sb.AppendLine("{0}",
this.GetRequiredFormat(RubyCodeNamer.UnderscoreCase(method) + ".rb")));
return sb.ToString();
}
示例5: DeserializePollingResponse
/// <summary>
/// Generates Ruby code in form of string for deserializing polling response.
/// </summary>
/// <param name="variableName">Variable name which keeps the response.</param>
/// <param name="type">Type of response.</param>
/// <returns>Ruby code in form of string for deserializing polling response.</returns>
public string DeserializePollingResponse(string variableName, IType type)
{
var builder = new IndentedStringBuilder(" ");
string serializationLogic = type.DeserializeType(this.Scope, variableName);
return builder.AppendLine(serializationLogic).ToString();
}
示例6: ConstructModelMapper
public override string ConstructModelMapper()
{
var modelMapper = this.ConstructMapper(SerializedName, null, true, true);
var builder = new IndentedStringBuilder(" ");
builder.AppendLine("return {{{0}}};", modelMapper);
return builder.ToString();
}
示例7: BuildUrl
/// <summary>
/// Generate code to build the URL from a url expression and method parameters.
/// </summary>
/// <param name="inputVariableName">The variable to prepare url from.</param>
/// <param name="outputVariableName">The variable that will keep the url.</param>
/// <returns>Code for URL generation.</returns>
public override string BuildUrl(string inputVariableName, string outputVariableName)
{
var builder = new IndentedStringBuilder(" ");
// Filling path parameters (which are directly in the url body).
foreach (var pathParameter in ParameterTemplateModels.Where(p => p.Location == ParameterLocation.Path))
{
string variableName = pathParameter.Type.ToString(pathParameter.Name);
string addPathParameterString = String.Format(CultureInfo.InvariantCulture, "{0}['{{{1}}}'] = ERB::Util.url_encode({2})",
inputVariableName,
pathParameter.SerializedName,
variableName);
if (pathParameter.Extensions.ContainsKey(AzureCodeGenerator.SkipUrlEncodingExtension))
{
addPathParameterString = String.Format(CultureInfo.InvariantCulture, "{0}['{{{1}}}'] = {2}",
inputVariableName,
pathParameter.SerializedName,
variableName);
}
builder.AppendLine(addPathParameterString);
}
// Adding prefix in case of not absolute url.
if (!this.IsAbsoluteUrl)
{
builder.AppendLine("{0} = URI.join({1}.base_url, {2})", outputVariableName, ClientReference, inputVariableName);
}
else
{
builder.AppendLine("{0} = URI.parse({1})", outputVariableName, inputVariableName);
}
// Filling query parameters (which are directly in the url query part).
var queryParametres = ParameterTemplateModels.Where(p => p.Location == ParameterLocation.Query).ToList();
builder.AppendLine("properties = {}");
foreach (var param in queryParametres)
{
if (param.Extensions.ContainsKey(AzureCodeGenerator.SkipUrlEncodingExtension))
{
builder.AppendLine("properties['{0}'] = {1} unless {1}.nil?", param.SerializedName, param.Name);
}
else
{
builder.AppendLine("properties['{0}'] = ERB::Util.url_encode({1}.to_s) unless {1}.nil?", param.SerializedName, param.Name);
}
}
builder.AppendLine("properties.reject!{ |key, value| value.nil? }");
builder.AppendLine("{0}.query = properties.map{{ |key, value| \"#{{key}}=#{{value}}\" }}.compact.join('&')", outputVariableName);
builder.AppendLine(@"fail URI::Error unless {0}.to_s =~ /\A#{{URI::regexp}}\z/", outputVariableName);
return builder.ToString();
}
示例8: GetModelsRequiredFiles
public string GetModelsRequiredFiles()
{
var sb = new IndentedStringBuilder();
this.GetOrderedModels().Where(m => !m.Extensions.ContainsKey(ExternalExtension)).ForEach(model => sb.AppendLine("{0}",
this.GetRequiredFormat("models/" + RubyCodeNamer.UnderscoreCase(model.Name) + ".rb")));
this.EnumTypes.ForEach(enumType => sb.AppendLine(this.GetRequiredFormat("models/" + RubyCodeNamer.UnderscoreCase(enumType.Name) + ".rb")));
return sb.ToString();
}
示例9: SerializeProperty
/// <summary>
/// Generates code for model serialization.
/// </summary>
/// <param name="variableName">Variable serialize model from.</param>
/// <param name="type">The type of the model.</param>
/// <param name="isRequired">Is property required.</param>
/// <param name="defaultNamespace">The namespace.</param>
/// <returns>The code for serialization in string format.</returns>
public string SerializeProperty(string variableName, IType type, bool isRequired, string defaultNamespace)
{
// TODO: handle if property required via "unless serialized_property.nil?"
var builder = new IndentedStringBuilder(" ");
string serializationLogic = type.SerializeType(this.Scope, variableName, defaultNamespace);
builder.AppendLine(serializationLogic);
return builder.ToString();
// return builder.AppendLine("{0} = JSON.generate({0}, quirks_mode: true)", variableName).ToString();
}
示例10: AppendMultilinePreservesIndentation
public void AppendMultilinePreservesIndentation()
{
IndentedStringBuilder sb = new IndentedStringBuilder();
var expected = string.Format("start{0} line2{0} line31{0} line32{0}", Environment.NewLine);
var result = sb
.AppendLine("start").Indent()
.AppendLine("line2").Indent()
.AppendLine(string.Format("line31{0}line32", Environment.NewLine));
Assert.Equal(expected, result.ToString());
sb = new IndentedStringBuilder();
expected = string.Format("start{0} line2{0} line31{0} line32{0}", Environment.NewLine);
result = sb
.AppendLine("start").Indent()
.AppendLine("line2").Indent()
.AppendLine(string.Format("line31{0}line32", Environment.NewLine));
Assert.Equal(expected, result.ToString());
}
示例11: AppendMultilinePreservesIndentation
public void AppendMultilinePreservesIndentation()
{
IndentedStringBuilder sb = new IndentedStringBuilder();
var expected = "start\r\n line2\r\n line31\n line32\r\n";
var result = sb
.AppendLine("start").Indent()
.AppendLine("line2").Indent()
.AppendLine("line31\nline32");
Assert.Equal(expected, result.ToString());
sb = new IndentedStringBuilder();
expected = "start\r\n line2\r\n line31\r\n line32\r\n";
result = sb
.AppendLine("start").Indent()
.AppendLine("line2").Indent()
.AppendLine("line31\r\nline32");
Assert.Equal(expected, result.ToString());
}
示例12: TransformPagingGroupedParameter
protected override void TransformPagingGroupedParameter(IndentedStringBuilder builder, AzureMethodTemplateModel nextMethod, bool filterRequired = false)
{
if (this.InputParameterTransformation.IsNullOrEmpty())
{
return;
}
var groupedType = this.InputParameterTransformation.First().ParameterMappings[0].InputParameter;
var nextGroupType = nextMethod.InputParameterTransformation.First().ParameterMappings[0].InputParameter;
if (nextGroupType.Name == groupedType.Name)
{
return;
}
var nextGroupTypeName = _namer.GetTypeName(nextGroupType.Name) + "Inner";
if (filterRequired && !nextGroupType.IsRequired)
{
return;
}
if (!groupedType.IsRequired)
{
builder.AppendLine("{0} {1} = null;", nextGroupTypeName, nextGroupType.Name.ToCamelCase());
builder.AppendLine("if ({0} != null) {{", groupedType.Name.ToCamelCase());
builder.Indent();
builder.AppendLine("{0} = new {1}();", nextGroupType.Name.ToCamelCase(), nextGroupTypeName);
}
else
{
builder.AppendLine("{1} {0} = new {1}();", nextGroupType.Name.ToCamelCase(), nextGroupTypeName);
}
foreach (var outParam in nextMethod.InputParameterTransformation.Select(t => t.OutputParameter))
{
builder.AppendLine("{0}.with{1}({2}.{3}());", nextGroupType.Name.ToCamelCase(), outParam.Name.ToPascalCase(), groupedType.Name.ToCamelCase(), outParam.Name.ToCamelCase());
}
if (!groupedType.IsRequired)
{
builder.Outdent().AppendLine(@"}");
}
}
示例13: AddQueryParametersToUrl
/// <summary>
/// Generate code to construct the query string from an array of query parameter strings containing 'key=value'
/// </summary>
/// <param name="variableName">The variable reference for the url</param>
/// <param name="builder">The string builder for url construction</param>
private static void AddQueryParametersToUrl(string variableName, IndentedStringBuilder builder)
{
builder.AppendLine("if (queryParameters.length > 0) {")
.Indent()
.AppendLine("{0} += '?' + queryParameters.join('&');", variableName).Outdent()
.AppendLine("}");
}
示例14: BuildPathParameters
/// <summary>
/// Generate code to replace path parameters in the url template with the appropriate values
/// </summary>
/// <param name="variableName">The variable name for the url to be constructed</param>
/// <param name="builder">The string builder for url construction</param>
protected virtual void BuildPathParameters(string variableName, IndentedStringBuilder builder)
{
if (builder == null)
{
throw new ArgumentNullException("builder");
}
foreach (var pathParameter in LogicalParameters.Where(p => p.Location == ParameterLocation.Path))
{
var pathReplaceFormat = "{0} = {0}.replace('{{{1}}}', encodeURIComponent({2}));";
if (pathParameter.SkipUrlEncoding())
{
pathReplaceFormat = "{0} = {0}.replace('{{{1}}}', {2});";
}
builder.AppendLine(pathReplaceFormat, variableName, pathParameter.SerializedName,
pathParameter.Type.ToString(pathParameter.Name));
}
}
示例15: BuildQueryParameterArray
/// <summary>
/// Genrate code to build an array of query parameter strings in a variable named 'queryParameters'. The
/// array should contain one string element for each query parameter of the form 'key=value'
/// </summary>
/// <param name="builder">The stringbuilder for url construction</param>
protected virtual void BuildQueryParameterArray(IndentedStringBuilder builder)
{
if (builder == null)
{
throw new ArgumentNullException("builder");
}
builder.AppendLine("var queryParameters = [];");
foreach (var queryParameter in LogicalParameters
.Where(p => p.Location == ParameterLocation.Query))
{
var queryAddFormat = "queryParameters.push('{0}=' + encodeURIComponent({1}));";
if (queryParameter.SkipUrlEncoding())
{
queryAddFormat = "queryParameters.push('{0}=' + {1});";
}
if (!queryParameter.IsRequired)
{
builder.AppendLine("if ({0} !== null && {0} !== undefined) {{", queryParameter.Name)
.Indent()
.AppendLine(queryAddFormat,
queryParameter.SerializedName, queryParameter.GetFormattedReferenceValue()).Outdent()
.AppendLine("}");
}
else
{
builder.AppendLine(queryAddFormat,
queryParameter.SerializedName, queryParameter.GetFormattedReferenceValue());
}
}
}