TODO
----
Update Badger::Class to use new Badger::Debug hooks.

Badger::Class
-------------

* Have DEBUG generate constant DEBUG subroutine fixed to value of flag
  (or pre-defined $DEBUG variable if possible).  Unlike $DEBUG which is 
  evaluated at runtime and thus, is dynamic, the DEBUG constant subroutine
  would be statically resolved at compile time.  Slightly different usage,
  but worthwhile.  This should really be moved into Badger::Debug.  Also
  think about different debug flags, e.g. DEBUG_THIS, DEBUG_THAT
  UPDATE: Badger::Debug now does this - just need to hook class in

* make debug hook work better: allow import of other items, e.g.
  debug => ':dump'.  Also generate DEBUG constant using any existing
  value of $DEBUG.
  
* AUTOLOAD method to delegate to real class if possible?

* add 'hook' subroutine attribute

* add a way for B::C subclasses to register hooks that automatically
  get called on import, e.g. for B::Factory::Class to push base()

* Remove class($class, $target) second argument in export hooks
  because UBER should now handle that - needs testing

* Make CLASS static


Badger::Codec
--------------

* encoded()/decoded() methods (e.g. for utf8)

* update docs to clarify the fact that utf8, etc., are available as named
  codecs via Encode/Encoding modules.


Badger::Config
--------------

* Just a basic implementation at moment.  Merge in TT3 config, AppConfig
  and other stuff.

Badger::Debug
-------------

* See if we can make this a low-level mixin that we can import into 
  Badger::Utils et al.


Badger::Docs
------------

* Finish writing it so we can build the web site.


Badger::Exception
-----------------

* needs good cleanup


Badger::Factory
---------------

* Split post-find operations into separate methods (and lower case).  
   e.g. find_ref_array(), find_ref_hash()
   
* Hmmm... maybe don't lower case but do sanitise, e.g. 
  find_ref_ARRAY(), find_ref_Your_Module() vs
  find_ref_array(), find_ref_your_module()

* Subclass out into base class (returns loaded module name), object
  creator, object creator + cache (e.g. for hub), or whatever.


Badger::Filesystem
------------------

* directory files/directories/dirs as grep across children

* need to handle encoding better in read_file() and write_file() methods.

* read-only filesystem option

* write_file() should have an option for writing to a temporary file and
  renaming into place to avoid race conditions.


Badger::Storage
---------------

* This is available in subversion but not yet included in the released
  distribution.

* unify parameter parsing and identity definition between filesystem and
  database storage modules.

* get/put which take data / return id

* fetch/store which returns 

* create/destroy   connect/disconnect  open/close


Badger::Test
------------

* Could do with some proper testing.  Although all the other test scripts
  do tend to thrash it quite well...


Badger::Utils
-------------

* Consider subclassing.


Badger::Factory
---------------

* have it bind fetch methods to item/items if undefined, e.g
  node => item, nodes => items.

* support multi-element names, e.g. node.foo.bar


BadgerX
-------

* add path to any bases missing it

* document



Longer Terms Goals / Larger Projects
------------------------------------

* incorporate re-write of AppConfig into Badger::Config

* consider doing the same with Pod::POM into Badger::Pod and combining
  with Badger::Docs.  (update: doing now)

* Finish cleaning Badger-Web and release

* Finish refactoring Badger-Database and release



docs
----
links sections
Badger::Factory
