diff -urN tiarra-20030920/ChangeLog tiarra-20030922/ChangeLog --- tiarra-20030920/ChangeLog 2003-09-20 20:11:20.000000000 +0900 +++ tiarra-20030922/ChangeLog 2003-09-23 04:14:41.000000000 +0900 @@ -1,3 +1,20 @@ +2003-09-23 phonohawk + + * main/Mask.pm: + メモリを食い過ぎるので、コンパイル済み正規表現の + キャッシュ保存数を150個に減少。 + + * main/PersonalInfo.pm: + メソッドinfoに引数として真偽値を渡した時、 + それが真であればnickとnameとhostの配列を返す。 + wantarrayにすると互換性が失われるため。 + + * main/PersonalInfo.pm: + 動作速度向上のため、AUTOLOADを廃止。 + + * module/Log/Channel.pm: + configのcommandを小文字で書くとログが取られない問題を解決。 + 2003-09-20 phonohawk * main/ChannelInfo.pm, main/IRCMessage.pm, @@ -840,7 +857,7 @@ * これ以前のログは書いていません。 -# Id: $Id: ChangeLog,v 1.99 2003/09/20 11:06:20 admin Exp $ +# Id: $Id: ChangeLog,v 1.100 2003/09/22 18:02:06 admin Exp $ # Author: $Author: admin $ -# Date: $Date: 2003/09/20 11:06:20 $ -# Revision: $Revision: 1.99 $ +# Date: $Date: 2003/09/22 18:02:06 $ +# Revision: $Revision: 1.100 $ diff -urN tiarra-20030920/main/Mask.pm tiarra-20030922/main/Mask.pm --- tiarra-20030920/main/Mask.pm 2003-09-20 20:11:20.000000000 +0900 +++ tiarra-20030922/main/Mask.pm 2003-09-23 04:14:42.000000000 +0900 @@ -1,5 +1,5 @@ # ----------------------------------------------------------------------------- -# $Id: Mask.pm,v 1.11 2003/09/20 11:06:19 admin Exp $ +# $Id: Mask.pm,v 1.12 2003/09/22 18:02:06 admin Exp $ # ----------------------------------------------------------------------------- # $Clovery: tiarra/main/Mask.pm,v 1.10 2003/07/24 03:08:26 topia Exp $ package Mask; @@ -223,7 +223,7 @@ } # support functions -my $cache_limit = 300; +my $cache_limit = 150; my @cache_keys; my %cache_table; sub make_regex { diff -urN tiarra-20030920/main/PersonInChannel.pm tiarra-20030922/main/PersonInChannel.pm --- tiarra-20030920/main/PersonInChannel.pm 2003-09-20 20:11:20.000000000 +0900 +++ tiarra-20030922/main/PersonInChannel.pm 2003-09-23 04:14:41.000000000 +0900 @@ -1,8 +1,8 @@ # ----------------------------------------------------------------------------- -# $Id: PersonInChannel.pm,v 1.5 2003/09/20 11:06:19 admin Exp $ +# $Id: PersonInChannel.pm,v 1.6 2003/09/22 18:02:06 admin Exp $ # -*- cperl -*- # ----------------------------------------------------------------------------- -# $Id: PersonInChannel.pm,v 1.5 2003/09/20 11:06:19 admin Exp $ +# $Id: PersonInChannel.pm,v 1.6 2003/09/22 18:02:06 admin Exp $ # ----------------------------------------------------------------------------- # なるとや発言権を持っているかどうかの情報とPersonalInfoのセット。 # ----------------------------------------------------------------------------- @@ -33,7 +33,8 @@ } sub info { - shift->[PERSON]->info; + my ($this, $wantarray) = @_; + shift->[PERSON]->info($wantarray); } sub has_o { diff -urN tiarra-20030920/main/PersonalInfo.pm tiarra-20030922/main/PersonalInfo.pm --- tiarra-20030920/main/PersonalInfo.pm 2003-09-20 20:11:21.000000000 +0900 +++ tiarra-20030922/main/PersonalInfo.pm 2003-09-23 04:14:42.000000000 +0900 @@ -1,5 +1,5 @@ # ----------------------------------------------------------------------------- -# $Id: PersonalInfo.pm,v 1.6 2003/09/20 11:06:19 admin Exp $ +# $Id: PersonalInfo.pm,v 1.7 2003/09/22 18:02:06 admin Exp $ # ----------------------------------------------------------------------------- # nick,username,userhost等を持つ個人情報保持クラス。 # このオブジェクトはIrcIO::Serverが管理する。 @@ -27,7 +27,7 @@ unless (defined $args{Nick}) { croak "PersonalInfo must be created with Nick parameter.\n"; } - + my $def_or_null = sub{ defined $_[0] ? $_[0] : '' }; my $obj = bless [] => $class; $obj->[NICK] = $def_or_null->($args{Nick}); @@ -35,37 +35,32 @@ $obj->[USERHOST] = $def_or_null->($args{UserHost}); $obj->[REALNAME] = $def_or_null->($args{RealName}); $obj->[SERVER] = $def_or_null->($args{Server}); - + $obj; } sub info { - my ($this) = @_; - sprintf('%s!%s@%s',$this->nick||'',$this->username||'',$this->userhost||''); + my ($this, $wantarray) = @_; + $wantarray ? + @$this[NICK, USERNAME, USERHOST] : + sprintf('%s!%s@%s', $this->nick, $this->username, $this->userhost); } -sub AUTOLOAD { - my ($this, $option) = @_; - (my $key = $AUTOLOAD) =~ s/^.*?:://g; - - if ($key eq 'DESTROY') { - return; - } - - my $idx; - my $constname = uc($key); - if ($this->can($constname)) { - $idx = $this->$constname; +BEGIN { + foreach my $constname (qw/NICK USERNAME USERHOST REALNAME SERVER/) { + my $methodname = lc $constname; + eval qq{ + sub $methodname { + my (\$this, \$new) = \@_; + + if (defined \$new) { + \$this->[$constname] = \$new; + } + \$this->[$constname]; + } + }; } - - if (!defined $idx or !defined $this->[$idx]) { - croak "PersonalInfo doesn't have the information $key.\n"; - } - - if (defined $option) { - $this->[$idx] = $option; - } - return $this->[$idx]; } + 1; diff -urN tiarra-20030920/module/Log/Channel.pm tiarra-20030922/module/Log/Channel.pm --- tiarra-20030920/module/Log/Channel.pm 2003-09-20 20:11:21.000000000 +0900 +++ tiarra-20030922/module/Log/Channel.pm 2003-09-23 04:14:42.000000000 +0900 @@ -1,5 +1,5 @@ # ----------------------------------------------------------------------------- -# $Id: Channel.pm,v 1.9 2003/05/15 12:11:11 admin Exp $ +# $Id: Channel.pm,v 1.10 2003/09/22 18:02:05 admin Exp $ # ----------------------------------------------------------------------------- # Local: $Clovery: tiarra/module/Log/Channel.pm,v 1.4 2003/02/11 07:53:40 topia Exp $ package Log::Channel; @@ -99,7 +99,7 @@ } # Log::Channel/commandにマッチするか? - if (Mask::match($this->config->command || '*',$message->command)) { + if (Mask::match(lc($this->config->command || '*'),lc($message->command))) { $this->{logger}->log($message,$sender); }