summaryrefslogtreecommitdiffstats
path: root/scripts/topicsed.pl
diff options
context:
space:
mode:
authorAlexander Færøy2014-05-31 13:10:46 +0200
committerAlexander Færøy2014-05-31 13:10:46 +0200
commit2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch)
tree1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/topicsed.pl
parent2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff)
downloadscripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/topicsed.pl')
-rw-r--r--scripts/topicsed.pl60
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');