diff options
Diffstat (limited to 'scripts/hide.pl')
| -rw-r--r-- | scripts/hide.pl | 177 | 
1 files changed, 177 insertions, 0 deletions
| diff --git a/scripts/hide.pl b/scripts/hide.pl new file mode 100644 index 0000000..9697df1 --- /dev/null +++ b/scripts/hide.pl @@ -0,0 +1,177 @@ +use strict; +use vars  qw ($VERSION %IRSSI); +use Irssi qw (settings_add_str settings_get_str settings_set_str command_bind command_runsub signal_emit ); + +$VERSION = '0.0.7'; +%IRSSI = ( +    authors     => 'Marcus Rueckert', +    contact     => 'darix@irssi.de', +    name        => 'hide tools', +    description => 'a little interface to irssi\'s activity_hide_* settings', +    license     => 'Public Domain', +    url         => 'http://scripts.irssi.de/', +    changed     => '2002-07-21 06:53:21+0200' +); + + +# +# functions +# + +sub add_item { +    my ($target_type, $data) = @_; +    my $target = target_check ($target_type); +    return 0 unless $target; +    if ($data =~ /^\s*$/ ) { +        print (CRAP "\cBNo target specified!\cB"); +        print (CRAP "\cBUsage:\cB hide $target_type add [$target_type]+"); +    } +    else { +        my $set = settings_get_str($target); +        for my $item ( split (/\s+/, $data) ) { +            if ($set =~ m/^\Q$item\E$/i) { +                print (CRAP "\cBWarning:\cB $item is already in in $target_type hide list.") +            } +            else { +                print (CRAP "$item added to $target_type hide list."); +                $set = join (' ', $set, $item); +            } +        }; +        settings_set_str ($target, $set); +        signal_emit('setup changed'); +    } +    return 1; +} + +sub remove_item { +    my ($target_type, $data) = @_; +    my $target = target_check ($target_type); +    if ( not ( $target )) { return 0 }; +    if ($data =~ /^\s*$/ ) { +        print (CRAP "\cBNo target specified!\cB"); +        print (CRAP "\cBUsage:\cB hide $target_type remove [$target_type]+"); +    } +    else { +        my $set = settings_get_str($target); +        for my $item ( split (/\s+/, $data) ) { +            if ($set =~ s/$item//i) { +                print (CRAP "$item removed from $target_type hide list.") +            } +            else { +                print (CRAP "\cBWarning:\cB $item was not in $target_type hide list.") +            } +        }; +        settings_set_str ($target, $set); +        signal_emit('setup changed'); +    } +    return 1; +} + +sub target_check { +    my ($target_type) = @_; +    my $target = ''; +    if ($target_type eq 'level') { +        $target = 'activity_hide_level'; +    } +    elsif ($target_type eq 'target') { +        $target = 'activity_hide_targets'; +    } +    else { +        print (CLIENTERROR "\cBadd_item: no such target_type $target_type\cB"); +    } +    return $target; +} + +sub print_usage { +    print (CRAP "\cBUsage:\cB"); +    print (CRAP "  hide target [add|remove] [targets]+"); +    print (CRAP "  hide level [add|remove] [levels]+"); +    print (CRAP "  hide usage"); +    print (CRAP "  hide print"); +    print (CRAP "See also: levels"); +}; + +sub print_items { +    my ($target_type) = @_; +    my $delimiter = settings_get_str('hide_print_delimiter'); +    my $target = target_check ($target_type); +    if ( not ( $target )) { return 0 }; +    print ( CRAP "\cB$target_type hide list:\cB$delimiter", join ( $delimiter, sort ( split ( " ", settings_get_str($target) ) ) ) ); +    return 1; +} + +# +# targets +# + +command_bind 'hide target' => sub { +    my ($data, $server, $item) = @_; +    if ($data =~ m/^[(add)|(remove)]/i ) { +        command_runsub ('hide target', $data, $server, $item); +    } +    else { +        print (CRAP "\cBUsage:\cB hide target [add|remove] [targets]+"); +    } +}; + +command_bind 'hide target add' => sub { +    my ($data, $server, $item) = @_; +    add_item ('target', $data); +}; + +command_bind 'hide target remove' => sub { +    my ($data, $server, $item) = @_; +    remove_item ('target', $data); +}; + +# +# levels +# +command_bind 'hide level' => sub { +    my ($data, $server, $item) = @_; +    if ($data =~ m/^[(add)|(remove)]/i ) { +        command_runsub ('hide level', $data, $server, $item); +    } +    else { +        print (CRAP "\cBUsage:\cB hide level [add|remove] [levels]+"); +        print (CRAP "See also: levels"); +    } +}; + +command_bind 'hide level add' => sub { +    my ($data, $server, $item) = @_; +    add_item ('level', $data); +}; + +command_bind 'hide level remove' => sub { +    my ($data, $server, $item) = @_; +    remove_item ('level', $data); +}; + +# +# general +# + +command_bind 'hide' => sub { +    my ($data, $server, $item) = @_; +    if ($data =~ m/^[(target)|(level)|(help)|(usage)|(print)]/i ) { +        command_runsub ('hide', $data, $server, $item); +    } +    else { +        print_usage(); +    } +}; + +command_bind 'hide print' => sub { +    print_items ('level'); +    print_items ('target'); +}; + +command_bind  'hide usage' => sub {  print_usage (); }; +command_bind  'hide help' => sub {  print_usage (); }; + +# +# settings +# + +settings_add_str ( 'script', 'hide_print_delimiter',  "\n - "); | 
