StringBuilderHelper
using System;
using System.Globalization;
using System.Text;
namespace Autodesk.DesignScript.Geometry
{
internal static class StringBuilderHelper
{
private static readonly CultureInfo _inv = CultureInfo.InvariantCulture;
public static StringBuilder Add(this StringBuilder builder, string name, bool value)
{
return builder.Append(name).Append(value);
}
public static StringBuilder Add(this StringBuilder builder, string name, int value)
{
return builder.Append(name).Append(value);
}
public static StringBuilder Add(this StringBuilder builder, string name, long value)
{
return builder.Append(name).Append(value);
}
public static StringBuilder Add(this StringBuilder builder, string name, double value)
{
return builder.Append(name).AddDouble(value);
}
public static StringBuilder Add(this StringBuilder builder, string name, DesignScriptEntity value)
{
return builder.Append(name).Add(value);
}
private unsafe static StringBuilder AddDouble(this StringBuilder builder, double value)
{
Span<char> span = new Span<char>(stackalloc byte[128], 64);
Span<char> destination = span;
if (value.TryFormat(destination, out int charsWritten, "F3", _inv))
builder.Append(destination.Slice(0, charsWritten));
else
builder.Append(value.ToString("F3", _inv));
return builder;
}
public static StringBuilder Add(this StringBuilder builder, DesignScriptEntity value)
{
value.AppendTo(builder);
return builder;
}
}
}