Provided by: libbadger-perl_0.16-2_all bug

NAME

       Badger::Workspace - an object representing a project workspace

DESCRIPTION

       This module implements an object for representing a workspace, for example the directory
       containing the source, configuration, resources and other files for a web site or some
       other project.  It is a subclass of Badger::Workplace which implements the base
       functionality.

       The root directory for a workspace is expected to contain a configuration directory,
       called config by default, containing configuration files for the workspace.  This is
       managed by delegation to a Badger::Config::Filesystem object.

CLASS METHODS

   new(\%config)
       This is the constructor method to create a new "Badger::Workspace" object.

           use Badger::Workspace;

           my $space = Badger::Workspace->new(
               directory => '/path/to/workspace',
           );

       CONFIGURATION OPTIONS

       root / dir / directory

       This mandatory parameter must be provided to indicate the filesystem path to the project
       directory.  It can be also specified using any of the names "root", "dir" or "directory",
       as per Badger::Workplace

       config_module

       The name of the delegate module for managing the files in the configuration directory.
       This defaults to Badger::Config::Filesystem.

       config_dir / config_directory

       This optional parameter can be used to specify the name of the configuration direction
       under the root project directory.  The default configuration directory name is "config".

       config_file

       This optional parameter can be used to specify the name of the main configuration file
       (without file extension) that should reside in the config_dir directory under the "root"
       project directory.  The default configuration file name is "workspace".

PUBLIC METHODS

   config($item)
       When called without any arguments this returns a Badger::Config::Filesystem object which
       manages the configuration directory for the project.

           my $cfg = $workspace->config;

       When called with a named item it returns the configuration data associated with that item.
       This will typically be defined in a master configuration file, or in a file of the same
       name as the item, with an appropriate file extension added.

           my $name = $workspace->config('name');

   inherit_config($item)
       Attempts to fetch an inherited configuration from a parent namespace.  The workspace must
       have a parent defined and must have the "inherit" option set to any true value.

   parent_config($item)
       Attempts to fetch the configuration for a named item from a parent workspace.  Obviously
       this requires the workspace to be attached to a parent.  Note that this method is not
       bound by the "inherit" flag and will delegate to any parent regardless.

   dir($name)
   dirs(\%dirmap)
   resolve_dir($name)
   file($path)
   attach($parent)
       Attaches the workspace to a parent workspace.

   detach()
       Detaches the workspace from any parent workspace.

   parent($n)
       Returns the parent workspace if there is one.  If a numerical argument is passed then it
       indicates a number of parents to skip.  e.g. if $n is 1 then it bypasses the parent and
       returns the grandparent instead.  Thus, passing an argument of 0 is the same as passing no
       argument at all.

   ancestors($list)
       Returns a list of the parent, grandparent, great-grandparent and so on, all the way up as
       far as it can go.  A target list reference can be passed as an argument.

   heritage()
       This returns the same items in the "ancestors()" list but in reverse order, from most
       senior parent to most junior.

PRIVATE METHODS

   init(\%config)
       This method redefines the default initialisation method.  It calls the init_workplace()
       method inherited from Badger::Workplace and then calls the init_workspace() method to
       perform any workspace-specific initialisation.

   init_workspace(\%config)
       This method performs workspace-specific initialisation.  In this module it simply calls
       init_config().  Subclasses may redefine it to do something different.

   init_config(\%config)
       This initialised the Badger::Config::Filesystem object which manages the config
       configuration directory.

   init_dirs(\%config)
   init_parent(\%config)
   write_config_file($uri, $data)
       Delegates to the method of the same name provided by the filesystem config object - see
       Badger::Config::Filesystem.

TODO

       Inheritance of configuration data between parent and child workspaces.

AUTHOR

       Andy Wardley <abw@wardley.org>.

COPYRIGHT

       Copyright (C) 2008-2014 Andy Wardley.  All Rights Reserved.