forked from abw/Badger
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
184 lines (108 loc) · 4.67 KB
/
TODO
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
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