Class::Driver

Class::Driver is a Perl module to generate driver ("composite") class hierarchies on-the-fly.
Download

Class::Driver Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Tyler MacDonald
  • Publisher web site:
  • http://search.cpan.org/~crakrjack/

Class::Driver Tags


Class::Driver Description

Class::Driver is a Perl module to generate driver ("composite") class hierarchies on-the-fly. EXAMPLE # This is a really long synopsis, but hopefully it will give you an idea... package MyPackage; use Class::Driver; use base q(Class::Driver); our %drivers; return 1; sub new { my($class, %args) = @_; die "mime_type is required" unless($args{mime_type}); die "no driver to handle type $args{mime_type}" unless($drivers{$args{mime_type}}); return $class->driver_load($drivers{$args{mime_type}}, %args); } sub driver_new { my($class, %args) = @_; return bless %args, $class; } sub driver_required { 1; } sub driver_requied_here { 0; } package MyPackage::avi; use MyPackage; use base q(MyPackage); use Video::Info; $MyPackage::drivers{'video/x-msvideo'} = 'avi'; return 1; sub driver { "avi"; } sub driver_new { my($class, %args) = @_; die "'file' is a required parameter for $args{mime_type} files" unless($args{file}); $args{info} = Video::Info->new(-file => $args{file}) or die "Failed to create a Video::Info object for $args{file}"; return $class->SUPER::driver_new(%args); } sub duration { my $self = shift; return $args{info}->duration; } package MyPackage::mp3; use base q(MyPackage); use MP3::Info; $MyPackage::drivers{'audio/mpeg'} = 'mp3'; ## (etc...) package main; my $foo = MyPackage->new(file => 'foobar.mp3', mime_type => 'audio/mpeg'); print "foobar.mp3 is ", $foo->duration, " seconds long.n"; Requirements: · Perl


Class::Driver Related Software