/// <summary> /// Prepends a fragment to the list of fragments. /// </summary> /// <param name="newFragment">The fragment to append. May not be null.</param> public void Prepend(MixedCodeDocumentFragment newFragment) { if (newFragment == null) { throw new ArgumentNullException("newFragment"); } _items.Insert(0, newFragment); }
/// <summary> /// Appends a fragment to the list of fragments. /// </summary> /// <param name="newFragment">The fragment to append. May not be null.</param> public void Append(MixedCodeDocumentFragment newFragment) { if (newFragment == null) { throw new ArgumentNullException("newFragment"); } _items.Add(newFragment); }
/// <summary> /// Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. /// </summary> /// <param name="fragment">The fragment to remove. May not be null.</param> public void Remove(MixedCodeDocumentFragment fragment) { if (fragment == null) { throw new ArgumentNullException("fragment"); } int index = GetFragmentIndex(fragment); if (index == -1) { throw new IndexOutOfRangeException(); } RemoveAt(index); }
internal int GetFragmentIndex(MixedCodeDocumentFragment fragment) { if (fragment == null) { throw new ArgumentNullException("fragment"); } for (int i = 0; i < _items.Count; i++) { if ((_items[i]) == fragment) { return(i); } } return(-1); }
private void Parse() { _state = ParseState.Text; _index = 0; _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Text); while (_index < _text.Length) { _c = _text[_index]; IncrementPosition(); switch (_state) { case ParseState.Text: if (_index + TokenCodeStart.Length < _text.Length) { if (_text.Substring(_index - 1, TokenCodeStart.Length) == TokenCodeStart) { _state = ParseState.Code; _currentfragment.Length = _index - 1 - _currentfragment.Index; _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Code); SetPosition(); continue; } } break; case ParseState.Code: if (_index + TokenCodeEnd.Length < _text.Length) { if (_text.Substring(_index - 1, TokenCodeEnd.Length) == TokenCodeEnd) { _state = ParseState.Text; _currentfragment.Length = _index + TokenCodeEnd.Length - _currentfragment.Index; _index += TokenCodeEnd.Length; _lineposition += TokenCodeEnd.Length; _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Text); SetPosition(); continue; } } break; } } _currentfragment.Length = _index - _currentfragment.Index; }