public CoconaCompletionCandidatesMetadata GetMetadata(CommandArgumentDescriptor argument) { var attr = argument.ParameterAttributes.OfType <CompletionCandidatesAttribute>().SingleOrDefault(); if (attr == null) { if (argument.ArgumentType.IsEnum) { return(new CoconaCompletionCandidatesMetadata( CompletionCandidateType.Provider, typeof(EnumCompletionCandidatesProvider), argument )); } return(new CoconaCompletionCandidatesMetadata( CompletionCandidateType.Default, typeof(StaticCompletionCandidatesProvider), argument )); } else { return(new CoconaCompletionCandidatesMetadata( attr.CandidateType, attr.CandidatesProviderType, argument )); } }
public void HasAttribute() { var argument = new CommandArgumentDescriptor( typeof(int), "test", 0, "", CoconaDefaultValue.None, new Attribute[] { new CompletionCandidatesAttribute(new [] { "Alice", "Karen" }), } ); var metadata = new CoconaCompletionCandidatesMetadata( CompletionCandidateType.Provider, typeof(StaticKeywordsCompletionCandidatesProvider), argument ); var provider = new StaticKeywordsCompletionCandidatesProvider(); var candidates = provider.GetCandidates(metadata); candidates.ResultType.Should().Be(CompletionCandidateResultType.Keywords); candidates.Values.Should().HaveCount(2); candidates.Values[0].Value.Should().Be("Alice"); candidates.Values[1].Value.Should().Be("Karen"); }
public void Argument_EnumValues() { var argument = new CommandArgumentDescriptor( typeof(TestEnum), "test", 0, "", CoconaDefaultValue.None, new Attribute[] { } ); var metadata = new CoconaCompletionCandidatesMetadata( CompletionCandidateType.Provider, typeof(EnumCompletionCandidatesProvider), argument ); var provider = new EnumCompletionCandidatesProvider(); var candidates = provider.GetCandidates(metadata); candidates.ResultType.Should().Be(CompletionCandidateResultType.Keywords); candidates.Values.Should().HaveCount(2); candidates.Values[0].Value.Should().Be("Alice"); candidates.Values[0].Description.Should().Be(string.Empty); candidates.Values[1].Value.Should().Be("Karen"); candidates.Values[1].Description.Should().Be(string.Empty); }
private object?ConvertTo(CommandArgumentDescriptor argument, Type type, string value) { try { return(Validate(argument, _valueConverter.ConvertTo(type, value))); } catch (Exception ex) when(!(ex is ParameterBinderException)) { throw new ParameterBinderException(ParameterBinderResult.TypeNotSupported, $"Argument '{argument.Name}' requires {type.Name} value. '{value}' cannot be converted to {type.Name} value.", argument: argument, innerException: ex); } }
public CoconaCompletionCandidatesMetadata( CompletionCandidateType candidateType, Type candidatesProviderType, CommandArgumentDescriptor commandArgument ) { CandidateType = candidateType; CandidatesProviderType = candidatesProviderType; ParameterType = commandArgument.ArgumentType; ParameterAttributes = commandArgument.ParameterAttributes; CommandOption = null; CommandArgument = commandArgument; }
public void Argument_Default() { var argument = new CommandArgumentDescriptor( typeof(int), "test", 0, "", CoconaDefaultValue.None, new Attribute[] { } ); var metadata = new CoconaCompletionCandidatesMetadata( CompletionCandidateType.Provider, typeof(EnumCompletionCandidatesProvider), argument ); var provider = new EnumCompletionCandidatesProvider(); var candidates = provider.GetCandidates(metadata); candidates.ResultType.Should().Be(CompletionCandidateResultType.Default); }
public StaticCompletionCandidates GetStaticCandidatesFromArgument(CommandArgumentDescriptor argument) { return(new StaticCompletionCandidates(CompletionCandidateResult.Default)); }
public StaticCompletionCandidates GetStaticCandidatesFromArgument(CommandArgumentDescriptor argument) { return(GetStaticCandidatesCore(_completionCandidatesMetadataFactory.GetMetadata(argument))); }
private string GetArgumentValues(CommandArgumentDescriptor argument) { return(GetArgumentValuesCore(_completionCandidates.GetStaticCandidatesFromArgument(argument), argument.Name)); }