Mono.Terminal.LineEditor.WordBackward C# (CSharp) Method

WordBackward() private method

private WordBackward ( int p ) : int
p int
return int
        int WordBackward(int p)
        {
            if (p == 0)
                return -1;

            int i = p - 1;
            if (i == 0)
                return 0;

            if (Char.IsPunctuation(text[i]) || Char.IsSymbol(text[i]) || Char.IsWhiteSpace(text[i]))
            {
                for (; i >= 0; i--)
                {
                    if (Char.IsLetterOrDigit(text[i]))
                        break;
                }
                for (; i >= 0; i--)
                {
                    if (!Char.IsLetterOrDigit(text[i]))
                        break;
                }
            }
            else
            {
                for (; i >= 0; i--)
                {
                    if (!Char.IsLetterOrDigit(text[i]))
                        break;
                }
            }
            i++;

            if (i != p)
                return i;

            return -1;
        }