X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FBase.pm;h=f0fa43945d03e5a1e11a149e16d634a2f349cb66;hb=400621043a9ee2217a07e2afe5cedf23a2491d69;hp=78f07413e953115416d662addfdfbbec252c3d96;hpb=d738e03f4f2d70a41eba8b77177826d1ff62f42b;p=videosite.git diff --git a/videosite/Base.pm b/videosite/Base.pm index 78f0741..f0fa439 100644 --- a/videosite/Base.pm +++ b/videosite/Base.pm @@ -1,11 +1,14 @@ +# (c) 2007 by Ralf Ertzinger +# licensed under GNU GPL v2 + package Base; use strict; -use Irssi; +use Data::Dumper; sub new { my $class = shift; - my $self = {'_DEBUG' => 0}; + my $self = {'_DEBUG' => 0, '_OUT' => sub {print shift}}; bless($self, $class); @@ -16,9 +19,11 @@ sub new { sub error { my $self = shift; - my @data = @_; + my $t; - Irssi::print(sprintf(shift(@_), @_)); + $t = sprintf(shift(@_), @_); + $t =~ s/%/%%/g; + $self->{'_OUT'}($t); } sub debug { @@ -34,6 +39,8 @@ sub mergeconfig { my $c = shift; my $o; + return $self->{'_CONFIG'} unless defined($c); + foreach $o (keys(%{$c->{'option'}})) { if (exists($self->{'_CONFIG'}->{'option'}->{$o})) { $self->{'_CONFIG'}->{'option'}->{$o}->{'content'} = $c->{'option'}->{$o}->{'content'}; @@ -47,8 +54,7 @@ sub _prepare_parameters { my $self = shift; my $p; - $self->{'_CONFIG'} = { 'module' => $self->{'NAME'}, - 'option' => {}}; + $self->{'_CONFIG'} = {'option' => {'enabled' => {'content' => '1'}}}; foreach $p (keys(%{$self->{'_PARAMS'}})) { $self->{'_CONFIG'}->{'option'}->{$p}->{'content'} = $self->{'_PARAMS'}->{$p}->[0]; @@ -58,8 +64,12 @@ sub _prepare_parameters { sub _getval { my $self = shift; my $key = shift; + my $val; - return $self->{'_CONFIG'}->{'option'}->{$key}->{'content'} + $val = $self->{'_CONFIG'}->{'option'}->{$key}->{'content'}; + $self->debug('Returning %s=%s', $key, $val); + + return $val; } sub setval { @@ -74,6 +84,13 @@ sub setval { } } +sub setio { + my $self = shift; + my $io = shift; + + $self->{'_OUT'} = $io; +} + sub getconfstr { my $self = shift; my $s = 'Options for ' . $self->{'NAME'} . ":\n"; @@ -84,7 +101,7 @@ sub getconfstr { $p = $self->{'_CONFIG'}->{'option'}->{$k}->{'content'}; $p =~ s/%/%%/g; $s .= sprintf(" %s: %s", $k, $p); - if ($self->{'_CONFIG'}->{'option'}->{$k}->{'content'} == $self->{'_PARAMS'}->{$k}->[0]) { + if ($self->{'_CONFIG'}->{'option'}->{$k}->{'content'} eq $self->{'_PARAMS'}->{$k}->[0]) { $s .= " (default)\n"; } else { $s .= "\n"; @@ -94,6 +111,30 @@ sub getconfstr { return $s; } +# Return a list of the parameters supported by the module +# Does not return the 'enabled' parameter +sub getparamlist { + my $self = shift; + my $word = shift; + + return grep {$_ ne 'enabled' && /^$word/} keys %{$self->{'_PARAMS'}}; +} + +# Return a list of valid parameter values, if the parameter has +# such a list. +sub getparamvalues { + my $self = shift; + my $param = shift; + my $word = shift; + + unless(exists($self->{'_PARAMS'}->{$param}->[2])) { + return (); + } else { + return grep {/^$word/} keys %{$self->{'_PARAMS'}->{$param}->[2]}; + } +} + + sub gethelpstr { my $self = shift; my $s = 'Help for ' . $self->{'NAME'} . ":\n"; @@ -108,7 +149,16 @@ sub gethelpstr { foreach $k (keys(%{$self->{'_CONFIG'}->{'option'}})) { $p = $self->{'_PARAMS'}->{$k}->[0]; $p =~ s/%/%%/g; - $s .= sprintf(" %s: %s (default: %s)\n", $k, $self->{'_PARAMS'}->{$k}->[1], $p); + if (exists($self->{'_PARAMS'}->{$k}->[2])) { + # The parameter has a list of allowed values. Add the keys and their help + $s .= sprintf(" %s: %s (default: %s)\n", $k, $self->{'_PARAMS'}->{$k}->[1], $p); + foreach (sort keys(%{$self->{'_PARAMS'}->{$k}->[2]})) { + $s .= sprintf(" %s: %s\n", $_, $self->{'_PARAMS'}->{$k}->[2]->{$_}); + } + } else { + # The parameter just has a default value and a help text + $s .= sprintf(" %s: %s (default: %s)\n", $k, $self->{'_PARAMS'}->{$k}->[1], $p); + } } return $s;