Exemplo n.º 1
0
        private void CeateForNode(Node.Folder node, string carryoverPrefix)
        {
            string connectionUp   = node.isLastChild ? "└─" : "├─";
            string connectionDown = node.hasChildFolder ? "┬ " : "─ ";

            result += carryoverPrefix + connectionUp + connectionDown + node.name + "\n";

            var fileCarryover = node.hasChildFolder ? "│ " : "  ";
            var newCarryover  = node.isLastChild ? "  " : "│ ";

            foreach (var file in node.fileChildren)
            {
                result += carryoverPrefix + newCarryover + fileCarryover + _fileIndent + _color.Over(file) + "\n";
            }

            foreach (var folder in node.folderChildren)
            {
                CeateForNode(folder, carryoverPrefix + newCarryover);
            }
        }
Exemplo n.º 2
0
        private void CreateInvisibleTree(Node.Folder node)
        {
            string folderPreix = (node.depth > 0)? "> " : "";
            string spacing     = new String(' ', Math.Max(0, node.depth * 2 - 1));

            if (node.depth > 0)
            {
                result += spacing + folderPreix + node.name + "\n";
            }

            foreach (var file in node.fileChildren)
            {
                var contextSpacing = node.depth == 0 ? " " : "  ";
                result += spacing + contextSpacing + _color.Over(file) + "\n";
            }
            foreach (var folder in node.folderChildren)
            {
                CreateInvisibleTree(folder);
            }
        }
Exemplo n.º 3
0
        // Splitting the cases on root, 1st child, others
        // is in this case better than perfect recursion:
        // cleaner logic, less checks.
        private void CreateNodeRoot(Node.Folder node)
        {
            foreach (var file in node.fileChildren)
            {
                result += _fileIndent + _color.Over(file) + "\n";
            }
            foreach (var folder in node.folderChildren)
            {
                var connectionDownOptional = folder.hasChildFolder ? "┬ " : "+ ";
                result += " " + connectionDownOptional + folder.name + "\n";

                var fileCarryover = folder.hasChildFolder ? "│ " : "  ";
                foreach (var file in folder.fileChildren)
                {
                    result += " " + fileCarryover + _fileIndent + _color.Over(file) + "\n";
                }

                foreach (var inner in folder.folderChildren)
                {
                    CeateForNode(inner, " ");
                }
            }
        }