class ActsAsMentionable::MentionablesManipulator

Attributes

current_set[R]
previous_set[R]

Public Class Methods

new(mentionables) click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 5
def initialize mentionables
  @previous_set = mentionables.to_set
  @current_set = mentionables.to_set
end

Public Instance Methods

add(*mentionables) click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 10
def add *mentionables
  current_set.merge prepare_mentionables(mentionables)
  self
end
added() click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 44
def added
  (current_set - previous_set).to_a
end
changed?() click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 40
def changed?
  current_set != previous_set
end
changes() click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 30
def changes
  {
    changed: changed?,
    added: added,
    removed: removed,
    previous: previous,
    current: current
  }
end
current() click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 56
def current
  current_set.to_a
end
fix_changes!() click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 25
def fix_changes!
  previous_set.replace current_set
  self
end
previous() click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 52
def previous
  previous_set.to_a
end
remove(*mentionables) click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 15
def remove *mentionables
  current_set.subtract prepare_mentionables(mentionables)
  self
end
removed() click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 48
def removed
  (previous_set - current_set).to_a
end
replace(*mentionables) click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 20
def replace *mentionables
  current_set.replace prepare_mentionables(mentionables)
  self
end

Private Instance Methods

prepare_mentionables(mentionables) click to toggle source
# File lib/acts_as_mentionable/mentionables_manipulator.rb, line 62
def prepare_mentionables mentionables
  mentionables.flatten
end