#!/usr/bin/perl -w use strict; my %lites = ( "Zin" => 1, ); my %specials = ( "[" => [ "[", "]", "mortal" ], "{" => [ "{", "}", "raceldr" ], "(" => [ "(", ")", "birther" ], "<" => [ "<", ">", "wizard" ], ); my %baselites = ( "sales" => "c1", "nightlife+" => "c2", "bat" => "c3", "wanted" => "c4", "mage" => "c4", ); print << 'EOT'; Logfile
EOT my ($b1, $b2, $qc, $bt); sub tq($) { my ($s) = @_; $s =~ s/&/&/; $s =~ s//>/; $s =~ s/ä/ä/; $s =~ s/ö/ö/; $s =~ s/Ä/Ä/; $s =~ s/Ö/Ö/; return $s; } sub updateData($$$) { my ($ctype, $chn, $name) = @_; $qc = " class=\"c0\""; if (defined($baselites{$chn})) { my $s = $baselites{$chn}; if (substr($s, 0, 1) eq "#") { $qc = " style=\"color: ".$s."\""; } else { $qc = " class=\"".$s."\""; } } if (defined($specials{$ctype})) { $b1 = $specials{$ctype}[0]; $b2 = $specials{$ctype}[1]; $bt = " class=\"".$specials{$ctype}[2]."\""; } else { $bt = $b1 = $b2 = ""; } if (defined($lites{$name})) { $qc = $bt; } } sub printCSpan($$) { print "".tq($_[1])."
\n"; } my $line = 0; while () { chomp; $line++; if (/^ *([A-ZäöåÄÖÅ][A-Za-zäöåÄÖÅ '-]+) ([\(\<\{\[])([a-z+]+)([\]\}\>\)])\: (.*)$/) { # Channel say updateData($2, $3, $1); print "".tq($1)." ".$b1."".tq($3)."".$b2.": ".tq($5)."
\n"; } elsif (/^([\(\<\{\[])([a-z+]+)([\]\}\>\)])\: (.*)$/) { # Channel emotes my ($brace, $chn, $text) = ($1, $2, $4); my $name = ""; if ($text =~ /^([A-Z][a-z]+)(.*)$/) { $name = $1; } updateData($brace, $chn, $name); print "".$b1."".tq($chn)."".$b2.": ".tq($text)."
\n"; } elsif (/^([A-Z][a-z]+) tells ([^\']+) \'(.*)\'$/) { # Someone send tell to you printCSpan("r_tell", $_); } elsif (/^\@([A-Z][a-z]+) .+$/) { # Received emotes printCSpan("r_emote", $_); } elsif (/^([A-Z][a-z]+) tells ([^\']+) \'(.*)\' \(([A-Za-z0-9 :]+)\)$/) { # Offline tells printCSpan("r_offtell", $_); } elsif (/^You tell ([^\']+) \'(.*)\'$/) { # You send tell to one or more people printCSpan("s_tell", $_); } elsif (/^Info: .+$/) { # Inform lines printCSpan("inform", $_); } elsif (/^-- *$/) { print "

\n"; } else { # All other lines print tq($_)."
\n"; } } print << 'EOT';

Valid XHTML 1.0 Strict

EOT