Example #1
0
        public void Delete(SimpleChar sc)
        {
            var oldText = Lines.SelectMany(x => x.Line);

            List<SimpleChar> newText = oldText.Where(x => x != sc && !x.IsLineEnd).ToList();

            var lines = new List<SimpleLine>();
            bool isLoose = true;
            do {
                var line = new SimpleLine(this);
                line.Fill(newText, isLoose = !isLoose);
                lines.Add(line);
            } while (newText.Count > 0);

            this.Lines = lines;
        }
Example #2
0
        public void Insert(SimpleChar position, List<SimpleChar> insertChars)
        {
            var oldText = Lines.SelectMany(x => x.Line).ToList();

            int insertPos = oldText.IndexOf(position);
            var leftText = oldText.Take(insertPos);
            var rightText = oldText.Skip(insertPos);

            List<SimpleChar> newText= leftText.Concat(insertChars).Concat(rightText).Where(x => !x.IsLineEnd).ToList();
            var lines = new List<SimpleLine>();
            bool isLoose = true;
            do {
                var line = new SimpleLine(this);
                line.Fill(newText, isLoose=!isLoose);
                lines.Add(line);
            } while (newText.Count > 0);

            this.Lines = lines;
        }
Example #3
0
        public SimpleSection Split(SimpleChar position)
        {
            var oldText = Lines.SelectMany(x => x.Line).ToList();

            int splitPos = oldText.IndexOf(position);
            var leftText = oldText.Take(splitPos).Where(x => !x.IsLineEnd).ToList();
            var rightText = oldText.Skip(splitPos).Where(x => !x.IsLineEnd).ToList();

            var lines = new List<SimpleLine>();
            bool isLoose = true;
            do {
                var line = new SimpleLine(this);
                line.Fill(leftText, isLoose = !isLoose);
                lines.Add(line);
            } while (leftText.Count > 0);

            this.Lines = lines;

            var splitOne = new SimpleSection();
            splitOne.Insert(splitOne.End, rightText);
            return splitOne;
        }
Example #4
0
        public void Merge(SimpleSection next)
        {
            var oldText = Lines.SelectMany(x => x.Line);
            var appendText = next.Lines.SelectMany(x => x.Line);

            List<SimpleChar> newText = oldText.Concat(appendText).Where(x => !x.IsLineEnd).ToList();

            var lines = new List<SimpleLine>();
            bool isLoose = true;
            do {
                var line = new SimpleLine(this);
                line.Fill(newText, isLoose = !isLoose);
                lines.Add(line);
            } while (newText.Count > 0);

            this.Lines = lines;
        }