Fix argument parser

This commit is contained in:
zontreck 2024-12-17 11:40:12 -07:00
parent 3390716c0a
commit 43e9547219
2 changed files with 12 additions and 24 deletions

View file

@ -5,19 +5,15 @@ namespace LibAC.Arguments;
public class ArgumentParser
{
public List<IArgument> Arguments { get; private set; }
public ArgumentParser()
{
Arguments = new List<IArgument>();
}
/// <summary>
/// Parses a string array of arguments.
/// </summary>
/// <param name="args">The string array of arguments to parse.</param>
public void Parse(string[] args)
/// <returns>A arguments object representing the input</returns>
public static Arguments Parse(string[] args)
{
Arguments ret = new Arguments();
for (int i = 0; i < args.Length; i++)
{
var arg = args[i];
@ -40,36 +36,28 @@ namespace LibAC.Arguments;
// Determine the argument type and add it to the list
if (int.TryParse(value?.ToString(), out var intValue))
{
Arguments.Add(new IntegerArgument(key, intValue));
ret.AddArgument(new IntegerArgument(key, intValue));
}
else if (bool.TryParse(value?.ToString(), out var boolValue))
{
Arguments.Add(new BooleanArgument(key, boolValue));
ret.AddArgument(new BooleanArgument(key, boolValue));
}
else if (float.TryParse(value?.ToString(), out var floatValue))
{
Arguments.Add(new FloatArgument(key, floatValue));
ret.AddArgument(new FloatArgument(key, floatValue));
}
else if (double.TryParse(value?.ToString(), out var doubleValue))
{
Arguments.Add(new DoubleArgument(key, doubleValue));
ret.AddArgument(new DoubleArgument(key, doubleValue));
}
else
{
// Default to StringArgument if no matching type is found
Arguments.Add(new StringArgument(key, value?.ToString()));
ret.AddArgument(new StringArgument(key, value?.ToString()));
}
}
}
}
/// <summary>
/// Retrieves an argument by its key.
/// </summary>
/// <param name="key">The key of the argument to retrieve.</param>
/// <returns>The IArgument associated with the key, or null if not found.</returns>
public IArgument? GetArgument(string key)
{
return Arguments.Find(arg => arg.Key.Equals(key, StringComparison.OrdinalIgnoreCase));
return ret;
}
}

View file

@ -5,14 +5,14 @@ using System.Reflection;
[assembly:AssemblyDefaultAlias("LibAC")]
[assembly:AssemblyTitle("LibAC")]
[assembly:AssemblyDescription("Aria's Creations Common Code Library")]
[assembly:AssemblyVersion("1.3.0.1")]
[assembly:AssemblyVersion("1.3.0.2")]
namespace LibAC
{
public class LibAC
{
public static readonly string BUILD_DATE = "121624";
public static readonly string BUILD_TIME = "2121";
public static readonly string BUILD_DATE = "121724";
public static readonly string BUILD_TIME = "1139";
public static string VERSION => $"1.3.${BUILD_DATE}.${BUILD_TIME}";
}