diff options
| author | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
|---|---|---|
| committer | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
| commit | 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch) | |
| tree | 1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/topicsed.pl | |
| parent | 2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff) | |
| download | scripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2 | |
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/topicsed.pl')
| -rw-r--r-- | scripts/topicsed.pl | 60 | 
1 files changed, 60 insertions, 0 deletions
| diff --git a/scripts/topicsed.pl b/scripts/topicsed.pl new file mode 100644 index 0000000..d56ed3d --- /dev/null +++ b/scripts/topicsed.pl @@ -0,0 +1,60 @@ +# +# Topicsed edits channel topics by perl regexps via the command /topicsed. +# +# Thanks to Mikael Magnusson for the idea and patch to implement a +# preview functionality. ;] +# + +use Irssi; + +use vars %IRSSI; +%IRSSI = ( +	authors		=> "Gabor Nyeki", +	contact		=> "bigmac\@vim.hu", +	name		=> "topicsed", +	description	=> "editing channel topics by regexps", +	license		=> "public domain", +	changed		=> "Fri Aug 13 19:27:38 CEST 2004" +); + + +sub topicsed { +	my ($regexp, $server, $winit) = @_; + +	my $preview = 0; +	if ($regexp =~ m/^-p(review|) ?/) { +		$preview = 1; +		$regexp =~ s/^-p\w* ?//; +	} + +	unless ($regexp) { +		Irssi::print("Usage: /topicsed [-p[review]] <regexp>"); +		return; +	} +	return if (!$server || !$server->{connected} || +		!$winit || $winit->{type} != 'CHANNEL'); + +	my $topic = $winit->{topic}; +	my $x = $topic; + +	unless (eval "\$x =~ $regexp") { +		Irssi::print("topicsed:error: An error occured with your regexp."); +		return; +	} + +	if ($x eq $topic) { +		Irssi::print("topicsed:error: The topic wouldn't be changed."); +		return; +	} elsif ($x eq "") { +		Irssi::print("topicsed:error: Edited topic is empty;  try '/topic -delete' instead."); +		return; +	} + +	if ($preview) { +		Irssi::print("topicsed: Edited topic for $winit->{name}: $x"); +	} else { +		$server->send_raw("TOPIC $winit->{name} :$x"); +	} +} + +Irssi::command_bind('topicsed', 'topicsed'); | 
