lib/sup/label.rb in sup-0.7 vs lib/sup/label.rb in sup-0.8

- old
+ new

@@ -5,13 +5,10 @@ ## labels that have special semantics. user will be unable to ## add/remove these via normal label mechanisms. RESERVED_LABELS = [ :starred, :spam, :draft, :unread, :killed, :sent, :deleted, :inbox, :attachment ] - ## labels which it nonetheless makes sense to search for by - LISTABLE_RESERVED_LABELS = [ :starred, :spam, :draft, :sent, :killed, :deleted, :inbox, :attachment ] - ## labels that will typically be hidden from the user HIDDEN_RESERVED_LABELS = [ :starred, :unread, :attachment ] def initialize fn @fn = fn @@ -20,35 +17,38 @@ IO.readlines(fn).map { |x| x.chomp.intern } else [] end @labels = {} + @new_labels = {} @modified = false labels.each { |t| @labels[t] = true } self.class.i_am_the_instance self end - ## all listable (just user-defined at the moment) labels, ordered + def new_label? l; @new_labels.include?(l) end + + ## all labels user-defined and system, ordered ## nicely and converted to pretty strings. use #label_for to recover ## the original label. - def listable_labels + def all_labels ## uniq's only necessary here because of certain upgrade issues - (LISTABLE_RESERVED_LABELS + @labels.keys).uniq + (RESERVED_LABELS + @labels.keys).uniq end - ## all apply-able (user-defined and system listable) labels, ordered + ## all user-defined labels, ordered ## nicely and converted to pretty strings. use #label_for to recover ## the original label. - def applyable_labels + def user_defined_labels @labels.keys end ## reverse the label->string mapping, for convenience! def string_for l if RESERVED_LABELS.include? l - l.to_s.ucfirst + l.to_s.capitalize else l.to_s end end @@ -64,22 +64,24 @@ def << t t = t.intern unless t.is_a? Symbol unless @labels.member?(t) || RESERVED_LABELS.member?(t) @labels[t] = true + @new_labels[t] = true @modified = true end end def delete t - if @labels.delete t + if @labels.delete(t) @modified = true end end def save return unless @modified File.open(@fn, "w") { |f| f.puts @labels.keys.sort_by { |l| l.to_s } } + @new_labels = {} end end end