Add self-formatting to Input types

This commit is contained in:
Matt Nadareski
2024-12-04 21:20:38 -05:00
parent 724b1b6719
commit e7baa7d33f
13 changed files with 393 additions and 1 deletions

View File

@@ -28,6 +28,7 @@
- Split Input type into typed classes
- Add flag for value being set
- Add unused inputs to Aaru
- Add self-formatting to Input types
### 3.2.4 (2024-11-24)

View File

@@ -1,3 +1,5 @@
using System.Text;
namespace MPF.ExecutionContexts.Data
{
/// <summary>
@@ -25,6 +27,34 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString().ToLowerInvariant());
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,3 +1,5 @@
using System.Text;
namespace MPF.ExecutionContexts.Data
{
/// <summary>
@@ -25,6 +27,25 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == false)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -71,7 +71,13 @@ namespace MPF.ExecutionContexts.Data
#endregion
#region Processors
#region Functionality
/// <summary>
/// Create a formatted representation of the input and possible value
/// </summary>
/// <param name="useEquals">Use an equal sign as a separator on output</param>
public abstract string Format(bool useEquals);
/// <summary>
/// Process the current index, if possible

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == short.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != short.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == int.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != int.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == long.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != long.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == sbyte.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != sbyte.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,3 +1,5 @@
using System.Text;
namespace MPF.ExecutionContexts.Data
{
/// <summary>
@@ -25,6 +27,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == string.Empty)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != string.Empty))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == ushort.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != ushort.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == uint.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != uint.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == ulong.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != ulong.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{

View File

@@ -1,4 +1,5 @@
using System.Globalization;
using System.Text;
namespace MPF.ExecutionContexts.Data
{
@@ -27,6 +28,42 @@ namespace MPF.ExecutionContexts.Data
#endregion
/// <inheritdoc/>
public override string Format(bool useEquals)
{
// Do not output if there is no value
if (Value == null)
return string.Empty;
// Do not output if required value is invalid
if (_required && Value == byte.MinValue)
return string.Empty;
// Build the output format
var builder = new StringBuilder();
// Flag name
if (_longName != null)
builder.Append(_longName);
else
builder.Append(Name);
// Only output separator and value if needed
if (_required || (!_required && Value != byte.MinValue))
{
// Separator
if (useEquals)
builder.Append("=");
else
builder.Append(" ");
// Value
builder.Append(Value.ToString());
}
return builder.ToString();
}
/// <inheritdoc/>
public override bool Process(string[] parts, ref int index)
{