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); }
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); }