public static Specification FromProperty(PropertyInfo property) { var attrs = property.GetCustomAttributes(true); var oa = attrs.OfType <OptionAttribute>(); if (oa.Count() == 1) { var spec = OptionSpecification.FromAttribute(oa.Single(), property.PropertyType, property.PropertyType.IsEnum ? Enum.GetNames(property.PropertyType) : Enumerable.Empty <string>()); if (spec.ShortName.Length == 0 && spec.LongName.Length == 0) { return(spec.WithLongName(property.Name.ToLowerInvariant())); } return(spec); } var va = attrs.OfType <ValueAttribute>(); if (va.Count() == 1) { return(ValueSpecification.FromAttribute(va.Single(), property.PropertyType, property.PropertyType.IsEnum ? Enum.GetNames(property.PropertyType) : Enumerable.Empty <string>())); } throw new InvalidOperationException(); }
public static Specification FromProperty(PropertyInfo property) { System.Collections.Generic.List <string> enumList = new System.Collections.Generic.List <string>(); if (property.PropertyType.IsEnum) { enumList.AddRange(Enum.GetNames(property.PropertyType)); } var attrs = property.GetCustomAttributes(true); var oa = attrs.OfType <OptionAttribute>(); if (oa.Count() == 1) { var spec = OptionSpecification.FromAttribute(oa.Single(), property.PropertyType, enumList); if (spec.ShortName.Length == 0 && spec.LongName.Length == 0) { return(spec.WithLongName(property.Name.ToLowerInvariant(), enumList)); } return(spec); } var va = attrs.OfType <ValueAttribute>(); if (va.Count() == 1) { return(ValueSpecification.FromAttribute(va.Single(), property.PropertyType)); } throw new InvalidOperationException(); }
public static OptionSpecification WithLongName(this OptionSpecification specification, string newLongName) { return(new OptionSpecification( specification.ShortName, newLongName, specification.Required, specification.SetName, specification.Min, specification.Max, specification.DefaultValue, specification.ConversionType, specification.HelpText, specification.MetaValue)); }
public static OptionSpecification WithLongName(this OptionSpecification specification, string newLongName, System.Collections.Generic.IEnumerable <string> enumValues) { return(new OptionSpecification( specification.ShortName, newLongName, specification.Required, specification.SetName, specification.Min, specification.Max, specification.DefaultValue, specification.ConversionType, specification.HelpText, specification.MetaValue, enumValues)); }
public void Get_name_from_option_specification() { const string ShortName = "s"; const string LongName = "long"; // Fixture setup var expected = new NameInfo(ShortName, LongName); var spec = new OptionSpecification(ShortName, LongName, false, string.Empty, Maybe.Nothing<int>(), Maybe.Nothing<int>(), '.', null, string.Empty, string.Empty, new List<string>(), typeof(IEnumerable<string>), TargetType.Sequence); // Exercize system var result = spec.FromOptionSpecification(); // Verify outcome expected.ShouldBeEquivalentTo(result); // Teardown }
public static OptionSpecification WithLongName(this OptionSpecification specification, string newLongName) { return(new OptionSpecification( specification.ShortName, newLongName, specification.Required, specification.SetName, specification.Min, specification.Max, specification.Separator, specification.DefaultValue, specification.HelpText, specification.MetaValue, specification.EnumValues, specification.ConversionType, specification.TargetType, specification.Group, specification.Hidden)); }
public static string UniqueName(this OptionSpecification specification) { return(specification.ShortName.Length > 0 ? specification.ShortName : specification.LongName); }
public static NameInfo FromOptionSpecification(this OptionSpecification specification) { return(new NameInfo( specification.LongName, specification.ShortName)); }