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__ =pod =head1 NAME WordPress::Base::Data::Object =head1 DESCRIPTION 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. =head1 CAVEAT This package is under development. Use base packages at your own peril. =head1 METHODS =head2 new() =head2 structure_data() Returns the data structure as you would present to a WordPress::XMLRPC set call. Perl setget method. =head2 make_structure_data_accessor() Argument is list of method names. =head1 SEE ALSO WordPress::Base::Data::Author WordPress::Base::Data::Category WordPress::Base::Data::MediaObject WordPress::Base::Data::Post WordPress::Base::Data::Page WordPress::XMLRPC WordPress::API =head1 AUTHOR Leo Charre leocharre at cpan dot org =cut