public void Initalize (string text)
{
LineEndingMismatch = false;
Clear ();
if (string.IsNullOrEmpty (text))
return;
var nodes = new List<TreeNode> ();
var delimiterType = UnicodeNewline.Unknown;
int offset = 0;
while (true) {
var delimiter = NextDelimiter (text, offset);
if (delimiter.IsInvalid)
break;
int delimiterEndOffset = delimiter.Offset + delimiter.Length;
var newLine = new TreeNode (delimiterEndOffset - offset, delimiter.Length);
nodes.Add (newLine);
if (offset > 0) {
LineEndingMismatch |= delimiterType != delimiter.UnicodeNewline;
} else {
delimiterType = delimiter.UnicodeNewline;
}
offset = delimiterEndOffset;
}
var lastLine = new TreeNode (text.Length - offset, 0);
nodes.Add (lastLine);
int height = GetTreeHeight (nodes.Count);
var newRoot = BuildTree (nodes, 0, nodes.Count, height);
if (newRoot != null) {
tree.Root = newRoot;
tree.Root.Color = RedBlackColor.Black;
tree.Count = nodes.Count;
}
}