- Initial checkin
[videosite.git] / videosite / Base.pm
1 package Base;
2
3 use strict;
4 use Irssi;
5
6 sub new {
7     my $class = shift;
8     my $self = {'_DEBUG' => 0};
9
10     bless($self, $class);
11
12     $self->_prepare_parameters();
13
14     return $self;
15 }
16
17 sub error {
18     my $self = shift;
19     my @data = @_;
20
21     Irssi::print(sprintf(shift(@_), @_));
22 }
23
24 sub debug {
25     my $self = shift;
26     my @data = @_;
27
28     $data[0] = "DEBUG: " . $data[0];
29     if ($self->{'_DEBUG'} != 0) {$self->error(@data)};
30 }
31
32 sub mergeconfig {
33     my $self = shift;
34     my $c = shift;
35     my $o;
36
37     foreach $o (keys(%{$c->{'option'}})) {
38         if (exists($self->{'_CONFIG'}->{'option'}->{$o})) {
39             $self->{'_CONFIG'}->{'option'}->{$o}->{'content'} = $c->{'option'}->{$o}->{'content'};
40         }
41     }
42
43     return $self->{'_CONFIG'};
44 }
45
46 sub _prepare_parameters {
47     my $self = shift;
48     my $p;
49
50     $self->{'_CONFIG'} = { 'module' => $self->{'NAME'},
51                            'option' => {}};
52
53     foreach $p (keys(%{$self->{'_PARAMS'}})) {
54         $self->{'_CONFIG'}->{'option'}->{$p}->{'content'} = $self->{'_PARAMS'}->{$p}->[0];
55     }
56 }
57
58 sub _getval {
59     my $self = shift;
60     my $key = shift;
61
62     return $self->{'_CONFIG'}->{'option'}->{$key}->{'content'}
63 }
64
65 sub setval {
66     my $self = shift;
67     my $key = shift;
68     my $val = shift;
69
70     if (exists($self->{'_CONFIG'}->{'option'}->{$key})) {
71         $self->{'_CONFIG'}->{'option'}->{$key}->{'content'} = $val;
72     } else {
73         $self->error('Module %s does not have a parameter named %s', $self->{'NAME'}, $key);
74     }
75 }
76
77 sub getconfstr {
78     my $self = shift;
79     my $s = 'Options for ' . $self->{'NAME'} . ":\n";
80     my $k;
81     my $p;
82
83     foreach $k (keys(%{$self->{'_CONFIG'}->{'option'}})) {
84         $p = $self->{'_CONFIG'}->{'option'}->{$k}->{'content'};
85         $p =~ s/%/%%/g;
86         $s .= sprintf("  %s: %s", $k, $p);
87         if ($self->{'_CONFIG'}->{'option'}->{$k}->{'content'} == $self->{'_PARAMS'}->{$k}->[0]) {
88             $s .= " (default)\n";
89         } else {
90             $s .= "\n";
91         }
92     }
93
94     return $s;
95 }
96
97 sub gethelpstr {
98     my $self = shift;
99     my $s = 'Help for ' . $self->{'NAME'} . ":\n";
100     my $k;
101     my $p;
102
103     if (exists($self->{'DESC'})) {
104         $s .= "Description:\n " . $self->{'DESC'};
105     }
106
107     $s .= " Options:\n";
108     foreach $k (keys(%{$self->{'_CONFIG'}->{'option'}})) {
109         $p = $self->{'_PARAMS'}->{$k}->[0];
110         $p =~ s/%/%%/g;
111         $s .= sprintf("  %s: %s (default: %s)\n", $k, $self->{'_PARAMS'}->{$k}->[1], $p);
112     }
113
114     return $s;
115 }
116
117 sub setdebug {
118     my $self = shift;
119
120     $self->{'_DEBUG'} = shift;
121 }
122
123 1;