Exemple #1
0
        private (SyntaxTriviaList trailingTrivia, SyntaxTriviaList leadingTrivia) GetTrailingAndLeadingTrivia(
            KeyValuePair <ValueTuple <SyntaxToken, SyntaxToken>,
                          TriviaData> pair,
            CancellationToken cancellationToken)
        {
            if (pair.Key.Item1.RawKind == 0)
            {
                return(default(SyntaxTriviaList), GetLeadingTriviaAtBeginningOfTree(pair.Key, pair.Value, cancellationToken));
            }

            if (pair.Value is TriviaDataWithList csharpTriviaData)
            {
                var triviaList = csharpTriviaData.GetTriviaList(cancellationToken);
                var index      = GetFirstEndOfLineIndexOrRightBeforeComment(triviaList);

                return(TriviaHelpers.CreateTriviaListFromTo(triviaList, 0, index),
                       TriviaHelpers.CreateTriviaListFromTo(triviaList, index + 1, triviaList.Count - 1));
            }

            // whitespace trivia case such as spaces/tabs/new lines
            // these will always have a single text change
            var text           = pair.Value.GetTextChanges(GetTextSpan(pair.Key)).Single().NewText ?? "";
            var trailingTrivia = SyntaxFactory.ParseTrailingTrivia(text);

            var width         = trailingTrivia.GetFullWidth();
            var leadingTrivia = SyntaxFactory.ParseLeadingTrivia(text.Substring(width));

            return(trailingTrivia, leadingTrivia);
        }
Exemple #2
0
 public static void RegisterTriviaCommand(this DiscordClient client, IConfiguration config)
 {
     Console.WriteLine("Registering 'Trivia'...");
     client.GetService <CommandService>().CreateCommand("trivia")
     .AddCheck((c, u, ch) => ch.Id == UInt64.Parse(config["PrivChat"]))
     .Parameter("rounds", ParameterType.Required)
     .Description("Would you like to play a game?")
     .Do(async cea =>
     {
         if (!TriviaHelpers.Questions.Any())
         {
             TriviaHelpers.InitQuestions(config);
         }
         if (client.GetTrivias().Any(t => t.Channel.Id == cea.Channel.Id))
         {
             await cea.Channel.SendMessage($"Trivia already running.");
             return;
         }
         int rounds;
         if (int.TryParse(cea.Args[0], out rounds))
         {
             if (rounds > TriviaHelpers.Questions.Count)
             {
                 await cea.Channel.SendMessage($"Could not start trivia, too many questions specified.");
             }
             else
             {
                 var trivia = new Trivia(client, rounds, cea.Channel, config);
                 client.GetTrivias().Add(trivia);
                 trivia.StartTrivia();
             }
         }
         else
         {
             await cea.Channel.SendMessage($"Could not start trivia, parameter was not a number.");
         }
     });
 }