mirror of
https://github.com/oliverbooth/VpSharp
synced 2024-11-10 02:35:42 +00:00
Accept IFormatProvider in Coordinates.ToString
This commit is contained in:
parent
342820b444
commit
6804959f93
@ -10,15 +10,15 @@ public readonly partial struct Coordinates
|
||||
{
|
||||
private static class Serializer
|
||||
{
|
||||
public static string Serialize(in Coordinates coordinates, string format)
|
||||
public static string Serialize(in Coordinates coordinates, string format, IFormatProvider? formatProvider)
|
||||
{
|
||||
int count = Serialize(coordinates, format, Span<char>.Empty);
|
||||
int count = Serialize(coordinates, format, formatProvider, Span<char>.Empty);
|
||||
Span<char> chars = stackalloc char[count];
|
||||
Serialize(coordinates, format, chars);
|
||||
Serialize(coordinates, format, formatProvider, chars);
|
||||
return chars.ToString();
|
||||
}
|
||||
|
||||
public static int Serialize(in Coordinates coordinates, string format, Span<char> destination)
|
||||
public static int Serialize(in Coordinates coordinates, string format, IFormatProvider? formatProvider, Span<char> destination)
|
||||
{
|
||||
using Utf8ValueStringBuilder builder = ZString.CreateUtf8StringBuilder();
|
||||
|
||||
@ -40,7 +40,7 @@ public readonly partial struct Coordinates
|
||||
builder.Append('+');
|
||||
}
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, coordinates.Z));
|
||||
builder.Append(string.Format(formatProvider, format, coordinates.Z));
|
||||
builder.Append(' ');
|
||||
|
||||
if (west)
|
||||
@ -48,7 +48,7 @@ public readonly partial struct Coordinates
|
||||
builder.Append('+');
|
||||
}
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, coordinates.X));
|
||||
builder.Append(string.Format(formatProvider, format, coordinates.X));
|
||||
builder.Append(' ');
|
||||
|
||||
if (up)
|
||||
@ -56,7 +56,7 @@ public readonly partial struct Coordinates
|
||||
builder.Append('+');
|
||||
}
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, coordinates.Y));
|
||||
builder.Append(string.Format(formatProvider, format, coordinates.Y));
|
||||
builder.Append("a ");
|
||||
|
||||
if (dir)
|
||||
@ -64,25 +64,25 @@ public readonly partial struct Coordinates
|
||||
builder.Append('+');
|
||||
}
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, coordinates.Yaw));
|
||||
builder.Append(string.Format(formatProvider, format, coordinates.Yaw));
|
||||
}
|
||||
else
|
||||
{
|
||||
char zChar = north ? 'n' : 's';
|
||||
char xChar = west ? 'w' : 'e';
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, Math.Abs(coordinates.Z)));
|
||||
builder.Append(string.Format(formatProvider, format, Math.Abs(coordinates.Z)));
|
||||
builder.Append(zChar);
|
||||
builder.Append(' ');
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, Math.Abs(coordinates.X)));
|
||||
builder.Append(string.Format(formatProvider, format, Math.Abs(coordinates.X)));
|
||||
builder.Append(xChar);
|
||||
builder.Append(' ');
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, coordinates.Y));
|
||||
builder.Append(string.Format(formatProvider, format, coordinates.Y));
|
||||
builder.Append("a ");
|
||||
|
||||
builder.Append(string.Format(CultureInfo.InvariantCulture, format, coordinates.Yaw));
|
||||
builder.Append(string.Format(formatProvider, format, coordinates.Yaw));
|
||||
}
|
||||
|
||||
ReadOnlySpan<byte> bytes = builder.AsSpan();
|
||||
@ -339,7 +339,7 @@ public readonly partial struct Coordinates
|
||||
{
|
||||
y = value;
|
||||
}
|
||||
else if (isAt3 && double.TryParse(chars, NumberStyles.Float, CultureInfo.InvariantCulture, out value))
|
||||
else if (isAt3 && double.TryParse(chars, NumberStyles.Float, formatProvider, out value))
|
||||
{
|
||||
yaw = value;
|
||||
}*/
|
||||
|
@ -3,7 +3,7 @@
|
||||
/// <summary>
|
||||
/// Represents a set of coordinates.
|
||||
/// </summary>
|
||||
public readonly partial struct Coordinates : IEquatable<Coordinates>
|
||||
public readonly partial struct Coordinates : IEquatable<Coordinates>, IFormattable
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Coordinates" /> struct.
|
||||
@ -195,9 +195,11 @@ public readonly partial struct Coordinates : IEquatable<Coordinates>
|
||||
/// Returns the string representation of these coordinates.
|
||||
/// </summary>
|
||||
/// <param name="format">The format to apply to each component.</param>
|
||||
/// <param name="formatProvider">The format provider.</param>
|
||||
/// <returns>A <see cref="string" /> representation of these coordinates.</returns>
|
||||
public string ToString(string format)
|
||||
public string ToString(string? format, IFormatProvider? formatProvider = null)
|
||||
{
|
||||
return Serializer.Serialize(this, format);
|
||||
format ??= "{0}";
|
||||
return Serializer.Serialize(this, format, formatProvider);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user