コード例 #1
0
        public void SwapWithNext_LastNR()
        {
            Init();
            lines.SetText("line0\nline1\nline2\nline3");

            LineIterator iterator = lines.GetLineRange(0, lines.LinesCount);

            iterator.MoveNext();
            iterator.MoveNext();
            iterator.MoveNext();
            Assert.AreEqual("line2\n", iterator.current.Text);
            iterator.SwapCurrent(false);
            AssertText("line0\nline1\nline3\nline2");
        }
コード例 #2
0
        public void LineIterator_GetNextRange()
        {
            Init(4);
            lines.SetText("0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14");
            CollectionAssert.AreEqual(new Line[] { lines[0], lines[1] }, GetLines(lines.GetLineRange(0, 2)));
            CollectionAssert.AreEqual(new Line[] { lines[1], lines[2] }, GetLines(lines.GetLineRange(1, 2)));
            CollectionAssert.AreEqual(new Line[] { lines[11], lines[12], lines[13] }, GetLines(lines.GetLineRange(11, 3)));
            CollectionAssert.AreEqual(new Line[] { lines[12], lines[13], lines[14] }, GetLines(lines.GetLineRange(12, 3)));
            LineIterator iterator = lines.GetLineRange(2, 10);

            iterator.MoveNext();
            Assert.AreEqual(lines[2], iterator.current);
            iterator.MoveNext();
            Assert.AreEqual(lines[3], iterator.current);
            CollectionAssert.AreEqual(
                new Line[] { lines[4], lines[5], lines[6], lines[7], lines[8] },
                GetLines(iterator.GetNextRange(5)));
        }
コード例 #3
0
        private List <Line> GetLines(LineIterator iterator)
        {
            List <Line> lines = new List <Line>();

            while (iterator.MoveNext())
            {
                lines.Add(iterator.current);
            }
            return(lines);
        }
コード例 #4
0
        public void SwapLinesWithPrev_SingleBlock()
        {
            Init();
            lines.SetText("line0\nline1\nline2\nline3");

            LineIterator iterator = lines.GetLineRange(0, lines.LinesCount);

            iterator.MoveNext();
            iterator.MoveNext();
            Assert.AreEqual("line1\n", iterator.current.Text);

            iterator.SwapCurrent(true);
            AssertText("line1\nline0\nline2\nline3");

            iterator.MoveNext();
            Assert.AreEqual("line2\n", iterator.current.Text);
            iterator.SwapCurrent(true);
            AssertText("line1\nline2\nline0\nline3");
        }
コード例 #5
0
        /// <summary>
        /// Parses the specified file, adding parsed records to the specified
        /// repository.
        /// </summary>
        /// <param name="info">Contains the information about the file.</param>
        /// <param name="repository">The repository to add records to.</param>
        public void Parse(MainfileInfo info, PafRepository repository)
        {
            Check.IsNotNull(info, "info");
            Check.IsNotNull(repository, "repository");

            using (Stream stream = FileSystem.Instance.OpenRead(info.Path))
            {
                var iterator = new LineIterator(stream, info.RecordLength, info.RecordCount);
                while (iterator.MoveNext())
                {
                    this.ParseLine(repository, iterator);
                }
            }
        }
コード例 #6
0
    public void GoToTag(Node node)
    {
        lastGoToNode = node;
        Buffer buffer = mainForm.LoadFile(node.path);

        if (buffer != null)
        {
            int          index    = node.index;
            LineIterator iterator = buffer.Controller.Lines.GetLineRange(0, buffer.Controller.Lines.LinesCount);
            while (iterator.MoveNext())
            {
                string text = iterator.current.Text;
                if (text.StartsWith(node.address) &&
                    (node.address.Length == text.Length ||
                     node.address.Length == text.Length - 2 && text.EndsWith("\r\n") ||
                     node.address.Length == text.Length - 1 && (text.EndsWith("\r") || text.EndsWith("\n"))))
                {
                    if (index <= 0)
                    {
                        buffer.Controller.PutCursor(new Place(0, iterator.Index), false);
                        buffer.Controller.ViMoveHome(false, true);
                        if (buffer.FullPath != null)
                        {
                            buffer.Controller.ViAddHistoryPosition(true);
                        }
                        buffer.Controller.NeedScrollToCaret();
                        if (buffer.Frame != null)
                        {
                            buffer.Frame.Focus();
                        }
                        break;
                    }
                    --index;
                }
            }
        }
    }