Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Tree::Simple::Visitor:UseraContributed:PerllD::Visitor::CreateDirectoryTree(3)

NAME
       Tree::Simple::Visitor::CreateDirectoryTree - A Visitor for create a set
       of directories and files	from a Tree::Simple object

SYNOPSIS
	 use Tree::Simple::Visitor::CreateDirectoryTree;

	 # create a Tree::Simple object	which
	 # represents a	directory heirarchy
	 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

DESCRIPTION
       This visitor can	be used	to create a set	of directories and files from
       a Tree::Simple object hierarchy.

METHODS
       new There are no	arguments to the constructor the object	will be	in its
	   default state. You can use the "setNodeFilter", "setFileHandler"
	   and "setDirectoryHandler" methods to	customize its behavior.

       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, it can be	basically 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.

       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 is 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 is 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 Tree::Simple's "accept" method.
	   It can also be used on its own, it requires the $tree argument to
	   be a	Tree::Simple object (or	derived	from a Tree::Simple object),
	   and will throw and exception	otherwise.

	   The tree is processed as follows:

	   Any node which is not a leaf	is considered a	directory.
	       Obviously since files themselves	are leaf nodes,	this makes
	       sense that non-leaves will be directories.

	   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 to File::Spec where 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 as File::Spec is).

	   All other nodes are considered to be	files.

BUGS
       None that I am aware of.	Of course, if you find a bug, let me know, and
       I will be sure to fix it.

CODE COVERAGE
       See the CODE COVERAGE section in	Tree::Simple::VisitorFactory for more
       information.

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.

AUTHOR
       stevan little, <stevan@iinteractive.com>

COPYRIGHT AND LICENSE
       Copyright 2004, 2005 by Infinity	Interactive, Inc.

       <http://www.iinteractive.com>

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.24.1			 Tree::Simple::Visitor::CreateDirectoryTree(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | BUGS | CODE COVERAGE | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Tree::Simple::Visitor::CreateDirectoryTree&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help