3 # $Id: IrcBuffer.pm,v 1.1 2008-01-08 05:52:14 morimoto Exp $
4 # $Source: /home/ishikawa/work/keitairc/tmp/keitairc/lib/Keitairc/IrcBuffer.pm,v $
6 # Copyright (c) 2008 Jun Morimoto <morimoto@mrmt.net>
7 # This program is covered by the GNU General Public License 2
9 package Keitairc::IrcBuffer;
13 ################################################################
19 $me->{history} = $arg->{history};
21 # join ¤·¤Æ¤¤¤ë¥Á¥ã¥Í¥ë¤Î̾¾Î¤òµÏ¿¤¹¤ë¥Ï¥Ã¥·¥å (jis)
24 # join ¤·¤Æ¤¤¤ë¥Á¥ã¥Í¥ë¤Î̾¾Î¤òµÏ¿¤¹¤ë¥Ï¥Ã¥·¥å (jis)
27 # ¥Á¥ã¥Í¥ë¤Î²ñÏÃÆâÍƤòµÏ¿¤¹¤ë¥Ï¥Ã¥·¥å (euc-jp)
31 # ³Æ¥Á¥ã¥Í¥ë¤ÎºÇ½ª¥¢¥¯¥»¥¹»þ¹ï¡¢ºÇ¿·È¯¸À»þ¹ï
33 # ³Æ¥Á¥ã¥Í¥ë¤Î̤ÆɹԿô
34 $me->{unread_lines} = {};
37 $me->{message_added} = 0;
42 ################################################################
46 $me->mtime($b) <=> $me->mtime($a)
47 } keys %{$me->{name}};
50 ################################################################
52 my ($sec, $min, $hour) = localtime(time);
53 sprintf('%02d:%02d', $hour, $min);
56 ################################################################
63 ################################################################
65 my($me, $channel) = @_;
66 my $cc = canon_name($channel);
67 delete $me->{name}->{$cc};
70 ################################################################
72 my($me, $channel) = @_;
73 my $cc = canon_name($channel);
74 $me->{name}->{$cc} = $channel;
77 ################################################################
79 my($me, $channel) = @_;
80 my $cc = canon_name($channel);
84 ################################################################
86 my($me, $channel) = @_;
87 my $cc = canon_name($channel);
91 ################################################################
95 $me->{message_added} = $v;
100 ################################################################
102 my($me, $channel) = @_;
103 my $cc = canon_name($channel);
104 $me->{unread_lines}->{$cc};
107 ################################################################
109 my($me, $channel) = @_;
110 my $cc = canon_name($channel);
111 $me->{unread}->{$cc};
114 ################################################################
116 my($me, $channel) = @_;
117 my $cc = canon_name($channel);
118 $me->{unread}->{$cc} = '';
119 $me->{unread_lines}->{$cc} = 0;
122 ################################################################
124 my($me, $channel, $topic) = @_;
125 my $cc = canon_name($channel);
127 $me->{topic}->{$cc} = $topic;
132 ################################################################
134 my($me, $channel) = @_;
135 my $cc = canon_name($channel);
136 $me->{buffer}->{$cc};
139 ################################################################
140 # °ú¿ô¤Î $msg ¤Ï euc-jp, $channel ¤Ï jis
142 my($me, $channel, $message, $who) = @_;
143 my $cc = canon_name($channel);
146 $message = sprintf('%s %s> %s', now(), $who, $message);
148 $message = sprintf('%s %s', now(), $message);
152 my @tmp = split("\n", $me->{buffer}->{$cc});
155 if(@tmp > $me->{history}){
156 $me->{buffer}->{$cc} =
157 CORE::join("\n", splice(@tmp, -$me->{history}));
159 $me->{buffer}->{$cc} = CORE::join("\n", @tmp);
164 my @tmp = split("\n", $me->{unread}->{$cc});
167 if(@tmp > $me->{history}){
168 $me->{unread}->{$cc} =
169 CORE::join("\n", @tmp[1 .. $me->{history}]);
171 $me->{unread}->{$cc} = CORE::join("\n", @tmp);
174 $me->{unread_lines}->{$cc} = scalar(@tmp);
177 if($me->{unread_lines}->{$cc} > $me->{history}){
178 $me->{unread_lines}->{$cc} = $me->{history};
181 $me->{mtime}->{$cc} = time;
184 ################################################################
185 # ¥Á¥ã¥Í¥ë̾¾Î¤òû¤«¤¯¤¹¤ë
186 sub compact_channel_name{
190 $name = decode('jis', $name);
192 # #name:*.jp ¤ò %name ¤Ë
193 if($name =~ s/:\*\.jp$//){
197 # ËöÈø¤ÎñÆȤΠ@ ¤Ï¼è¤ë (plum¥×¥é¥°¥¤¥ó¤Îmulticast.plmÂкö)
200 encode('shiftjis', $name);
203 ################################################################