Sha256: 6574fd6df0356a0702b7a54b1d5a4970dcf745263547380311f359827fca4188

Contents?: true

Size: 790 Bytes

Versions: 1

Compression:

Stored size: 790 Bytes

Contents

class TagBat::TagNames
  include Enumerable

  attr_reader :taggable

  def self.new_with_names(taggable, names)
    tag_names = new(taggable)
    tag_names.clear
    names.each { |name| tag_names << name }
    tag_names
  end

  def clear
    taggable.tags.clear
  end

  def initialize(taggable)
    @taggable = taggable
  end

  def to_a 
    taggable.tags.collect &:name
  end

  def <<(name)
    tag = TagBat::Tag.where(name: name).first || TagBat::Tag.create(name: name)
    taggable.tags << tag
  end

  def delete(name)
    taggable.tags.delete TagBat::Tag.where(name: name).first
  end

  def +(array)
    array.each { |name| self.<< name }
    self
  end

  def -(array)
    array.each { |name| self.delete name }
    self
  end

  def each(&block)
    to_a.each &block
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tag_bat-0.1.0 lib/tag_bat/tag_names.rb