class Redwood::LabelManager
Constants
- HIDDEN_RESERVED_LABELS
labels that will typically be hidden from the user
- RESERVED_LABELS
labels that have special semantics. user will be unable to add/remove these via normal label mechanisms.
Public Class Methods
new(fn)
click to toggle source
# File lib/sup/label.rb, line 15 def initialize fn @fn = fn labels = if File.exist? fn IO.readlines(fn).map { |x| x.chomp.intern } else [] end @labels = {} @new_labels = {} @modified = false labels.each { |t| @labels[t] = true } end
Public Instance Methods
<<(t)
click to toggle source
# File lib/sup/label.rb, line 65 def << t 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
all_labels()
click to toggle source
all labels user-defined and system, ordered nicely and converted to pretty strings. use label_for to recover the original label.
# File lib/sup/label.rb, line 34 def all_labels ## uniq's only necessary here because of certain upgrade issues (RESERVED_LABELS + @labels.keys).uniq end
delete(t)
click to toggle source
# File lib/sup/label.rb, line 74 def delete t if @labels.delete(t) @modified = true end end
label_for(s)
click to toggle source
# File lib/sup/label.rb, line 55 def label_for s l = s.intern l2 = s.downcase.intern if RESERVED_LABELS.include? l2 l2 else l end end
new_label?(l;)
click to toggle source
# File lib/sup/label.rb, line 29 def new_label? l; @new_labels.include?(l) end
save()
click to toggle source
# File lib/sup/label.rb, line 80 def save return unless @modified File.open(@fn, "w:UTF-8") { |f| f.puts @labels.keys.sort_by { |l| l.to_s } } @new_labels = {} end
string_for(l)
click to toggle source
reverse the label->string mapping, for convenience!
# File lib/sup/label.rb, line 47 def string_for l if RESERVED_LABELS.include? l l.to_s.capitalize else l.to_s end end
user_defined_labels()
click to toggle source
all user-defined labels, ordered nicely and converted to pretty strings. use label_for to recover the original label.
# File lib/sup/label.rb, line 42 def user_defined_labels @labels.keys end