AvalonStudio.TextEditor.Document.TextUtilities.StopBetweenCharacters C# (CSharp) Method

StopBetweenCharacters() private static method

private static StopBetweenCharacters ( CaretPositioningMode mode, CharacterClass charBefore, CharacterClass charAfter ) : bool
mode CaretPositioningMode
charBefore CharacterClass
charAfter CharacterClass
return bool
		private static bool StopBetweenCharacters(CaretPositioningMode mode, CharacterClass charBefore,
			CharacterClass charAfter)
		{
			if (mode == CaretPositioningMode.EveryCodepoint)
				return true;
			// Don't stop in the middle of a grapheme
			if (charAfter == CharacterClass.CombiningMark)
				return false;
			// Stop after every grapheme in normal mode
			if (mode == CaretPositioningMode.Normal)
				return true;
			if (charBefore == charAfter)
			{
				if (charBefore == CharacterClass.Other &&
				    (mode == CaretPositioningMode.WordBorderOrSymbol || mode == CaretPositioningMode.WordStartOrSymbol))
				{
					// With the "OrSymbol" modes, there's a word border and start between any two unknown characters
					return true;
				}
			}
			else
			{
				// this looks like a possible border

				// if we're looking for word starts, check that this is a word start (and not a word end)
				// if we're just checking for word borders, accept unconditionally
				if (!((mode == CaretPositioningMode.WordStart || mode == CaretPositioningMode.WordStartOrSymbol)
				      && (charAfter == CharacterClass.Whitespace || charAfter == CharacterClass.LineTerminator)))
				{
					return true;
				}
			}
			return false;
		}