コード例 #1
0
ファイル: TagTree.cs プロジェクト: ronbrogan/OpenH2
        private void printImpl(Action <string> printLine, TagListEntry current, int level = 0)
        {
            var indent = string.Join(string.Empty, Enumerable.Range(0, level).Select(_ => "\t"));

            printLine(indent + current.Tag);

            foreach (var child in current.Children)
            {
                printImpl(printLine, child, level + 1);
            }
        }
コード例 #2
0
ファイル: TagTree.cs プロジェクト: ronbrogan/OpenH2
        public TagListEntry Add(string tag, string parent = null, string grandparent = null)
        {
            var gp = lookupChild(grandparent);
            var p  = lookupChild(parent);
            var c  = lookupChild(tag);

            if (gp == null && grandparent.IsSignificant())
            {
                gp = new TagListEntry(grandparent);
                children.Add(grandparent, gp);
            }

            if (p == null && parent.IsSignificant())
            {
                p = new TagListEntry(parent);
                children.Add(parent, p);
            }

            if (c == null && tag.IsSignificant())
            {
                c = new TagListEntry(tag);
                children.Add(tag, c);
            }

            gp?.Add(p);

            if (p != null)
            {
                p.Add(c);
            }
            else
            {
                root.Add(c);
            }

            if (gp != null && gp.Parent == null)
            {
                root.Add(gp);
            }
            else if (p != null && p.Parent == null)
            {
                root.Add(p);
            }

            return(c);
        }