public abstract PresentParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options);
public static OptionMap Create(object target, ParserSettings settings) { var list = ReflectionHelper.RetrievePropertyList<BaseOptionAttribute>(target); if (list == null) { return null; } var map = new OptionMap(list.Count, settings); foreach (var pair in list) { if (pair.Left != null && pair.Right != null) { string uniqueName; if (pair.Right.AutoLongName) { uniqueName = pair.Left.Name.ToLowerInvariant(); pair.Right.LongName = uniqueName; } else { uniqueName = pair.Right.UniqueName; } map[uniqueName] = new OptionInfo(pair.Right, pair.Left, settings.ParsingCulture); } } map.RawOptions = target; return map; }
public static OptionMap Create( object target, IList<Pair<PropertyInfo, VerbOptionAttribute>> verbs, ParserSettings settings) { var map = new OptionMap(verbs.Count, settings); foreach (var verb in verbs) { var optionInfo = new OptionInfo(verb.Right, verb.Left, settings.ParsingCulture) { HasParameterLessCtor = verb.Left.PropertyType.GetConstructor(Type.EmptyTypes) != null }; if (!optionInfo.HasParameterLessCtor && verb.Left.GetValue(target, null) == null) { throw new ParserException("Type {0} must have a parameterless constructor or" + " be already initialized to be used as a verb command.".FormatInvariant(verb.Left.PropertyType)); } map[verb.Right.UniqueName] = optionInfo; } map.RawOptions = target; return map; }
private bool TryParseHelpVerb(string[] args, object options, Pair<MethodInfo, HelpVerbOptionAttribute> helpInfo, OptionMap optionMap) { var helpWriter = _settings.HelpWriter; if (helpInfo != null && helpWriter != null) { if (string.Compare(args[0], helpInfo.Right.LongName, GetStringComparison(_settings)) == 0) { // User explicitly requested help var verb = args.FirstOrDefault(); if (verb != null) { var verbOption = optionMap[verb]; if (verbOption != null) { if (verbOption.GetValue(options) == null) { // We need to create an instance also to render help verbOption.CreateInstance(options); } } } DisplayHelpVerbText(options, helpInfo, verb); return true; } } return false; }