コード例 #1
0
        private void ScanStackedOptions(
            ElementsCursor <SyntaxToken> cursor, List <SyntaxError> errors,
            SyntaxToken nameMarker, SyntaxToken name, IReadOnlyList <string> commandName, List <ArgumentSyntax> arguments)
        {
            var    builder      = new SyntaxTokenBuilder();
            var    optionsSpan  = name.Span;
            string optionNames  = name.StringValue;
            int    optionsCount = optionNames.Length;

            GetShortOptionName(errors, builder, optionsSpan, optionNames, 0);
            var shortName = builder.Build();
            var option    = new OptionSyntax(nameMarker, shortName, valueMarker: null, value: null);

            arguments.Add(option);
            nameMarker = null;

            for (int i = 1; i < optionsCount - 1; i++)
            {
                GetShortOptionName(errors, builder, optionsSpan, optionNames, i);
                shortName = builder.Build();
                option    = new OptionSyntax(nameMarker, shortName, valueMarker: null, value: null);
                arguments.Add(option);
            }

            GetShortOptionName(errors, builder, optionsSpan, optionNames, optionsCount - 1);
            if (name.HasTrailingTrivia)
            {
                builder.TrailingTrivia = name.TrailingTrivia;
            }
            name = builder.Build();

            option = ScanOption(cursor, errors, nameMarker, name, commandName);
            arguments.Add(option);
        }
コード例 #2
0
        public bool VisitOption(OptionSyntax option, CommandLineHighlightingVisitorParams <TStyle> param)
        {
            var spans   = param.Spans;
            var palette = param.Palette;

            if (option.NameMarker != null)
            {
                AddSpans(spans, option.NameMarker, CommandLineStyleName.OptionNameMarker, palette);
            }

            AddSpans(spans, option.Name, CommandLineStyleName.OptionName, palette);

            if (option.ValueMarker != null)
            {
                AddSpans(spans, option.ValueMarker, CommandLineStyleName.OptionValueMarker, palette);
            }

            if (option.Value != null)
            {
                AddSpans(spans, option.Value, CommandLineStyleName.OptionValue, palette);
            }

            return(false);
        }