]> git.cworth.org Git - sup/commitdiff
coerce Message#add_label (and others) arguments to symbols
authorWilliam Morgan <wmorgan-sup@masanjin.net>
Sun, 6 Sep 2009 14:56:20 +0000 (10:56 -0400)
committerWilliam Morgan <wmorgan-sup@masanjin.net>
Sun, 6 Sep 2009 14:59:18 +0000 (10:59 -0400)
So that hook authors can't destroy their index by adding a string as a label.

lib/sup/message.rb

index f640011e594efd1581b1dc5c4140af0d2b3508c7..4a7d761583e93521ed18fc057a503a92918cc639 100644 (file)
@@ -191,11 +191,13 @@ class Message
 
   def has_label? t; @labels.member? t; end
   def add_label l
+    l = l.to_sym
     return if @labels.member? l
     @labels << l
     @dirty = true
   end
   def remove_label l
+    l = l.to_sym
     return unless @labels.member? l
     @labels.delete l
     @dirty = true
@@ -207,6 +209,7 @@ class Message
 
   def labels= l
     raise ArgumentError, "not a set" unless l.is_a?(Set)
+    raise ArgumentError, "not a set of labels" unless l.all? { |ll| ll.is_a?(Symbol) }
     return if @labels == l
     @labels = l
     @dirty = true