Beispiel #1
0
        public static SelectionResult Create(TextLineCollection lines, TextSpan span)
        {
            using (TextLineCollection.Enumerator en = lines.GetEnumerator())
            {
                if (en.MoveNext())
                {
                    int i = 0;

                    while (span.Start >= en.Current.EndIncludingLineBreak &&
                           en.MoveNext())
                    {
                        i++;
                    }

                    if (span.Start == en.Current.Start)
                    {
                        int j = i;

                        while (span.End > en.Current.EndIncludingLineBreak &&
                               en.MoveNext())
                        {
                            j++;
                        }

                        if (span.End == en.Current.End ||
                            span.End == en.Current.EndIncludingLineBreak)
                        {
                            return(new SelectionResult(i, j));
                        }
                    }
                }
            }

            return(Fail);
        }
Beispiel #2
0
        private static (int startIndex, int endIndex) GetIndexes(TextLineCollection lines, TextSpan span)
        {
            using (TextLineCollection.Enumerator en = lines.GetEnumerator())
            {
                if (en.MoveNext())
                {
                    int i = 0;

                    while (span.Start >= en.Current.EndIncludingLineBreak &&
                           en.MoveNext())
                    {
                        i++;
                    }

                    if (span.Start == en.Current.Start)
                    {
                        int j = i;

                        while (span.End > en.Current.EndIncludingLineBreak &&
                               en.MoveNext())
                        {
                            j++;
                        }

                        if (span.End == en.Current.End ||
                            span.End == en.Current.EndIncludingLineBreak)
                        {
                            return(i, j);
                        }
                    }
                }
            }

            return(-1, -1);
        }
Beispiel #3
0
        public TextLineCollectionSelection(TextLineCollection lines, TextSpan span)
        {
            if (lines == null)
            {
                throw new ArgumentNullException(nameof(lines));
            }

            UnderlyingLines = lines;
            Span            = span;

            using (TextLineCollection.Enumerator en = UnderlyingLines.GetEnumerator())
            {
                if (en.MoveNext())
                {
                    int i = 0;

                    while (Span.Start >= en.Current.EndIncludingLineBreak &&
                           en.MoveNext())
                    {
                        i++;
                    }

                    if (Span.Start == en.Current.Start)
                    {
                        int j = i;

                        while (Span.End > en.Current.EndIncludingLineBreak &&
                               en.MoveNext())
                        {
                            j++;
                        }

                        if (Span.End == en.Current.End ||
                            Span.End == en.Current.EndIncludingLineBreak)
                        {
                            StartIndex = i;
                            EndIndex   = j;
                        }
                    }
                }
            }
        }
Beispiel #4
0
        private bool FindSelectedLines()
        {
            using (TextLineCollection.Enumerator en = UnderlyingLines.GetEnumerator())
            {
                if (en.MoveNext())
                {
                    int i = 0;

                    while (Span.Start >= en.Current.EndIncludingLineBreak &&
                           en.MoveNext())
                    {
                        i++;
                    }

                    if (Span.Start == en.Current.Start)
                    {
                        int j = i;

                        while (Span.End > en.Current.EndIncludingLineBreak &&
                               en.MoveNext())
                        {
                            j++;
                        }

                        if (Span.End == en.Current.End ||
                            Span.End == en.Current.EndIncludingLineBreak)
                        {
                            _firstIndex = i;
                            _lastIndex  = j;
                        }
                    }
                }
            }

            return(false);
        }