Beispiel #1
0
        private static int GetCharType(char c, WordSplitBehavior splitBehavior)
        {
            if (char.IsWhiteSpace(c))
            {
                return(1);
            }

            if (splitBehavior == WordSplitBehavior.WhiteSpace)
            {
                return(0);
            }

            if (char.IsPunctuation(c) || char.IsSymbol(c))
            {
                return(3);
            }

            if (splitBehavior == WordSplitBehavior.WhiteSpaceAndPunctuation)
            {
                return(0);
            }

            if (char.IsDigit(c) || char.IsNumber(c))
            {
                return(2);
            }

            if (char.IsLetter(c))
            {
                return(4);
            }

            return(0);
        }
        private static TokenType GetTokenType(char c, WordSplitBehavior splitBehavior)
        {
            if (char.IsWhiteSpace(c))
            {
                return(TokenType.WhiteSpace);
            }

            if (splitBehavior == WordSplitBehavior.WhiteSpace)
            {
                return(TokenType.Other);
            }

            if (char.IsPunctuation(c) || char.IsSymbol(c))
            {
                return(TokenType.Symbol);
            }

            if (splitBehavior == WordSplitBehavior.WhiteSpaceAndPunctuation)
            {
                return(TokenType.Other);
            }

            if (char.IsDigit(c) || char.IsNumber(c))
            {
                return(TokenType.Digit);
            }

            if (char.IsLetter(c))
            {
                return(TokenType.Letter);
            }

            return(TokenType.Other);
        }
Beispiel #3
0
        public WordDecompositionList(string original, WordSplitBehavior splitBehavior)
            : base(original)
        {
            if (original.Length > 0)
            {
                int lastCharType = GetCharType(original[0], splitBehavior);

                for (int i = 1; i < original.Length; i++)
                {
                    int newCharType = GetCharType(original[i], splitBehavior);

                    if (newCharType != lastCharType)
                    {
                        Boundaries.Add(i);
                        lastCharType = newCharType;
                    }
                }
            }
        }
Beispiel #4
0
        public WordDecompositionList(SnapshotSpan original, WordSplitBehavior splitBehavior)
            : base(original)
        {
            if (original.Length > 0)
            {
                int start = original.Start;

                int lastCharType = GetCharType(original.Snapshot[start], splitBehavior);

                for (int i = 1; i < original.Length; i++)
                {
                    int newCharType = GetCharType(original.Snapshot[i + start], splitBehavior);

                    if (newCharType != lastCharType)
                    {
                        Boundaries.Add(i);
                        lastCharType = newCharType;
                    }
                }
            }
        }
        /// <summary>
        /// Provides a hash function for the type.
        /// </summary>
        public override int GetHashCode()
        {
            int callbackHashCode  = (DetermineLocalityCallback != null) ? DetermineLocalityCallback.GetHashCode() : 0;
            int predicateHashCode = (ContinueProcessingPredicate != null)? ContinueProcessingPredicate.GetHashCode() : 0;

            return(DifferenceType.GetHashCode() ^ Locality.GetHashCode() ^ IgnoreTrimWhiteSpace.GetHashCode() ^ WordSplitBehavior.GetHashCode() ^ callbackHashCode ^ predicateHashCode);
        }