using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ChadSoft
{
///
/// Parses an array of command line arguments into a more usable object.
///
public class CommandLineParameters //: IDictionary
{
#region Constants
private const string PARAMETER_REGEX = @"[-/]-?([\w\.]*)(?:[=:]([\w\.]*)?)?";
#endregion
#region Properties
private Dictionary _Parameters = new Dictionary();
private Dictionary Parameters
{
get { return _Parameters; }
}
#endregion
#region Constructors
public CommandLineParameters(string[] args)
{
ParseArguments(args);
}
#endregion
#region Internal Helper Methods
protected internal void ParseArguments(string[] args)
{
// Populate the Parameters
foreach (Match parameter in Regex.Matches(String.Join(" ", args), PARAMETER_REGEX))
this[parameter.Groups[1].Value] = parameter.Groups[2].Value;
}
#endregion
#region Indexer
protected string this[string key]
{
get
{
string val = null;
Parameters.TryGetValue(key.ToUpper(), out val);
return val;
}
set
{
if (Parameters.ContainsKey(key.ToUpper()))
Parameters[key.ToUpper()] = value;
else
Parameters.Add(key.ToUpper(), value);
}
}
#endregion
#region IDictionary Members
//public void Add(string key, string value) { Parameters.Add(key, value); }
//public bool ContainsKey(string key) { Parameters.ContainsKey(key); }
//public ICollection Keys { get { return Parameters.Keys; } }
//public bool Remove(string key) { return Parameters.Remove(key); }
//public bool TryGetValue(string key, out string value) { return Parameters.TryGetValue(key, out value); }
//public ICollection Values { get { return Parameters.Values; } }
#endregion
}
}