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