WordPress::Base::Data::Object - WordPress::Base::Data::Object documentation


WordPress-API documentation Contained in the WordPress-API distribution.

Index


Code Index:

NAME

Top

WordPress::Base::Data::Object

DESCRIPTION

Top

This module is not meant to be used alone. It is used as base these sorts of objects:

   WordPress::Base::Data::Author
   WordPress::Base::Data::Category
   WordPress::Base::Data::MediaObject
   WordPress::Base::Data::Post
   WordPress::Base::Data::Page

It contains a constructor, and object method builders.

CAVEAT

Top

This package is under development. Use base packages at your own peril.

METHODS

Top

new()

structure_data()

Returns the data structure as you would present to a WordPress::XMLRPC set call. Perl setget method.

make_structure_data_accessor()

Argument is list of method names.

SEE ALSO

Top

WordPress::Base::Data::Author WordPress::Base::Data::Category WordPress::Base::Data::MediaObject WordPress::Base::Data::Post WordPress::Base::Data::Page WordPress::XMLRPC

WordPress::API

AUTHOR

Top

Leo Charre leocharre at cpan dot org


WordPress-API documentation Contained in the WordPress-API distribution.

package WordPress::Base::Data::Object;
use strict;
use Carp;
#use Smart::Comments '###';
use vars qw($VERSION);
$VERSION = sprintf "%d.%02d", q$Revision: 1.5 $ =~ /(\d+)/g;
 
sub new {
   my($class,$self) = @_;
   $self||={};
   bless $self,$class;
   return $self;
}


#*{structure_data_set} = \&structure_data;

sub make_structure_data {
   my $class = shift;
   $class->can('structure_data') and return;

   my $namespace = "$class\::structure_data";

   no strict 'refs';
   *{$namespace} = {};


   *{$namespace} = sub {
      my $self = shift;
      my ($val) = @_;
      if ( defined $val ){
         ### got val here
         $self->{structure_data} = $val;
      }
      unless( defined $self->{structure_data} ){
         my %copy = %{"$namespace"};
         $self->{structure_data} = \%copy;
      }
      return $self->{structure_data};
   };
   
   *{"$namespace\_set"} = *{$namespace};

}


sub make_structure_data_accessor {
   my $class = shift;
   my @names = @_;
   no strict 'refs';
   
   make_structure_data($class);

   for my $name ( @names ){

      *{"$class\::structure_data"}->{$name} = undef;
      
      *{"$class\::$name"} = 
      sub {
         my ($self,$val) = (shift,shift);
         if (defined $val){
            $self->structure_data->{$name} = $val;
         }
         return $self->structure_data->{$name};      
      };
   }
   return;
}




1;


__END__