The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.

0.5.15

        * package Class::Maker::Basic::Handler::Attributes
                -- now handlers are using "Delegation" to methods
                        - get() 
                        - set() 
                        - init()   called from 'new' (or 'default' field) constructor
                        - reset() 
                        
                This now eases the interception via hooks and also makes things more transparent.       

                Example exploit of that:
                
                use Hook::Heckle;
                
                foreach my $method ( qw(max text) )
                {
                        Hook::Heckle->new( victim => $method, post => sub { my $this = shift; print "Model is informing observers of '$method' change\n" and $_[0]->notify_observers( 'update', $method ) if $_[1]; @_ }, sub { @_ } );
                }

        * class->_arginit (if exists) is called before anything with @_ happens to the constructor ('new').     
                -- it received \@_ and should do changes in place.

0.5.17

        * Bug in lvalue attribute handler (default) fixed

                because C<return $val; this doesn't work, don't say "return">

        * Class::Maker::Types::Array, t/20_10_...

        fixed bug in _calc( ) which caused wrong calculation of intersection() when identical/copy array elements were present in an array. 
        Solved' by unique'ing all elements prior calculation.

        amended get_where_regexp(). Now supports more flexible arguments: call methods with args.

        * Documented a feature where ^[.|*] in the class name creates a subpackage but code functionality was not existant. Re-introduced that feature.

0.5.97 * new( "Parent::method" => 100 ) is now working again. It checks for '::' pieces and forwards them now correctly as implemented in the Basic/Constructor.pm.

        * $Class::Maker::explicit is now working again. Now should be not defined on a class-basis, but globally (as early as possible). You may have a look
          at t/30_explicit.t for an example of the syntax. You cannot use the explicit notation in the basic new() constructor anymore, as it produces over-explicit names
          in the $this hash. This could be handled by testing it, but seems not feasible yet.
        * new( ) is now handling the default => { } definitions more precise, so it inits them according to inheritance series, so that all parents default definitions are
          applied, while the children override the defaults of their parents. Notably, the default values are already accessible in the _preinit standard method.