+sub calculate
+{
+ for (get_all_nicks ())
+ {
+ my $nick = $_;
+ my $main = get_main_nick ($nick);
+
+ if (!defined ($NickData->{$main}))
+ {
+ $NickData->{$main} =
+ {
+ lines => [qw(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)],
+ words => [qw(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)],
+ chars => [qw(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)],
+ lines_total => 0,
+ words_total => 0,
+ chars_total => 0
+ };
+ }
+
+ my @counter = $NickLinesCounter->get ($nick);
+ if (@counter)
+ {
+ my $sum = 0;
+ for (my $i = 0; $i < 24; $i++)
+ {
+ $NickData->{$main}{'lines'}[$i] += $counter[$i];
+ $sum += $counter[$i];
+ }
+ $NickData->{$main}{'lines_total'} = $sum;
+ }
+
+ @counter = $NickWordsCounter->get ($nick);
+ if (@counter)
+ {
+ my $sum = 0;
+ for (my $i = 0; $i < 24; $i++)
+ {
+ $NickData->{$main}{'words'}[$i] += $counter[$i];
+ $sum += $counter[$i];
+ }
+ $NickData->{$main}{'words_total'} = $sum;
+ }
+
+ @counter = $NickWordsCounter->get ($nick);
+ if (@counter)
+ {
+ my $sum = 0;
+ for (my $i = 0; $i < 24; $i++)
+ {
+ $NickData->{$main}{'words'}[$i] += $counter[$i];
+ $sum += $counter[$i];
+ }
+ $NickData->{$main}{'chars_total'} = $sum;
+ }
+
+ if (!defined ($QuoteData->{$main}))
+ {
+ $QuoteData->{$main} = [];
+ }
+ if (defined ($QuoteCache->{$nick}))
+ {
+ my @new = sort (sub { $b->[0] <=> $a->[0] }, @{$QuoteCache->{$nick}}, @{$QuoteData->{$main}});
+ splice (@new, $QuoteCacheSize) if (scalar (@new) > $QuoteCacheSize);
+ $QuoteData->{$main} = \@new;
+ }
+ }
+}
+