//=========================================================================================== /// <summary> /// Register a handler for a specific command line argument /// </summary> /// <param name="argName"></param> /// <param name="argHandler"></param> /// <param name="required"></param> /// <param name="helpString"></param> /// <returns></returns> public Boolean RegisterArgument(String argName, CommandLineArgHandler argHandler, Boolean required, String helpString) { if (String.IsNullOrEmpty(argName)) { Console.WriteLine("Empty paramenter name"); return(false); } if (ArgumentHandler.ContainsKey(argName)) { Console.WriteLine("Argument already registered: " + argName); return(false); } ArgDefinition argDef = new ArgDefinition(); argDef.handler = argHandler; argDef.required = required; argDef.helpString = helpString; argDef.hadError = false; String argPrefix = argName.Substring(0, 2); if (argPrefix != "--") { // This is the empty value argDef.emptyValueName = argName; argName = ""; } ArgumentHandler.Add(argName, argDef); return(true); }
public ArgDefinitionFluentBuilder( ArgDefinition <TTarget> arg, Expression <Func <TTarget, TProp> > selector, Func <string, TProp> formatter) { this._arg = arg; this._selector = selector; this._formatter = formatter; this._arg.Setter = (target, s) => target.SetPropertyValue(_selector, _formatter(s)); }
public static IArgDefinitionFluentBuilder <TTarget, decimal> AddArg <TTarget>( this GetOptBase <TTarget> getOpt, Expression <Func <TTarget, decimal> > selector) where TTarget : new() { var arg = new ArgDefinition <TTarget>(); arg.ArgName = PropertyHelper <TTarget> .GetName(selector); getOpt._args.Add(arg); return(new ArgDefinitionFluentBuilder <TTarget, decimal>(arg, selector, DefaultFormatters.ToDecimalFormatter())); }
public static IArgDefinitionFluentBuilder <TTarget, string> AddArg <TTarget>( this GetOptBase <TTarget> getOpt, Expression <Func <TTarget, string> > selector) where TTarget : new() { var arg = new ArgDefinition <TTarget>(); arg.ArgName = PropertyHelper <TTarget> .GetName(selector); getOpt._args.Add(arg); return(new ArgDefinitionFluentBuilder <TTarget, string>(arg, selector, s => s)); }
public IArgDefinitionFluentBuilder <TTarget, TProp> AddArg <TProp>( Expression <Func <TTarget, TProp> > selector, Func <string, TProp> formatter) { var arg = new ArgDefinition <TTarget>(); arg.ArgName = PropertyHelper <TTarget> .GetName(selector); this._args.Add(arg); return(new ArgDefinitionFluentBuilder <TTarget, TProp>(arg, selector, formatter)); }
//=========================================================================================== /// <summary> /// Once a command line argument has been parsed, notify the handler /// </summary> /// <param name="arg"></param> /// <param name="value"></param> private void NotifyCommandLineArgumentParsed(String arg, String value) { CommandLinePargerEventArgs e = new CommandLinePargerEventArgs(); Boolean hadError = false; if (ArgumentHandler != null) { if (ArgumentHandler.ContainsKey(arg)) { if (ArgumentHandler[arg].handler != null) { ArgDefinition argResult = ArgumentHandler[arg]; e.parameter = arg; e.argvalue = value; ArgumentHandler[arg].handler(this, e, out hadError); argResult.hadError = hadError; if (hadError == true) { ArgsParsedSuccessfully = false; } argResult.parsed = true; ArgumentHandler[arg] = argResult; } else { Console.WriteLine("Argument had a null handler: " + arg); NotifyError(arg); ArgsParsedSuccessfully = false; } } else { //Console.WriteLine("Argument was not registerd: " + arg); NotifyError(arg); ArgsParsedSuccessfully = false; } } }