Sha256: adb863f780383290c79865753f68b7915e9f6455c60a0fa4ba0269e89d9a7954
Contents?: true
Size: 1.55 KB
Versions: 1
Compression:
Stored size: 1.55 KB
Contents
module Redwood class LabelManager include Singleton ## 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 ] ## labels which it nonetheless makes sense to search for by LISTABLE_RESERVED_LABELS = [ :starred, :spam, :draft, :sent, :killed, :deleted ] ## labels that will never be displayed to the user HIDDEN_RESERVED_LABELS = [ :starred, :unread ] def initialize fn @fn = fn labels = if File.exists? fn IO.readlines(fn).map { |x| x.chomp.intern } else [] end @labels = {} @modified = false labels.each { |t| @labels[t] = true } self.class.i_am_the_instance self end ## all listable (user-defined and system listable) labels, ordered ## nicely and converted to pretty strings. use #label_for to recover ## the original label. def listable_label_strings LISTABLE_RESERVED_LABELS.sort_by { |l| l.to_s }.map { |l| l.to_s.ucfirst } + @labels.keys.map { |l| l.to_s }.sort end ## reverse the label->string mapping, for convenience! def label_for string string.downcase.intern end def << t t = t.intern unless t.is_a? Symbol unless @labels.member?(t) || RESERVED_LABELS.member?(t) @labels[t] = true @modified = true end end def delete t if @labels.delete t @modified = true end end def save return unless @modified File.open(@fn, "w") { |f| f.puts @labels.keys } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sup-0.1 | lib/sup/label.rb |