--- nfo/perl/libs/Data/Mungle/Code/Symbol.pm 2003/01/22 17:59:22 1.1 +++ nfo/perl/libs/Data/Mungle/Code/Symbol.pm 2003/05/13 07:33:38 1.3 @@ -1,14 +1,30 @@ ## --------------------------------------------------------------------------- -## $Id: Symbol.pm,v 1.1 2003/01/22 17:59:22 root Exp $ +## $Id: Symbol.pm,v 1.3 2003/05/13 07:33:38 joko Exp $ ## --------------------------------------------------------------------------- ## $Log: Symbol.pm,v $ +## Revision 1.3 2003/05/13 07:33:38 joko +## enhanced: now can get symbols as list or hash +## +## Revision 1.2 2003/03/27 15:17:03 joko +## namespace fixes for Data::Mungle::* +## ## Revision 1.1 2003/01/22 17:59:22 root ## + refactored from Mail::Audit::Dispatch ## ## --------------------------------------------------------------------------- -package Data::Code::Symbol; +=pod + +=head1 TODO + + o Investigate: Could this functionality be replaced through Perl's core/lib/Symbol.pm? + + +=cut + + +package Data::Mungle::Code::Symbol; use strict; use warnings; @@ -20,19 +36,31 @@ ); -use Data::Code::Ref qw( get_coderef ); +use Data::Mungle::Code::Ref qw( get_coderef ); sub export_symbols { my $symbols = shift; my $mixinPackage = shift; my $callPackage = shift; $callPackage ||= __PACKAGE__; - foreach (@$symbols) { - { - no strict 'refs'; - my $newName = $mixinPackage . '::' . $_; - *{$newName} = get_coderef($callPackage, $_); + if (ref $symbols eq 'ARRAY') { + foreach (@$symbols) { + { + no strict 'refs'; + my $newName = $mixinPackage . '::' . $_; + *{$newName} = get_coderef($callPackage, $_); + } + } + + } elsif (ref $symbols eq 'HASH') { + foreach (keys %$symbols) { + { + no strict 'refs'; + my $newName = $mixinPackage . '::' . $symbols->{$_}; + *{$newName} = get_coderef($callPackage, $_); + } } + } }