private void PrintMethodUsage(CommandTextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor[] memberDescriptors)
        {
            var indent = writer.Indent;
            var query  = from item in memberDescriptors
                         where item.IsRequired == true || item.IsVariables == true
                         select item;
            var maxWidth = writer.Width - (writer.TabString.Length * writer.Indent);
            var line     = this.Name + " " + descriptor.Name;

            if (this.Aliases.Any() == true)
            {
                line += $"({string.Join(",", this.Aliases)})";
            }
            foreach (var item in query)
            {
                var text = this.GetString(item);
                if (line != string.Empty)
                {
                    line += " ";
                }
                if (line.Length + text.Length >= maxWidth)
                {
                    writer.WriteLine(line);
                    line = string.Empty.PadLeft(descriptor.Name.Length + 1);
                }
                line += text;
            }
            writer.WriteLine(line);
            writer.Indent = indent;
        }
 private void PrintExample(CommandTextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor[] _)
 {
     if (descriptor.Example != string.Empty && this.Usage != CommandUsage.Simple)
     {
         writer.BeginGroup(Resources.Text_Example);
         writer.WriteMultiline(descriptor.Example);
         writer.EndGroup();
     }
 }
 private void PrintDescription(CommandTextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor[] _)
 {
     if (descriptor.Description != string.Empty && this.IsDetail == true)
     {
         writer.BeginGroup(Resources.Text_Description);
         writer.WriteMultiline(descriptor.Description);
         writer.EndGroup();
     }
 }
 private void PrintSummary(CommandTextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor[] _)
 {
     if (descriptor.Summary != string.Empty)
     {
         writer.BeginGroup(Resources.Text_Summary);
         writer.WriteMultiline(descriptor.Summary);
         writer.EndGroup();
     }
 }
 private void Print(CommandTextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor[] memberDescriptors)
 {
     this.PrintSummary(writer, descriptor, memberDescriptors);
     this.PrintDescription(writer, descriptor, memberDescriptors);
     this.PrintUsage(writer, descriptor, memberDescriptors);
     this.PrintExample(writer, descriptor, memberDescriptors);
     this.PrintRequirements(writer, descriptor, memberDescriptors);
     this.PrintVariables(writer, descriptor, memberDescriptors);
     this.PrintOptions(writer, descriptor, memberDescriptors);
 }
        private static string GetNames(CommandMethodDescriptor descriptor)
        {
            var sb = new StringBuilder();

            sb.Append(descriptor.Name);
            foreach (var item in descriptor.Aliases)
            {
                sb.Append($", {item}");
            }
            return(sb.ToString());
        }
        private void PrintVariables(CommandTextWriter writer, CommandMethodDescriptor _, CommandMemberDescriptor[] memberDescriptors)
        {
            var variables = memberDescriptors.FirstOrDefault(item => item.Usage == CommandPropertyUsage.Variables);

            if (variables != null && this.Usage != CommandUsage.Simple)
            {
                this.BeginGroup(writer, Resources.Text_Variables);
                this.PrintVariables(writer, variables);
                this.EndGroup(writer);
            }
        }
        private void PrintOptions(CommandTextWriter writer, CommandMethodDescriptor _, CommandMemberDescriptor[] memberDescriptors)
        {
            var items = memberDescriptors.Where(item => item.Usage == CommandPropertyUsage.General || item.Usage == CommandPropertyUsage.Switch);

            if (items.Any() == true && this.Usage != CommandUsage.Simple)
            {
                this.BeginGroup(writer, Resources.Text_Options);
                foreach (var item in items)
                {
                    this.PrintOption(writer, item, items.Last() == item);
                }
                this.EndGroup(writer);
            }
        }
 public virtual void Print(TextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor memberDescriptor)
 {
     if (writer is CommandTextWriter commandWriter)
     {
         this.Print(commandWriter, descriptor, memberDescriptor);
     }
     else
     {
         using var tw = new CommandTextWriter()
               {
                   IsAnsiSupported = this.IsAnsiSupported
               };
         this.Print(tw, descriptor, memberDescriptor);
         writer.Write(tw.ToString());
     }
 }
        private void PrintRequirements(CommandTextWriter writer, CommandMethodDescriptor _, CommandMemberDescriptor[] memberDescriptors)
        {
            var items = memberDescriptors.Where(item => item.IsRequired == true).ToArray();

            if (items.Any() == true && this.Usage != CommandUsage.Simple)
            {
                writer.BeginGroup(Resources.Text_Requirements);
                for (var i = 0; i < items.Length; i++)
                {
                    var item = items[i];
                    this.PrintRequirement(writer, item);
                    if (i + 1 < items.Length)
                    {
                        writer.WriteLine();
                    }
                }
                writer.EndGroup();
            }
        }
示例#11
0
 public SubCommandBase(CommandMethodBase command, CommandMethodDescriptor descriptor)
 {
     this.command    = command;
     this.descriptor = descriptor;
     this.Members    = descriptor.Members.Select(item => new SubCommandPropertyDescriptor(command, item)).ToArray();
 }
 private void PrintUsage(CommandTextWriter writer, CommandMethodDescriptor _, CommandMemberDescriptor memberDescriptor)
 {
     this.BeginGroup(writer, Resources.Text_Usage);
     this.PrintOption(writer, memberDescriptor, false);
     this.EndGroup(writer);
 }
 private void PrintUsage(CommandTextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor[] memberDescriptors)
 {
     this.BeginGroup(writer, Resources.Text_Usage);
     this.PrintMethodUsage(writer, descriptor, memberDescriptors);
     this.EndGroup(writer);
 }
 private void PrintDescription(CommandTextWriter writer, CommandMethodDescriptor _, CommandMemberDescriptor memberDescriptor)
 {
     writer.BeginGroup(Resources.Text_Description);
     writer.WriteMultiline(memberDescriptor.Description);
     writer.EndGroup();
 }
 private void Print(CommandTextWriter writer, CommandMethodDescriptor descriptor, CommandMemberDescriptor memberDescriptor)
 {
     this.PrintSummary(writer, descriptor, memberDescriptor);
     this.PrintDescription(writer, descriptor, memberDescriptor);
     this.PrintUsage(writer, descriptor, memberDescriptor);
 }