Explorar el Código

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

Christoph Berg hace 20 años
padre
commit
70c361179a
Se han modificado 3 ficheros con 106 adiciones y 3 borrados
  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,
      charset conversion support, BigNumbersThreshold option, karma, music
      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:
 
@@ -109,9 +112,6 @@ Other contributors:
    | updated Dutch translation
  * Julien Danjou <acid@debian.org>
    | 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
    | improved mirc6hack.mrc
  * Vianney Lecroart <acemtp@free.fr>
@@ -126,6 +126,8 @@ Other contributors:
    | Update for Bulgarian
  * Axel 'XTaran' Beckert <abe@deuxchevaux.org>
    | pum.pl
+ * Kresten Kjeldgaard <gathond@gathond.dk>
+   | miau parser
 
 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 :)

+ 2 - 0
docs/Changelog

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