X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fsup%2Flabel.rb;h=67474c2b79ed3393aa3321e458fdb4675225dfe1;hb=3f08a0191a824c5d6e7731a3d25106d1a0c3931e;hp=e63db9ed6d5790714b40c9d268fab432f45d0325;hpb=f7daa71b08043a5cfad38ddcc259f6ff80445129;p=sup diff --git a/lib/sup/label.rb b/lib/sup/label.rb index e63db9e..67474c2 100644 --- a/lib/sup/label.rb +++ b/lib/sup/label.rb @@ -19,12 +19,13 @@ class LabelManager [] end @labels = {} + @new_labels = {} @modified = false labels.each { |t| @labels[t] = true } - - self.class.i_am_the_instance self end + 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. @@ -43,7 +44,7 @@ class LabelManager ## 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 @@ -58,17 +59,18 @@ class LabelManager l end end - + def << t - t = t.intern unless t.is_a? Symbol + raise ArgumentError, "expecting a symbol" 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 @@ -76,6 +78,7 @@ class LabelManager def save return unless @modified File.open(@fn, "w") { |f| f.puts @labels.keys.sort_by { |l| l.to_s } } + @new_labels = {} end end