/// <summary> /// Returns the words contained in the specified text, delimiting based on the specified options. /// </summary> /// <param name="text"> /// A <see cref="string"/> containing the text to parse. /// </param> /// <param name="options"> /// One or more of the <see cref="WordParserOptions"/> specifying parsing and delimiting options. /// </param> /// <param name="prefix"> /// A <see cref="char"/> representing an optional prefix of <paramref name="text"/>, that if present, /// will be returned as a separate token. /// </param> /// <returns> /// A <see cref="Collection{T}"/> of strings containing the words contained in <paramref name="text"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="text"/> is <see langword="null"/>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="options"/> is not one or more of the <see cref="WordParserOptions"/> values. /// </exception> internal static Collection <string> Parse(string text, WordParserOptions options, char prefix) { WordParser parser = new WordParser(text, options, prefix); Collection <string> words = new Collection <string>(); string?word; while ((word = parser.NextWord()) != null) { words.Add(word); } return(words); }
public static bool SymbolNameContainsUriWords(this ISymbol symbol, CancellationToken cancellationToken) { if (symbol.Name == null || !symbol.SymbolNameContainsUriWordSubstring(cancellationToken)) { // quick check failed return false; } string word; var parser = new WordParser(symbol.Name, WordParserOptions.SplitCompoundWords); while ((word = parser.NextWord()) != null) { if (s_uriWords.Contains(word)) { return true; } } return false; }
public static bool SymbolNameContainsUriWords(this ISymbol symbol, CancellationToken cancellationToken) { if (symbol.Name == null || !symbol.SymbolNameContainsUriWordSubstring(cancellationToken)) { // quick check failed return(false); } string word; var parser = new WordParser(symbol.Name, WordParserOptions.SplitCompoundWords); while ((word = parser.NextWord()) != null) { if (s_uriWords.Contains(word)) { return(true); } } return(false); }
private static bool HasEventLikeName(IMethodSymbol method) { WordParser parser = new WordParser(method.Name, WordParserOptions.SplitCompoundWords); string word = parser.NextWord(); // Check for 'FireXXX', 'RaiseXXX' if (string.Equals(word, "fire", StringComparison.OrdinalIgnoreCase) || string.Equals(word, "raise", StringComparison.OrdinalIgnoreCase)) { return true; } // Check for 'AddOnXXX', 'RemoveOnXXX' if (string.Equals(word, "add", StringComparison.OrdinalIgnoreCase) || string.Equals(word, "remove", StringComparison.OrdinalIgnoreCase)) { return string.Equals(parser.NextWord(), "on", StringComparison.OrdinalIgnoreCase); } return false; }
/// <summary> /// Returns a value indicating whether at least one of the specified words occurs, using a case-insensitive ordinal comparison, within the specified text. /// </summary> /// <param name="text"> /// A <see cref="string"/> containing the text to check. /// </param> /// <param name="options"> /// One or more of the <see cref="WordParserOptions"/> specifying parsing and delimiting options. /// </param> /// <param name="prefix"> /// A <see cref="char"/> representing an optional prefix of <paramref name="text"/>, that if present, /// will be returned as a separate token. /// </param> /// <param name="words"> /// A <see cref="string"/> array containing the words to seek. /// </param> /// <returns> /// <see langword="true"/> if at least one of the elements within <paramref name="words"/> occurs within <paramref name="text"/>, otherwise, <see langword="false"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="text"/> is <see langword="null"/>. /// <para> /// -or- /// </para> /// <paramref name="words"/> is <see langword="null"/>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="options"/> is not one or more of the <see cref="WordParserOptions"/> values. /// </exception> internal static bool ContainsWord(string text, WordParserOptions options, char prefix, ImmutableArray <string> words) { if (words.IsDefault) { throw new ArgumentNullException(nameof(words)); } WordParser parser = new WordParser(text, options, prefix); string?parsedWord; while ((parsedWord = parser.NextWord()) != null) { foreach (string word in words) { if (string.Equals(parsedWord, word, StringComparison.OrdinalIgnoreCase)) { return(true); } } } return(false); }
private static bool HasCorrectPrefix(ISymbol symbol, char prefix) { WordParser parser = new WordParser(symbol.Name, WordParserOptions.SplitCompoundWords, prefix); string firstWord = parser.NextWord(); if (firstWord == null || firstWord.Length > 1) { return false; } return firstWord[0] == prefix; }
/// <summary> /// Returns a value indicating whether at least one of the specified words occurs, using a case-insensitive ordinal comparison, within the specified text. /// </summary> /// <param name="text"> /// A <see cref="String"/> containing the text to check. /// </param> /// <param name="options"> /// One or more of the <see cref="WordParserOptions"/> specifying parsing and delimiting options. /// </param> /// <param name="prefix"> /// A <see cref="Char"/> representing an optional prefix of <paramref name="text"/>, that if present, /// will be returned as a separate token. /// </param> /// <param name="words"> /// A <see cref="String"/> array containing the words to seek. /// </param> /// <returns> /// <see langword="true"/> if at least one of the elements within <paramref name="words"/> occurs within <paramref name="text"/>, otherwise, <see langword="false"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="text"/> is <see langword="null"/>. /// <para> /// -or- /// </para> /// <paramref name="words"/> is <see langword="null"/>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="options"/> is not one or more of the <see cref="WordParserOptions"/> values. /// </exception> internal static bool ContainsWord(string text, WordParserOptions options, char prefix, params string[] words) { if (words == null) { throw new ArgumentNullException(nameof(words)); } WordParser parser = new WordParser(text, options, prefix); string parsedWord; while ((parsedWord = parser.NextWord()) != null) { foreach (string word in words) { if (string.Equals(parsedWord, word, StringComparison.OrdinalIgnoreCase)) { return true; } } } return false; }
/// <summary> /// Returns the words contained in the specified text, delimiting based on the specified options. /// </summary> /// <param name="text"> /// A <see cref="String"/> containing the text to parse. /// </param> /// <param name="options"> /// One or more of the <see cref="WordParserOptions"/> specifying parsing and delimiting options. /// </param> /// <param name="prefix"> /// A <see cref="Char"/> representing an optional prefix of <paramref name="text"/>, that if present, /// will be returned as a separate token. /// </param> /// <returns> /// A <see cref="Collection{T}"/> of strings containing the words contained in <paramref name="text"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="text"/> is <see langword="null"/>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="options"/> is not one or more of the <see cref="WordParserOptions"/> values. /// </exception> internal static Collection<string> Parse(string text, WordParserOptions options, char prefix) { WordParser parser = new WordParser(text, options, prefix); Collection<string> words = new Collection<string>(); string word; while ((word = parser.NextWord()) != null) { words.Add(word); } return words; }
private IEnumerable<IParameterSymbol> GetStringParametersThatContainsUriWords(IEnumerable<IParameterSymbol> stringParameters, CancellationToken cancellationToken) { foreach (IParameterSymbol parameter in stringParameters) { if (parameter.Name == null || !CheckStringParameterContainsUriWords(parameter, cancellationToken)) { // quick check failed continue; } string word; var parser = new WordParser(parameter.Name, WordParserOptions.SplitCompoundWords); while ((word = parser.NextWord()) != null) { if (s_uriWords.Contains(word)) { yield return parameter; break; } } } }