1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
Badger::Class
-------------
* 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
UPDATE - no, I think it's still required to make The Right Thing happen.
* Make CLASS static.
* Change message() to snippet()
NOTE - already changed Badger::Base XXX_msg() method to explicitly
package-scope message() to Badger::Base so that problem is mitigated.
A subclass can now define a message() method and it will still Just Work[tm]
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::Class::Config
--------------
* Add 'constant' as alias for 'method'. e.g. 'FOO|class:FOO|constant:FOO'
Badger::Debug
-------------
* See if we can make this a low-level mixin that we can import into
Badger::Utils et al.
* make debug enabler export :debug and :dump into module
Badger::Docs
------------
* Finish writing it / cleaning it up and release.
Badger::Exception
-----------------
* Do we still want to add a higher-level catch() method?
Badger::Factory
---------------
* Subclass out into base class (returns loaded module name), object
creator, object creator + cache (e.g. for hub), or whatever.
* 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
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.
* I'm considering refactoring this. I'd like to unify the different
filesystem-specific formats to an underlying URI-based one. It would
require a lens (combined parser + presenter) for each O/S. Unix (inc
Mac OSX) are simple, Win32 isn't hard. Delegate to File::Spec for
everything else.
Some info about Win32 path <-> uri translation, snarfed from
http://blogs.msdn.com/ie/archive/2006/12/06/file-uris-in-windows.aspx
For the UNC Windows file path
\\laptop\My Documents\FileSchemeURIs.doc
The corresponding valid file URI in Windows is the following:
file://laptop/My%20Documents/FileSchemeURIs.doc
For the local Windows file path
C:\Documents and Settings\davris\FileSchemeURIs.doc
The corresponding valid file URI in Windows is:
file:///C:/Documents%20and%20Settings/davris/FileSchemeURIs.doc
Functions currently used from File::Spec are: catpath, catdir,
canonpath, splitpath, splitdir, filename_is_absolute, abs2rel,
no_upwards. Most of those can be moved out to lenses. Path
manipulation becomes much easier internally when the path can be
stored as a list of path nodes.
Badger::Log
-----------
* Add code to detect Log::Dispatch objects and forward messages.
Badger::Storage
---------------
* This is available in the git repository 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...
* Change if_env to use Badger::Logic so we can specify things like:
if_env => 'RELEASE_TESTING or AUTOMATED_TESTING'
Badger::Utils
-------------
* hashlike, listlike, numlike
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
|