<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
# $Id: show.plm,v 2.5 1998/12/20 02:25:19 magicalh Exp $
# copyright (c)2005
package sys_macro;
$_ = 'sys_macro';
sub macro_mode {
local($clientno, $prefix, @params) = @_;
splice(@params, 1, 0, '$#') unless(&is_joined_channel($params[1]) );
return ($prefix, @params);
}
sub macro_privmsg {
local($clientno, $prefix, @params) = @_;
splice(@params, 1, 0, '$#') unless(&is_joined_channel($params[1]) );
return ($prefix, @params);
}
sub is_joined_channel {
local($clientno, $prefix, $chan) = @_;
return (&'channel($chan) && &'exist($'channellist[$clientno], $chan) && $chan eq '$#' )
}
sub cs_privmsg {
local($clientno, $prefix, $cmd, $channel, @params) = @_;
$macro = join(' ', @params);
if( $macro =~ /^\-/ )
{
# マクロとして扱う
@buffer = split( /\s+/, $' );
$sub = "macro\_\L$buffer[0]\E";
return () unless( defined(&$sub) );
($prefix, @buffer) = &$sub($clientno, $prefix, @buffer);
do {
&'c_print($clientno, '', 'NOTICE', $'nick[$clientno], "*** Cancel Command");
return () } unless @buffer;
# マクロ展開
foreach(@buffer)
{
$_ = $channel if( $_ eq '$#' || $_ eq '$chan' );
$_ = $'nick[$clientno] if( $_ eq '$me' );
$_ =~ s/\\c([A-Z])/pack('C*',(unpack('C*',$1)-64))/ieg;
}
&'c_print($clientno, '', 'NOTICE', $'nick[$clientno], "*** /@buffer");
return ($prefix, @buffer);
}
return ($prefix, $cmd, $channel, @params);
}
__END__
--><HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
<TITLE>sys/show.plm</TITLE></HEAD><BODY>
オンラインドキュメント
<HR><H3>名前</H3>
sys/macro.plm - マクロ展開用プラグイン
<HR><H3>説明</H3>
$# とか使う人用<Br>
チャンネルへのPRIVMSGで先頭に 「-」 を付けた発言をコマンドとして扱う
<HR><H3>プロパティ</H3>
<HR><H3>設定例</H3>
<PRE>
+ sys/macro.plm
</PRE>
</BODY></HTML>