# NAME Tree::Navigator - Generic navigation in various kinds of trees # SYNOPSIS Create a file `treenav.psgi` like this : # create a navigator, then mount various kinds of nodes as shown below use Tree::Navigator; my $tn = Tree::Navigator->new; # example 1 : browse through the filesystem $tn->mount(Files => Filesys => {attributes => {label => 'My Web Files'}, mount_point => {root => '/path/to/files'}}); # example 2 : inspect tables and columns in a database my $dbh = DBI->connect(...); $tn->mount(MyDB => 'DBI' => {mount_point => {dbh => $dbh}}); # example 3 : browse through the Win32 registry $tn->mount(HKCU => 'Win32::Registry' => {mount_point => {key => 'HKCU'}}); # example 4 : browse through Perl internals $tn->mount(Ref => 'Perl::Ref' => {mount_point => {ref => $some_ref}}); $tn->mount(Stack => 'Perl::StackTrace' => {mount_point => {}}); $tn->mount(Symdump => 'Perl::Symdump' => {}); # create the application my $app = $tn->to_app; Then run the app plackup treenav.psgi or mount the app in Apache SetHandler perl-script PerlResponseHandler Plack::Handler::Apache2 PerlSetVar psgi_app /path/to/treenav.psgi and use your favorite web browser to navigate through your data. # DESCRIPTION ## Introduction This is a set of tools for navigating within various kinds of _trees_; a tree is just a set of _nodes_, where each node may have a _content_, may have _attributes_, and may have _children_ nodes. Examples of such structures are filesystems, FTP sites, email boxes, Web sites, HTML pages, XML documents, etc. The distribution provides - an [abstract class for nodes](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode), with a few concrete classes for some of the examples just mentioned above - a server application for exposing the tree structure to web clients - a [debugging application](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3AApp%3A%3APerlDebug) that uses the Tree Navigator to navigate into the memory of a running Perl program. ## Status This application was built as a proof-of-concept in 2012 and hasn't been much reworked since. It is functional and actually is being used in production for some minor tasks, but is not polished into a fully documented product. A minor modernization was performed in 2024 to remove deprecated features no longer supported by recent versions of perl. ## Implemented nodes The following kinds of nodes come with the distribution and therefore can readily be mounted into a tree navigator : - [Tree::Navigator::Node::DBI](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode%3A%3ADBI) Displays the metadata (tables and columns) of a database. Navigation within the data rows is not implemented yet. - [Tree::Navigator::Node::DBIDM](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode%3A%3ADBIDM) Meant to navigate in a database through a [DBIx::DataModel](https://metacpan.org/pod/DBIx%3A%3ADataModel) schema. Not fully implemented. - [Tree::Navigator::Node::Filesys](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode%3A%3AFilesys) Navigation in a filesystem, displaying file attributes and providing a download facility. - [Tree::Navigator::Node::Perl::Ref](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode%3A%3APerl%3A%3ARef) Navigation in a perl datastructure. - [Tree::Navigator::Node::Perl::StackTrace](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode%3A%3APerl%3A%3AStackTrace) Navigation in a perl stacktrace. - [Tree::Navigator::Node::Perl::Symdump](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode%3A%3APerl%3A%3ASymdump) Navigation in a perl symbol table. - [Tree::Navigator::Node::Win32::Registry](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode%3A%3AWin32%3A%3ARegistry) Navigation in Windows registry. Other kinds of nodes can be integrated into the framework by subclassing [Tree::Navigator::Node](https://metacpan.org/pod/Tree%3A%3ANavigator%3A%3ANode) with methods for accessing the node's content, attributes and children. # METHODS ## call Main request dispatcher (see ["Component" in Plack](https://metacpan.org/pod/Plack#Component)). # DEPENDENCIES This application uses [Plack](https://metacpan.org/pod/Plack) and [Moose](https://metacpan.org/pod/Moose). # AUTHOR Laurent Dami, `` # SEE ALSO [Tree::Simple](https://metacpan.org/pod/Tree%3A%3ASimple) # LICENSE AND COPYRIGHT Copyright 2012, 2024 Laurent Dami. This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. See http://dev.perl.org/licenses/ for more information.