class Tag::Store
Public Class Methods
models()
click to toggle source
# File lib/tag/store.rb, line 6 def self.models Dir["#{Tag.home}/*.yml"].map {|file| file[%r{([^/]+).yml$}, 1] }.sort end
new(model = nil)
click to toggle source
# File lib/tag/store.rb, line 10 def initialize(model = nil) model ||= ENV['TAG_MODEL'] || 'default' @file = File.join(Tag.home, "#{model}.yml") @hash = File.exists?(@file) ? YAML.load_file(@file) : {} end
Public Instance Methods
items()
click to toggle source
# File lib/tag/store.rb, line 68 def items @hash.each_with_object({}) do |(tag,items),acc| items.each do |item| (acc[item] ||= []) << tag end end.sort_by {|e| e[0] }.map do |k,v| "#{k}\t#{v.uniq.join(', ')}" end end
list(tag)
click to toggle source
# File lib/tag/store.rb, line 48 def list(tag) @hash[tag] ||= [] @hash[tag] end
multi_remove_tag(items, tags)
click to toggle source
# File lib/tag/store.rb, line 34 def multi_remove_tag(items, tags) tags.each do |tag| items.each do |item| remove_tag(item, tag) end end save end
multi_tag(items, tags)
click to toggle source
# File lib/tag/store.rb, line 25 def multi_tag(items, tags) tags.each do |tag| items.each do |item| tag(item, tag) end end save end
remove_tag(item, tag)
click to toggle source
# File lib/tag/store.rb, line 43 def remove_tag(item, tag) @hash[tag] ||= [] @hash[tag].delete item end
save()
click to toggle source
# File lib/tag/store.rb, line 16 def save File.open(@file, 'w') {|f| f.write(@hash.to_yaml) } end
tag(item, tag)
click to toggle source
# File lib/tag/store.rb, line 20 def tag(item, tag) @hash[tag] ||= [] @hash[tag] << item end
tree()
click to toggle source
# File lib/tag/store.rb, line 57 def tree list_tags.map {|tag| ["#{tag}", list(tag).map {|t| " #{t}" }] }.flatten end