X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=lib%2Fsup%2Flabel.rb;h=67474c2b79ed3393aa3321e458fdb4675225dfe1;hb=46f8e5116f38c8248fdc8553db18f8d2132a1f46;hp=8902dda5757584c4c9dee553ae4146e415544545;hpb=697763248dd4fdbaaf2d0702358e67cc3d45f37e;p=sup diff --git a/lib/sup/label.rb b/lib/sup/label.rb index 8902dda..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. @@ -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