NAME
WWW::Myspace::MyBase - Base class for WWW::Myspace modules
VERSION
Version 0.2
SYNOPSIS
This is a base class that can be used for all WWW::Myspace modules. It provides basic, standardized options parsing in several formats. It validates data using Params::Validate.
To use this in your new module, you simply subclass this module, add the "default_options" method to define your data, and write your methods.
package WWW::Myspace::MyModule;
use WWW::Myspace::MyBase -Base;
const default_options => { happiness => 1, # Required
count => { default => 50 }, # Not required, defaults to 50
};
field 'happiness';
field 'count';
sub mymethod {
if ( $self->happiness ) { print "I'm happy" }
}
People can then call your method with:
$object = new WWW::Myspace::MyModule( happiness => 5 );
or
$object = new WWW::Myspace::MyModule( { happiness => 5 } );
See Params::Validate for more info on the format of, and available parsing stunts available in, default_options.
METHODS
default_options
This method returns a hashref of the available options and their default values. The format is such that it can be passed to Params::Validate (and, well it is :).
You MUST override this method to return your default options. Fortunately we use Spiffy, so you just have to do this:
const default_options => {
option => { default => value },
option => { default => value },
};
positional_parameters
If you need to use positional paramteres, define a "positional_parameters" method that returns a reference to a list of the parameter names in order, like this:
const positional_parameters => [ "username", "password" ];
new
Initialize and return a new object. $myspace is a WWW::Myspace object.
We accept the following formats:
new - Just creates and returns the new object.
new( $myspace ) - Where $myspace is a WWW::Myspace object.
new( $myspace, $options_hashref ) - Myspace object followed by a hashref
of option => value pairs
new( $options_hashref )
new( %options );
new( @options ); - Each option passed is assigned in order to the keys
of the "DEFAULT_OPTIONS" hash.
new( 'config_file' => "/path/to/file", 'config_file_format' => 'YAML' );
- File format can be "YAML" (see YAML.pm) or "CFG" (see Config::General).
- Defaults to "YAML" if not specified.
If you specify options and a config file, the config file will be read, and any options you explicitly passed will override the options read from the config file.
parse_options
This method is called by new to determine the format of the options passed and return a hash of option=>value pairs. If needed, you can call it yourself using the same formats described in "new" above.
$object->new;
$object->parse_options( 'username' => $username,
'config_file' => "/path/to/file" );
read_config_file
This method is called by parse_options. If a "config_file" argument is passed, this method is used to read options from it. Currently supports CFG and YAML formats.
myspace
Sets/retreives the myspace object with which we're logged in. You probably don't need to use this as you'll pass it to the new method instead.
save( filename )
Saves the object to the file specified by "filename". Saved every field specified in the default_options method except the myspace object.
load( filename )
Loads a message in YAML format (i.e. as saved by the save method) from the file specified by filename.
AUTHOR
Grant Grueninger, <grantg at cpan.org>
BUGS
Please report any bugs or feature requests to bug-www-myspace at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WWW-Myspace. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
NOTES
You currently have to both specify the options in default_options and create accessor methods for those you want accessor methods for (i.e. all of them). This should be made less redundant.
We probably want to include cache_dir and possibile cache_file methods here.
TO DO
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc WWW::Myspace::MyBase
You can also look for information at:
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
RT: CPAN's request tracker
Search CPAN
ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
Copyright 2005 Grant Grueninger, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.