Tree::...ryTree(3pm)
π Tree::Simple::Visitor::CreateDirectoryTree β the manual, but make it cute β¨
okay bestie, welcome to the Perl docs, but the fun version. This page lives in the User Contributed Perl Documentation section of the manual, and it's all about Tree::Simple::Visitor::CreateDirectoryTree, a little legend that takes your Tree::Simple object and turns it into actual directories and files on disk. No cap. Let's get into it. π
β¨ NAME β¨
Tree::Simple::Visitor::CreateDirectoryTree β a Visitor for create a set of directories and files from a Tree::Simple object π¦
(that's the official description, and yes it says "for create", we love her, we're keeping it)
πΈ SYNOPSIS πΈ
here's the whole vibe, copy it exactly, i'm not playing:
use Tree::Simple::Visitor::CreateDirectoryTree;
# create a Tree::Simple object which
# represents a directory hierarchy
my $tree = Tree::Simple->new("www/")
->addChildren(
Tree::Simple->new("conf/")
->addChildren(
Tree::Simple->new("startup.pl"),
Tree::Simple->new("httpd.conf")
),
Tree::Simple->new("cgi-bin/"),
Tree::Simple->new("ht_docs/"),
Tree::Simple->new("logs/")
->addChildren(
Tree::Simple->new("error.log"),
Tree::Simple->new("access.log")
),
);
# create an instance of our visitor
my $visitor = Tree::Simple::Visitor::CreateDirectoryTree->new();
# pass the visitor to a Tree::Simple object
$tree->accept($visitor);
# the www/ directory now mirrors the structure of the tree
so you build a whole tree that represents a directory hierarchy, hand it to the visitor, and boom π₯ β www/ on your actual filesystem is now a mirror of the tree. main character energy fr fr.
π DESCRIPTION π
This visitor can be used to create a set of directories and files from a Tree::Simple object hierarchy. that's it, that's the whole job. she takes a tree, she makes real files and folders. iconic.
π METHODS π
new π«Ά
There are no arguments to the constructor, so the object will be in its default state. you can customize her behavior later with the setNodeFilter, setFileHandler and setDirectoryHandler methods. lowkey the glow-up options are all yours to pick.
setNodeFilter ($filter_function) π
This method accepts a CODE reference as its $filter_function argument and throws an exception if it is not a code reference.
This code reference is used to filter the tree nodes as they are used to create the directory tree, and it can basically be used as a node pre-processor. an example usage of this might be to enforce the 8.3 naming rules of DOS, or the 32 character limit of older macintoshes. yes bestie, we're time-travelling to DOS. π°οΈ
setFileHandler ($file_handler) π
This method accepts a CODE reference as its $file_handler argument and throws an exception if it is not a CODE reference.
This method can be used to create custom file creation behavior. The default behavior is to just create the file and nothing else, but by using this method it's possible to implement some other custom behavior, such as creating a file based on a template. β¨
The function is passed the full path of the file to be created (as built by File::Spec).
setDirectoryHandler ($dir_handler) π§
This method accepts a CODE reference as its $dir_handler argument and throws an exception if it is not a CODE reference.
This method can be used to create custom directory creation behavior. The default behavior is to just create the directory and nothing else, but by using this method it's possible to implement some other custom behavior, such as creating a directory on a remote server. π
The function is passed the full path of the directory to be created (as built by File::Spec).
visit ($tree) π
This is the method that is used by the Tree::Simple accept method. It can also be used on its own, and it requires the $tree argument to be a Tree::Simple object (or derived from a Tree::Simple object), and will throw an exception otherwise. so don't try it, she will catch you. π
The tree is processed as follows:
- Any node which is not a leaf is considered a directory. Obviously since files themselves are leaf nodes, it makes sense that non-leaves will be directories. logic! we love her. π§
- Any node (including leaf nodes) which ends in either the character
/or\is considered a directory. I think it is a pretty standard convention to have directory names ending in a separator. The separator itself is stripped off before the directory name is passed toFile::Specwhere the platform specific directory path is created. This means that it does not matter which one you use, it will be completely cross platform (at least as cross-platform asFile::Specis). π¦ - All other nodes are considered to be files.
π Repository π
<https://github.com/ronsavage/Tree-Simple-VisitorFactory>
go star it, bestie, it's free π
π SUPPORT π
Bugs should be reported via the CPAN bug tracker at:
<https://github.com/ronsavage/Tree-Simple-VisitorFactory/issues>
if something's broken, tell the internet. not me. i'm just the messenger. π
π CODE COVERAGE π
See the CODE COVERAGE section in Tree::Simple::VisitorFactory for more information. yes, it's a whole thing, go read it. π
π SEE ALSO π
These Visitor classes are all subclasses of Tree::Simple::Visitor, which can be found in the Tree::Simple module β you should refer to that module for more information. the origin story, if you will. periodt.
π AUTHOR π
stevan little, <stevan@iinteractive.com> β¨
π COPYRIGHT AND LICENSE π
Copyright 2004, 2005 by Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
okay that's the whole page, you're officially educated π
and a little sign-off for the vibes: this doc is from perl v5.36.0, dated 2022-11-19, living under the Tree::...ryTree(3pm) manual page name. slay, go build some directories. ππβ¨
π¦ where this page comes from
- debian bookworm: libtree-simple-visitorfactory-perl 0.16-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- debian trixie: libtree-simple-visitorfactory-perl 0.16-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu noble: libtree-simple-visitorfactory-perl 0.16-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libtree-simple-visitorfactory-perl 0.16-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libtree-simple-visitorfactory-perl 0.16-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms