diff --git a/modules/Bio/EnsEMBL/Hive/Utils.pm b/modules/Bio/EnsEMBL/Hive/Utils.pm index 1323ffc6233b285100cc90c53240b33c3d3a420e..0263e453d065ae12016b9b028143f8d506b24cf7 100755 --- a/modules/Bio/EnsEMBL/Hive/Utils.pm +++ b/modules/Bio/EnsEMBL/Hive/Utils.pm @@ -1,52 +1,62 @@ -package Bio::EnsEMBL::Hive::Utils; + +=pod =head1 NAME Bio::EnsEMBL::Hive::Utils -=head1 DESCRIPTION - -Let's keep here various utility functions that are not proper Extensions (do not cunningly extend other classes) +=head1 SYNOPSIS -You can either inherit from this package, call the functions directly or import: + # Example of an import: + use Bio::EnsEMBL::Hive::Utils 'stringify'; + my $input_id_string = stringify($input_id_hash); + # Example of inheritance: + use base ('Bio::EnsEMBL::Hive::Utils', ...); + my $input_id_string = $self->stringify($input_id_hash); -=head1 Example of inheritance: + # Example of a direct call: + use Bio::EnsEMBL::Hive::Utils; + my $input_id_string = Bio::EnsEMBL::Hive::Utils::stringify($input_id_hash); -use base ('Bio::EnsEMBL::Hive::Utils', ...); - -my $input_id_string = $self->stringify($input_id_hash); +=head1 DESCRIPTION +This module provides general utility functions (at the moment of documentation, 'stringify' and 'destringify') +that can be used in different contexts using three different calling mechanisms: + * import: another module/script can selectively import methods from this module into its namespace -=head1 Example of a direct call: + * inheritance: another module can inherit from this one and so implicitly acquire the methods into its namespace + + * direct call to a module's method: another module/script can directly call a method from this module prefixed with this module's name -use Bio::EnsEMBL::Hive::Utils; +=head1 CONTACT -my $input_id_string = Bio::EnsEMBL::Hive::Utils::stringify($input_id_hash); + Please contact ehive-users@ebi.ac.uk mailing list with questions/suggestions. + +=cut +package Bio::EnsEMBL::Hive::Utils; -=head1 Example of import: +use strict; +use warnings; +use Data::Dumper; -use Bio::EnsEMBL::Hive::Utils 'stringify'; +use Exporter 'import'; +our @EXPORT_OK = qw( stringify destringify ); -my $input_id_string = stringify($input_id_hash); +=head2 stringify -=head1 Author + Description: This function takes in a Perl data structure and stringifies it using specific configuration + that allows us to store/recreate this data structure according to our specific storage/communication requirements. -Leo Gordon, lg4@ebi.ac.uk + Callers : Bio::EnsEMBL::Hive::DBSQL::AnalysisJobAdaptor # stringification of input_id() hash + Bio::EnsEMBL::Hive::PipeConfig::HiveGeneric_conf # stringification of parameters() hash =cut -use strict; -use warnings; -use Data::Dumper; - -use Exporter 'import'; -our @EXPORT_OK = qw( stringify destringify ); - sub stringify { my $structure = pop @_; @@ -59,7 +69,18 @@ sub stringify { return Dumper($structure); } -sub destringify { # eval if it seems to be a perl hash/array/string and leave intact otherwise +=head2 destringify + + Description: This function takes in a string that may or may not contain a stingified Perl structure. + If it seems to contain a hash/array/quoted_string, the contents is evaluated, otherwise it is returned "as is". + This function is mainly used to read values from 'meta' table that may represent Perl structures, but generally don't have to. + + Callers : Bio::EnsEMBL::Hive::ProcessWithParams # destringification of general 'meta' params + beekeeper.pl script # destringification of the 'pipeline_name' meta param + +=cut + +sub destringify { my $value = pop @_; if($value) {