PowerArgs.Cli.PowerArgsMultiContextAssistProvider.CanAssist C# (CSharp) Method

CanAssist() public method

public CanAssist ( RichCommandLineContext context ) : bool
context RichCommandLineContext
return bool
        public override bool CanAssist(RichCommandLineContext context)
        {
            Providers.Clear();
            Providers.AddRange(standardProviders);

            CommandLineArgument targetArgument = null;

            if (context.PreviousNonWhitespaceToken != null && context.PreviousNonWhitespaceToken.Value.StartsWith("-"))
            {
                var candidate = context.PreviousNonWhitespaceToken.Value.Substring(1);
                targetArgument = (from a in Definition.AllGlobalAndActionArguments where a.IsMatch(candidate) select a).SingleOrDefault();
            }

            if (targetArgument != null)
            {
                foreach (var assistant in targetArgument.Metadata.Metas<ArgContextualAssistant>())
                {
                    var dynamicProvider = assistant.GetContextAssistProvider(Definition);
                    Providers.Add(dynamicProvider);
                }
            }

            foreach(var provider in Providers)
            {
                if (provider is PowerArgsContextAwareAssistant)
                {
                    (provider as PowerArgsContextAwareAssistant).TargetArgument = targetArgument;
                }
            }

            var ret = base.CanAssist(context);

            return ret;
        }
PowerArgsMultiContextAssistProvider