diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Module/Build/Config.pm')
-rwxr-xr-x | Master/tlpkg/tlperl/lib/Module/Build/Config.pm | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Module/Build/Config.pm b/Master/tlpkg/tlperl/lib/Module/Build/Config.pm new file mode 100755 index 00000000000..997960073fd --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Module/Build/Config.pm @@ -0,0 +1,59 @@ +package Module::Build::Config; + +use strict; +use vars qw($VERSION); +$VERSION = '0.3603'; +$VERSION = eval $VERSION; +use Config; + +sub new { + my ($pack, %args) = @_; + return bless { + stack => {}, + values => $args{values} || {}, + }, $pack; +} + +sub get { + my ($self, $key) = @_; + return $self->{values}{$key} if ref($self) && exists $self->{values}{$key}; + return $Config{$key}; +} + +sub set { + my ($self, $key, $val) = @_; + $self->{values}{$key} = $val; +} + +sub push { + my ($self, $key, $val) = @_; + push @{$self->{stack}{$key}}, $self->{values}{$key} + if exists $self->{values}{$key}; + $self->{values}{$key} = $val; +} + +sub pop { + my ($self, $key) = @_; + + my $val = delete $self->{values}{$key}; + if ( exists $self->{stack}{$key} ) { + $self->{values}{$key} = pop @{$self->{stack}{$key}}; + delete $self->{stack}{$key} unless @{$self->{stack}{$key}}; + } + + return $val; +} + +sub values_set { + my $self = shift; + return undef unless ref($self); + return $self->{values}; +} + +sub all_config { + my $self = shift; + my $v = ref($self) ? $self->{values} : {}; + return {%Config, %$v}; +} + +1; |