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