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 } }