diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 20:19:02 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 20:19:02 +0000 |
commit | 03929dac2a29664878d2c971648a4fe1fb698462 (patch) | |
tree | 02c5e2b3e006234aa29545f7a93a1ce01b291a8b /scripts/hide.pl | |
parent | Initial commit. (diff) | |
download | irssi-scripts-03929dac2a29664878d2c971648a4fe1fb698462.tar.xz irssi-scripts-03929dac2a29664878d2c971648a4fe1fb698462.zip |
Adding upstream version 20231031.upstream/20231031upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
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 - "); |