Exemplo n.º 1
0
        public TreeNode Parse(string s)
        {
            var root = new TreeNode();
            var stack = new Stack<TreeNode>();
            stack.Push(root);
            foreach (var c in s)
            {
                var current = stack.Peek();
                if (current.IsEnd(c))
                {
                    stack.Pop();
                }
                else if (IsStart(c))
                {
                    if (current.GetType() == typeof(TextTreeNode))
                    {
                        stack.Pop();
                        current = stack.Peek();
                    }
                    //create node of that type
                    var boldTreeNode = new BoldTreeNode();
                    current.Add(boldTreeNode);
                    stack.Push(boldTreeNode);
                }
                else
                {
                    if (current.GetType() != typeof(TextTreeNode))
                    {
                        var textNode = new TextTreeNode();
                        textNode.Add(c);
                        current.Add(textNode);
                        stack.Push(textNode);
                    }
                    else
                    {
                        var textNode = (TextTreeNode) current;
                        textNode.Add(c);
                    }
                }
            }

            return root;
        }
Exemplo n.º 2
0
 public void Translate(TextTreeNode node, StringBuilder textBuilder)
 {
     textBuilder.Append(node.Text);
 }