BikePower
view release on metacpan or search on metacpan
BikePower.pm view on Meta::CPAN
my $v = $members{$k};
return 0 if !defined $v->[3];
return $v->[3] & $NOSAVE;
}
sub clone {
my($class, $old);
if (ref $_[0] and $_[0]->isa('BikePower')) {
# Syntax: $clone = $object->clone(%args);
$old = shift;
$class = ref $old;
} else {
# Syntax: $clone = clone BikePower $object, %args;
$class = shift;
$old = shift;
}
my(%args) = @_;
$args{'-no-ini'} = $args{'-no-default'} = 1;
my $new = $class->new(%args);
my($k, $v);
while(($k, $v) = each %members) {
next if _nosave($k) || !defined $old->{$k} || $old->{$k} eq '';
$new->{$k} = $old->{$k};
}
$new;
}
sub default {
my($self) = @_;
my($k, $v);
while(($k, $v) = each %members) {
next if _nosave($k);
$self->{$k} = $v->[1];
}
$self;
}
sub set_values {
my($self, %a) = @_;
my($k, $v);
while(($k, $v) = each %a) {
if ($k !~ /^[_\-]/ && defined $v && $v ne '') {
$self->{$k} = $v;
}
}
}
sub _default_filename {
my $home;
if ($^O eq 'MSWin32') {
eval {
require Win32Util; # XXX private module
$home = Win32Util::get_user_folder();
if (defined $home) {
$home .= "/bikepwr.rc";
}
};
}
if (!defined $home) {
$home = eval { local $SIG{__DIE__};
(getpwuid($<))[7];
} || $ENV{'HOME'} || '';
$home .= ($^O eq 'MSWin32' ? "/bikepwr.rc" : "/.bikepowerrc");
}
$home;
}
sub load_defaults {
my($self, $file) = @_;
$file = _default_filename unless $file;
my $x;
if (! -r $file) {
return undef;
}
eval 'do "$file"';
if ($@) {
warn $@;
return undef;
}
my($k, $v);
while(($k, $v) = each %$x) {
$self->{$k} = $v;
}
1;
}
sub save_defaults {
my($self, $file) = @_;
$file = _default_filename unless $file;
my $x;
my($k, $v);
while(($k, $v) = each %$self) {
if ($k !~ /^[_\-]/ && !_nosave($k) && $v ne '' ) {
$x->{$k} = $v;
}
}
if (!open(FILE, ">$file")) {
warn "Can't open file: $!";
return undef;
}
eval { require Data::Dumper };
if (!$@) {
print FILE Data::Dumper->Dump([$x], ['x']), "\n";
} else {
print FILE "\$x = {\n";
while(($k, $v) = each %$x) {
print FILE $k, "=> '", $v, "',\n";
}
print FILE "}\n";
}
close FILE;
1;
}
sub FETCH {
my($self, $key) = @_;
$self->{$key};
}
sub STORE {
my($self, $key, $value) = @_;
( run in 1.518 second using v1.01-cache-2.11-cpan-39bf76dae61 )