Просмотр исходного кода

add miau parser by Kresten Kjeldgaard, promote Azoff to "major contributor" in CREDITS

Christoph Berg 20 лет назад
Родитель
Сommit
70c361179a
3 измененных файлов с 106 добавлено и 3 удалено
  1. 5 3
      docs/CREDITS
  2. 2 0
      docs/Changelog
  3. 99 0
      modules/Pisg/Parser/Format/miau.pm

+ 5 - 3
docs/CREDITS

@@ -15,6 +15,9 @@ Major contributors:
      wildcard and regexp support for IgnoreWords, FoulWords, ViolentWords,
      wildcard and regexp support for IgnoreWords, FoulWords, ViolentWords,
      charset conversion support, BigNumbersThreshold option, karma, music
      charset conversion support, BigNumbersThreshold option, karma, music
      charts, parser cache ...
      charts, parser cache ...
+ * Torbjörn Svensson <azoff@se.linux.org>
+   | ShowFoulDecimals and AltColorScheme options, multiple channels with same
+   | name, multiple languages per run, lots of other fixes, pum.pl
 
 
 Other contributors:
 Other contributors:
 
 
@@ -109,9 +112,6 @@ Other contributors:
    | updated Dutch translation
    | updated Dutch translation
  * Julien Danjou <acid@debian.org>
  * Julien Danjou <acid@debian.org>
    | pisg(1) manpage
    | pisg(1) manpage
- * Torbjörn Svensson <azoff@se.linux.org>
-   | ShowFoulDecimals and AltColorScheme options, multiple channels with same
-   | name, multiple languages per run, lots of other fixes, pum.pl
  * coaster
  * coaster
    | improved mirc6hack.mrc
    | improved mirc6hack.mrc
  * Vianney Lecroart <acemtp@free.fr>
  * Vianney Lecroart <acemtp@free.fr>
@@ -126,6 +126,8 @@ Other contributors:
    | Update for Bulgarian
    | Update for Bulgarian
  * Axel 'XTaran' Beckert <abe@deuxchevaux.org>
  * Axel 'XTaran' Beckert <abe@deuxchevaux.org>
    | pum.pl
    | pum.pl
+ * Kresten Kjeldgaard <gathond@gathond.dk>
+   | miau parser
 
 
 I probably forgot a lot of people here, _PLEASE_ notify me if I left you
 I probably forgot a lot of people here, _PLEASE_ notify me if I left you
 out.. because I have a bad habit of forgetting to maintain this list :)
 out.. because I have a bad habit of forgetting to maintain this list :)

+ 2 - 0
docs/Changelog

@@ -3,6 +3,8 @@ pisg (0.69) - ??
    * Bug fixes:
    * Bug fixes:
      + Fix ActiveNicks2 display when ActiveNicks is not divisible by 5
      + Fix ActiveNicks2 display when ActiveNicks is not divisible by 5
        (thanks to Ian Rutson).
        (thanks to Ian Rutson).
+   * Parsers:
+     + Finally add miau parser by Kresten Kjeldgaard.
 
 
 pisg (0.68) - Mon Mar, 13th 2006
 pisg (0.68) - Mon Mar, 13th 2006
    Christoph:
    Christoph:

+ 99 - 0
modules/Pisg/Parser/Format/miau.pm

@@ -0,0 +1,99 @@
+package Pisg::Parser::Format::miau;
+
+# Documentation for the Pisg::Parser::Format modules is found in Template.pm
+# This Parser works with miau version 0.5.3, your milage may vary.
+
+# 2005-05-07 Kresten Kjeldgaard <gathond@gathond.dk>
+# This is a version of the muh2 parser that supports the log file format of the
+# miau bouncer, mostly topic changes that are handled differently.
+
+use strict;
+$^W = 1;
+
+sub new
+{
+    my ($type, %args) = @_;
+    my $self = {
+        cfg => $args{cfg},
+        normalline => '^\[(\d+):\d+\S+ <([^>]+)> (.*)$',
+        actionline => '^\[(\d+):\d+\S+ \* (\S+) (.*)$',
+        thirdline  => '^\[(\d+):(\d+)\S+ [\-><\*][\-\*]{2} (.+)$'
+    };
+
+    bless($self, $type);
+    return $self;
+}
+
+sub normalline
+{
+    my ($self, $line, $lines) = @_;
+    my %hash;
+
+    if ($line =~ /$self->{normalline}/o) {
+
+        $hash{hour}   = $1;
+        ($hash{nick}  = $2) =~ s/^[@%\+]//o; # Remove prefix
+        $hash{saying} = $3;
+
+        return \%hash;
+    } else {
+        return;
+    }
+}
+
+sub actionline
+{
+    my ($self, $line, $lines) = @_;
+    my %hash;
+
+    if ($line =~ /$self->{actionline}/o) {
+
+        $hash{hour}   = $1;
+        ($hash{nick}  = $2) =~ s/^[@%\+]//o; # Remove prefix
+        $hash{saying} = $3;
+
+        return \%hash;
+    } else {
+        return;
+    }
+}
+
+sub thirdline
+{
+    my ($self, $line, $lines) = @_;
+    my %hash;
+
+    if ($line =~ /$self->{thirdline}/o) {
+
+        my @line = split(/\s/, $3);
+
+        $hash{hour} = $1;
+        $hash{min}  = $2;
+        ($hash{nick}  = $line[0]) =~ s/^[@%\+]//o; # Remove prefix
+
+        if ($#line >= 4 && ($line[1].$line[2]) eq 'waskicked') {
+            $hash{kicker} = $line[4];
+
+        } elsif ($#line >= 6 && (($line[1].$line[2]) eq 'haschanged')) {
+            $hash{newtopic} = join(' ', @line[6..$#line]);
+            $hash{newtopic} =~ s/^'//;
+            $hash{newtopic} =~ s/'$//;
+
+        } elsif ($#line >= 3 && ($line[1].$line[2]) eq 'setsmode') {
+            $hash{newmode} = $line[3];
+
+        } elsif ($#line >= 3 && ($line[2].$line[3]) eq 'hasjoined') {
+            $hash{newjoin} = $line[0];
+
+        } elsif ($#line >= 5 && ($line[2].$line[3]) eq 'nowknown') {
+            $hash{newnick} = $line[5];
+        }
+
+        return \%hash;
+
+    } else {
+        return;
+    }
+}
+
+1;