Sha256: 8c980865942e49580990ff912a3711f447cde3296efbf7ab53702222e8a723a7

Contents?: true

Size: 617 Bytes

Versions: 15

Compression:

Stored size: 617 Bytes

Contents

# frozen_string_literal: true

require "forwardable"

class Gutentag::Persistence
  extend Forwardable

  attr_writer :tagger

  def initialize(change_state)
    @change_state = change_state
  end

  def persist
    remove_old
    add_new
  end

  private

  attr_reader :change_state

  def_delegators :change_state, :taggable, :added, :removed

  def add_new
    added.each do |name|
      taggable.tags << tagger.find_or_create(name)
    end
  end

  def remove_old
    removed.each do |name|
      taggable.tags.delete tagger.find_by_name(name)
    end
  end

  def tagger
    @tagger ||= Gutentag::Tag
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
gutentag-2.6.2 lib/gutentag/persistence.rb
gutentag-2.6.1 lib/gutentag/persistence.rb
gutentag-2.6.0 lib/gutentag/persistence.rb
gutentag-2.5.4 lib/gutentag/persistence.rb
gutentag-2.5.3 lib/gutentag/persistence.rb
gutentag-2.5.2 lib/gutentag/persistence.rb
gutentag-2.5.1 lib/gutentag/persistence.rb
gutentag-2.5.0 lib/gutentag/persistence.rb
gutentag-2.4.1 lib/gutentag/persistence.rb
gutentag-2.4.0 lib/gutentag/persistence.rb
gutentag-2.3.2 lib/gutentag/persistence.rb
gutentag-2.3.1 lib/gutentag/persistence.rb
gutentag-2.3.0 lib/gutentag/persistence.rb
gutentag-2.2.1 lib/gutentag/persistence.rb
gutentag-2.2.0 lib/gutentag/persistence.rb