Revision history for Perl extension Class::Maker.

0.01 Tue Jun 4 05:20:50 2002

0.02 18.06.2002 22:31

0.03 19.06.2002 23:07

0.04 26.06.2002 00:57

0.05_01 01.07.2002 00:49

        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

0.05_03 04.07.2002 03:18

0.05_04 05.07.2002 18:49

0.05_05 06.07.2002 01:43

=head1 find

find (Returns a snapshot-aref to all instances (objects) of a class in a given package)

0.05_06 21.07.2002 00:35

#!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

0.05_10 01.09.2002 16:14

$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

use attributes;

to Maker.pm because under perl5.8.0 it seems to be needed.

0.5.14

0.5.15

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]->notifyobservers( '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

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

        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