summaryrefslogtreecommitdiffstats
path: root/modules/Topic.rb
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-01-02 05:06:04 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-01-02 05:06:04 +0100
commit4b3975fc0a495ea18ae3bcaf0fbf5ee2c924ed8c (patch)
tree14fdf5784b38489de17f57387d3f4b5780a8f272 /modules/Topic.rb
parent58649c9843707c5d8b4211d07535fcf51421ebec (diff)
downloadlain-4b3975fc0a495ea18ae3bcaf0fbf5ee2c924ed8c.tar
lain-4b3975fc0a495ea18ae3bcaf0fbf5ee2c924ed8c.zip
Adjust strings.
Diffstat (limited to 'modules/Topic.rb')
-rw-r--r--modules/Topic.rb41
1 files changed, 26 insertions, 15 deletions
diff --git a/modules/Topic.rb b/modules/Topic.rb
index 14bd9c4..fa2291a 100644
--- a/modules/Topic.rb
+++ b/modules/Topic.rb
@@ -13,16 +13,16 @@ module Lain
show_topic(muc, message)
elsif /\A!topic\s+a(?:dd)?\s+(.+)\Z/ =~ message.body
add_topic(muc, message, $~[1].strip)
- elsif /\A!topic\s+d(?:el(?:ete)?)?\s+(\d+)\Z/ =~ message.body
- del_topic(muc, message, $~[1].to_i)
+ elsif /\A!topic\s+d(?:el(?:ete)?)?\s+([[:xdigit:]]+)\Z/ =~ message.body
+ del_topic(muc, message, $~[1].to_i(16))
end
end
def commands
{
- '!topic [s[how]]' => 'show topics (with IDs)',
- '!topic a[dd] <topic>' => 'add a topic to the topic line',
- '!topic d[el[ete]] <ID>' => 'remove topic <ID>'
+ '!topic [s[how]]' => 'show topics (with indices)',
+ '!topic a[dd] <topic>' => 'add a topic',
+ '!topic d[el[ete]] <index>' => 'remove topic <index>'
}
end
@@ -40,36 +40,47 @@ module Lain
end
def topic_list(topic)
- topic.each_with_index.map { |t, i| "[#{i}] #{t}" }.join("\n")
+ topic.each_with_index.map { |t, i| "[#{'%02x' % i}] #{t}" }.join("\n")
end
def show_topic(muc, message)
topic = current_topic muc
if topic.empty?
- muc.send(Jabber::Message.new(muc.room, "No topic set."))
+ muc.say "\nTOPIC EMPTY"
return
end
- muc.send(Jabber::Message.new(muc.room, "Current topics:\n" + topic_list(topic)))
+ muc.say("\nBEGIN TOPIC LIST\n" + topic_list(topic) + "\nEND TOPIC LIST")
end
def add_topic(muc, message, text)
topic = current_topic muc
- topic.unshift text
- set_topic(muc, topic)
+ if text.empty?
+ pre = "\nERROR: No topic given."
+ else
+ topic.unshift text
+ set_topic(muc, topic)
+ pre = "\nSUCCESS"
+ end
- muc.send(Jabber::Message.new(muc.room, "New topics:\n" + topic_list(topic)))
+ muc.say(pre + "\n\nBEGIN TOPIC LIST\n" + topic_list(topic) + "\nEND TOPIC LIST")
end
- def del_topic(muc, message, id)
+ def del_topic(muc, message, index)
topic = current_topic muc
begin
- topic.delete_at id
+ deleted = topic.delete_at index
rescue
+ deleted = nil
+ end
+ if deleted.nil?
+ pre = "\nERROR: Invalid index [#{'%02x' % index}]."
+ else
+ set_topic(muc, topic)
+ pre = "\nSUCCESS"
end
- set_topic(muc, topic)
- muc.send(Jabber::Message.new(muc.room, "New topics:\n" + topic_list(topic)))
+ muc.say(pre + "\n\nBEGIN TOPIC LIST\n" + topic_list(topic) + "\nEND TOPIC LIST")
end
end
end