Add source

This commit is contained in:
hexadecimal
2025-04-24 20:51:29 +03:00
parent 9badc969b8
commit e3c1cdea0e
92 changed files with 13471 additions and 0 deletions
@@ -0,0 +1,107 @@
#if NET5_0_OR_NETFRAMEWORK
using System;
using System.Text;
namespace System.Runtime.CompilerServices
{
// A minimal DefaultInterpolatedStringHandler implementation for .NET 5.0 and .NET Framework
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
internal struct DefaultInterpolatedStringHandler
{
private StringBuilder _builder;
public DefaultInterpolatedStringHandler(int literalLength, int formattedCount)
{
_builder = new StringBuilder(literalLength + formattedCount * 11);
}
public void AppendLiteral(string value)
{
_builder.Append(value);
}
public void AppendFormatted<T>(T value)
{
_builder.Append(value?.ToString() ?? string.Empty);
}
public void AppendFormatted<T>(T value, string format)
{
if (value is IFormattable formattable)
{
_builder.Append(formattable.ToString(format, null));
}
else
{
_builder.Append(value?.ToString() ?? string.Empty);
}
}
public void AppendFormatted(string value)
{
_builder.Append(value ?? string.Empty);
}
public void AppendFormatted(int value)
{
_builder.Append(value);
}
public void AppendFormatted<T>(T value, int alignment)
{
string str = value?.ToString() ?? string.Empty;
if (alignment != 0)
{
if (alignment < 0)
{
_builder.Append(str.PadRight(-alignment));
}
else
{
_builder.Append(str.PadLeft(alignment));
}
}
else
{
_builder.Append(str);
}
}
public void AppendFormatted<T>(T value, int alignment, string format)
{
string str;
if (value is IFormattable formattable)
{
str = formattable.ToString(format, null);
}
else
{
str = value?.ToString() ?? string.Empty;
}
if (alignment != 0)
{
if (alignment < 0)
{
_builder.Append(str.PadRight(-alignment));
}
else
{
_builder.Append(str.PadLeft(alignment));
}
}
else
{
_builder.Append(str);
}
}
public string ToStringAndClear()
{
string result = _builder.ToString();
_builder.Clear();
return result;
}
}
}
#endif