File: awaylog.pl

package info (click to toggle)
weechat-scripts 20071011
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 400 kB
  • ctags: 377
  • sloc: python: 3,470; perl: 1,305; ruby: 270; makefile: 37
file content (68 lines) | stat: -rw-r--r-- 3,502 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
##############################################################################
#                                                                            #
#                        Away highlite loger                                 #
#                                                                            #
# Perl script for WeeChat.                                                   #
#                                                                            #
# Log highlite/private msg when you are away                                 #
#                                                                            #
#                                                                            #
#                                                                            #
# Copyright (C) 2006  Jiri Golembiovsky <golemj@gmail.com>                   #
#                                                                            #
# This program is free software; you can redistribute it and/or              #
# modify it under the terms of the GNU General Public License                #
# as published by the Free Software Foundation; either version 2             #
# of the License, or (at your option) any later version.                     #
#                                                                            #
# This program is distributed in the hope that it will be useful,            #
# but WITHOUT ANY WARRANTY; without even the implied warranty of             #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              #
# GNU General Public License for more details.                               #
#                                                                            #
# You should have received a copy of the GNU General Public License          #
# along with this program; if not, write to the Free Software                #
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,                 #
# MA  02110-1301, USA.                                                       #
#                                                                            #
##############################################################################

weechat::register( "AwayLog", "0.4", "", "Log privmsg/highlite when you are away" );

weechat::add_message_handler( "PRIVMSG", "awaylog" );

sub test_highlight {
  $str = shift;
  $irc_highlight = weechat::get_config( "irc_highlight" );
  @arr = split( ",", $irc_highlight );
  $b = 0;
  $str = lc( $str );
  while( $item = pop( @arr ) ) {
    $item = lc( $item );
    if( substr( $item, 0, 1 ) eq '*' ) { $item = '.' . $item; }
    if( substr( $item, length( $item ) - 1, 1 ) eq '*' ) { $item = substr( $item, , 0, length( $item ) - 1 ) . ".*"; }
    if( $str =~ /$item/ ) { $b++; }
  }
  return $b;
}

sub awaylog {
  if( weechat::get_info( "away", $_[0] ) == 1 ) {
    $i = index( $_[1], " PRIVMSG " );
    $hostmask = substr( $_[1], 0, $i );
    $str = substr( $_[1], $i + 9 );
    $i = index( $str, ":" );
    $channel = substr( $str, 0, $i - 1 );
    $message = substr( $str, $i + 1 );
    if( substr( $hostmask, 0, 1 ) eq  ":" ) {
      $hostmask = substr( $hostmask, 1 );
    }
    ($nick, $host) = split( "!", $hostmask );
    $mynick = weechat::get_info( "nick", $_[0] );
    if( ( index( $message, $mynick ) != -1 ) || ( $channel eq $mynick ) || ( test_highlight( $message ) > 0 ) ) {
      weechat::print( "$channel -- $nick :: $message", "", $_[0] );
    }
  }
  return 0;
}