[system] / trunk / webwork2 / lib / WeBWorK / DB / Record.pm Repository:
ViewVC logotype

View of /trunk/webwork2/lib/WeBWorK/DB/Record.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 923 - (download) (as text) (annotate)
Wed May 28 01:27:38 2003 UTC (9 years, 11 months ago) by sh002i
File size: 1249 byte(s)
additional work on DB system and SQL backend.
Record:: classes now support a can() method.
fixed some other stuff.
-sam

    1 ################################################################################
    2 # WeBWorK mod_perl (c) 2000-2002 WeBWorK Project
    3 # $Id$
    4 ################################################################################
    5 
    6 package WeBWorK::DB::Record;
    7 
    8 =head1 NAME
    9 
   10 WeBWorK::DB::Record - common functionality for Record classes.
   11 
   12 =cut
   13 
   14 use strict;
   15 use warnings;
   16 use Carp;
   17 
   18 sub new($@) {
   19   my ($invocant, %fields) = @_;
   20   my $class = ref($invocant) || $invocant;
   21   my $self = {};
   22 
   23   foreach ($invocant->FIELDS()) {
   24     $self->{$_} = $fields{$_} if exists $fields{$_};
   25   }
   26 
   27   bless $self, $class;
   28   return $self;
   29 }
   30 
   31 sub can($$) {
   32   my ($self, $function) = @_;
   33   return grep { $_ eq $function } $self->FIELDS();
   34 }
   35 
   36 sub AUTOLOAD($;@) {
   37   my ($self, @args) = @_;
   38   our $AUTOLOAD;
   39   my ($package, $function) = $AUTOLOAD =~ m/^(.*)::(.*)$/;
   40   return if $function eq "DESTROY";
   41   if (grep { $_ eq $function } $self->FIELDS()) {
   42     $self->{$function} = $args[0] if @args;
   43     return $self->{$function};
   44   } else {
   45     croak "Undefined subroutine $package\::$function called";
   46   }
   47 }
   48 
   49 sub toString($) {
   50   my $self = shift;
   51   my $result;
   52   foreach ($self->FIELDS()) {
   53     $result .= "$_ => ";
   54     $result .= defined $self->$_() ? $self->$_() : "";
   55     $result .= "\n";
   56   }
   57   return $result;
   58 }
   59 
   60 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9