WWW::Myspace::MyBase.3pm

Langue: en

Version: 2006-04-20 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

WWW::Myspace::MyBase - Base class for WWW::Myspace modules

VERSION

Version 0.3

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.

set_options

Allows you to set additional options. This is called by the ``new'' method to parse, validate, and set options into the object. You can call it yourself if you want to, either to set the options, or to change them later.
  # Set up the object
  $object->new( myspace => $myspace );
  
  # Read in a config file later.
  $object->set_options( config_file => $user_config );
 
 

This also lets you override options you supply directly with, say, a user-supplied config file. Otherwise, the options passed to ``new'' would override the config file.

get_options

General accessor method for all options. Takes a list of options and returns their values.

If called with one option, returns just the value. If called with more than one option, returns a list of option => value pairs (not necessarily in the order of your original list). If called with no arguments, returns a list of all options and their values (as option => value pairs).

This is basically a ``catch all'' accessor method that allows you to be lazy ad not create accessors for your options.

parse_options

This method is called by set_options 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 <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

http://annocpan.org/dist/WWW-Myspace <http://annocpan.org/dist/WWW-Myspace>

*
CPAN Ratings

http://cpanratings.perl.org/d/WWW-Myspace <http://cpanratings.perl.org/d/WWW-Myspace>

*
RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=WWW-Myspace <http://rt.cpan.org/NoAuth/Bugs.html?Dist=WWW-Myspace>

*
Search CPAN

http://search.cpan.org/dist/WWW-Myspace <http://search.cpan.org/dist/WWW-Myspace>

ACKNOWLEDGEMENTS

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.