module Redwood
+class InvalidAliasError < StandardError; end
+
class ContactManager
include Singleton
def contacts; @p2a.keys; end
def set_contact person, aalias
+ raise InvalidAliasError unless valid_alias? aalias
+
if(pold = @a2p[aalias]) && (pold != person)
drop_contact pold
end
def contact_for aalias; @a2p[aalias]; end
def alias_for person; @p2a[person]; end
def is_contact? person; @p2a.member? person; end
+
+ def valid_alias? a
+ a =~ /^\S+$/
+ end
+
def save
File.open(@fn, "w") do |f|
@p2a.each do |p, a|
if a.empty?
ContactManager.drop_contact p
else
- ContactManager.set_contact p, a
+ begin
+ ContactManager.set_contact p, a
+ rescue InvalidAliasError
+ BufferManager.flash "Error: nickname cannot contain spaces."
+ end
end
end
end