Revision history for Perl extension Class::Maker. 0.01 Tue Jun 4 05:20:50 2002 - original version; created by h2xs 1.21 with options -A -X -a -n Class::Maker 0.02 18.06.2002 22:31 - Fixed a bug in Class::Maker::Examples::Array which lead to failure of other cpan module SQL::Generator 0.03 19.06.2002 23:07 - Added private field: All privat attributes are automatically prefixed with an '_' (This feature wasn't working before). 0.04 26.06.2002 00:57 - Added a couple of very usefull Example:: objects. 0.05_01 01.07.2002 00:49 - changed the usage of Class::Maker::Fields::_make_method() - now supporting '<attr>' syntax in the attribute section for making these attribute fields private (Inspired by Terrence Brannon). Example: attributes => { scalar => [qw(name address <internal> age)], array => [qw(friends <pattri> visits)], } Result: 'internal' and 'pattri' are privat (as if the were written into an private => { } attribute section. Also the reflection is modified after this. TODO: the brackets should include multiple attribute values, like qw(one <two three four> five) , should make two, three, four private. This bracket-private feature should work only in public and attributes fields. 0.05_02 01.07.2002 00:49 - compilation failed on Class::Maker::Example::* classes fixed. 0.05_03 04.07.2002 03:18 - updated dependencies (Data::Verify) 0.05_04 05.07.2002 18:49 - swapped the examples into a seperate dist, because of main- tanance problems (Should be available at CPAN under Class::Maker:::Examples). 0.05_05 06.07.2002 01:43 =head1 find - added 'find' function to Class::Maker::Reflection find (Returns a snapshot-aref to all instances (objects) of a class in a given package) 0.05_06 21.07.2002 00:35 - class field 'default' is working now #!perl Class::Maker::class { isa => [qw( Something )], public => { string => [qw( name desc )], }, default => { name => 'Role Name', desc => 'Role Descrition', xxx => 'DEFAULTS TO XXX', }, }; my $role = Human::Role->new( ); __END__ Even we called an empty 'new' we got $role->name eq 'Role Name' $role->desc eq 'Role Description' and Something->xxx( 'DEFAULTS TO XXX' ) is called which may be an accessor or a function/method that does anything. - Class::Maker::Reflection::reflect() now returns all reflections of the @ISA classes as a href. This will be a ie. "Class::Maker::Reflex" object in future. Also it better sync's the ->{isa} class fields with the real @ISA. Additionally non Class::Maker classes can be introspected, so they will have at least information in the 'isa' and 'methods' fields. { package Human::Role::Simple; @ISA = qw(Human::Role); sub new : method { my $this = shift; return $this->SUPER::new( name => $_[0] ); } } $reflex = ( 'Human::Role::Simple' => { 'isa' => [ 'Human::Role' ], 'methods' => [ 'new' ]. } ) 0.05_09 27.07.2002 10:40 - attribute handlers (accessors) are now in "Class::Maker::Basic::Handler::Attributes". Therefore if new accessors types are into that package (see _make_method in Maker.pm). - 'attribute' field is now obsolete ! Now only private/public/protected are allowed. 0.05_10 01.09.2002 16:14 - Class::Maker::Basic::Constructor new() supports cloning (use args for clone modification). $new_obj = Pkg::Name->new( name => 'name', email => 'email@server.org' ); $clone_obj = $new_obj->new( name => 'othername' ); 0.05_12 29.9.2002 18:53 - Added explicitly use attributes; to Maker.pm because under perl5.8.0 it seems to be needed. 0.5.14 - Class::Maker::Exception added. See pod.