示例#1
0
        private void AddCommandList(Document doc, CommandGroup group)
        {
            ParagraphStyle style = new ParagraphStyle
            {
                Indent = 3,
                Tabs = new[] { 22 }
            };

            // TODO - add option to show ALL commands/groups
            const bool showHidden = false;

            var commands = GetExpandedCommandNodes(group, showHidden)
                .Select(x => new { x.Node, x.Depth, Verb = VerbPath(x.Node, x.Depth - 1) });

            foreach (var entry in commands.OrderBy(x => x.Verb))
            {
                if (entry.Node.Hidden)
                {
                    continue;
                }

                var para = doc.AddParagraph(new Paragraph(style));

                // TODO - highlight the command by setting span style?
                para.AddSpan(new Span(entry.Verb));
                para.AddTab();

                if (!string.IsNullOrEmpty(entry.Node.Summary))
                {
                    para.AddSpan(new Span(entry.Node.Summary));
                }
            }
        }
示例#2
0
        private void AddName(Command command, Document doc, ParagraphStyle headerStyle)
        {
            var para = doc.AddParagraph(new Paragraph(headerStyle));
            para.AddSpan("NAME");
            // TODO - rather than drawing dashes, make the prior span a different color or some such
            para = doc.AddParagraph(new Paragraph());
            para.AddSpan("----");

            para = doc.AddParagraph(new Paragraph());
            para.AddSpan(VerbPath(command));
            para.AddSpan("-");
            para.AddSpan(command.Summary);
        }
示例#3
0
        private void AddSynopsis(Command command, Document doc, ParagraphStyle headerStyle)
        {
            var para = doc.AddParagraph(new Paragraph(headerStyle));
            para.AddSpan("SYNOPSIS");
            para = doc.AddParagraph(new Paragraph());
            para.AddSpan("--------");

            para = doc.AddParagraph(new Paragraph());
            para.AddSpan(VerbPath(command));

            foreach (var named in command.NamedParameters)
            {
                para.AddSpan(named.Usage);
            }

            // TODO - pick up any positional parameters on prior verbs
            foreach (var pos in command.PositionalParameters)
            {
                para.AddSpan(pos.Usage);
            }
        }
示例#4
0
        private Document GroupHelp(CommandGroup group)
        {
            Document doc = new Document();

            var para = doc.AddParagraph(new Paragraph(new ParagraphStyle { LinesAfter = 1 }));
            para.AddSpan("usage: " + VerbPath(group));

            AddNamed(para, group.NamedParameters);
            // TODO - include --help!

            if (group.Nodes.Any())
            {
                para.AddSpan("<command>");
            }

            if (group.Nodes.Any(x => x.PositionalParameters.Any()))
            {
                para.AddSpan("[<args>]");
            }

            // TODO - add usage
            // TODO - add overall command description

            // TODO - include "Help" in the command list!
            AddCommandList(doc, group);

            // TODO - add help blurb
            if (group.Nodes.Any())
            {
                var p = doc.AddParagraph(new Paragraph(new ParagraphStyle { LinesBefore = 1 }));
                var helpVerb = "help";  // TODO - pull from settings!
                p.AddSpan("See '{0} {1} <command>' to read about a specific subcommand.", VerbPath(group), helpVerb);
            }

            return doc;
        }
示例#5
0
        private void AddOptions(Command command, Document doc, ParagraphStyle headerStyle)
        {
            var para = doc.AddParagraph(new Paragraph(headerStyle));
            para.AddSpan("OPTIONS");
            para = doc.AddParagraph(new Paragraph());
            para.AddSpan("-------");

            var descStyle = new ParagraphStyle
            {
                Indent = 3,
                LinesAfter = 1
            };

            foreach (var named in command.NamedParameters)
            {
                para = doc.AddParagraph(new Paragraph());
                para.AddSpan(named.Usage);

                foreach (var p in MarkLeft.Parse(named.Description, descStyle))
                {
                    doc.AddParagraph(p);
                }
            }

            // TODO - add positional parameters from prior verbs
            foreach (var pos in command.PositionalParameters)
            {
                para = doc.AddParagraph(new Paragraph());
                para.AddSpan(pos.Usage);

                foreach (var p in MarkLeft.Parse(pos.Description, descStyle))
                {
                    doc.AddParagraph(p);
                }
            }
        }