2 |
## $Id$ |
## $Id$ |
3 |
## --------------------------------------------------------------------------- |
## --------------------------------------------------------------------------- |
4 |
## $Log$ |
## $Log$ |
5 |
|
## Revision 1.3 2003/05/13 07:33:38 joko |
6 |
|
## enhanced: now can get symbols as list or hash |
7 |
|
## |
8 |
## Revision 1.2 2003/03/27 15:17:03 joko |
## Revision 1.2 2003/03/27 15:17:03 joko |
9 |
## namespace fixes for Data::Mungle::* |
## namespace fixes for Data::Mungle::* |
10 |
## |
## |
14 |
## --------------------------------------------------------------------------- |
## --------------------------------------------------------------------------- |
15 |
|
|
16 |
|
|
17 |
|
=pod |
18 |
|
|
19 |
|
=head1 TODO |
20 |
|
|
21 |
|
o Investigate: Could this functionality be replaced through Perl's core/lib/Symbol.pm? |
22 |
|
|
23 |
|
|
24 |
|
=cut |
25 |
|
|
26 |
|
|
27 |
package Data::Mungle::Code::Symbol; |
package Data::Mungle::Code::Symbol; |
28 |
|
|
29 |
use strict; |
use strict; |
43 |
my $mixinPackage = shift; |
my $mixinPackage = shift; |
44 |
my $callPackage = shift; |
my $callPackage = shift; |
45 |
$callPackage ||= __PACKAGE__; |
$callPackage ||= __PACKAGE__; |
46 |
foreach (@$symbols) { |
if (ref $symbols eq 'ARRAY') { |
47 |
{ |
foreach (@$symbols) { |
48 |
no strict 'refs'; |
{ |
49 |
my $newName = $mixinPackage . '::' . $_; |
no strict 'refs'; |
50 |
*{$newName} = get_coderef($callPackage, $_); |
my $newName = $mixinPackage . '::' . $_; |
51 |
|
*{$newName} = get_coderef($callPackage, $_); |
52 |
|
} |
53 |
|
} |
54 |
|
|
55 |
|
} elsif (ref $symbols eq 'HASH') { |
56 |
|
foreach (keys %$symbols) { |
57 |
|
{ |
58 |
|
no strict 'refs'; |
59 |
|
my $newName = $mixinPackage . '::' . $symbols->{$_}; |
60 |
|
*{$newName} = get_coderef($callPackage, $_); |
61 |
|
} |
62 |
} |
} |
63 |
|
|
64 |
} |
} |
65 |
} |
} |
66 |
|
|