So that hook authors can't destroy their index by adding a string as a label.
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
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