Class: ActsAsMentionable::MentionablesManipulator

Inherits:
Object
  • Object
show all
Defined in:
lib/acts_as_mentionable/mentionables_manipulator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mentionables) ⇒ MentionablesManipulator

Returns a new instance of MentionablesManipulator.



5
6
7
8
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 5

def initialize mentionables
  @previous_set = mentionables.to_set
  @current_set = mentionables.to_set
end

Instance Attribute Details

#current_setObject (readonly)

Returns the value of attribute current_set.



3
4
5
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 3

def current_set
  @current_set
end

#previous_setObject (readonly)

Returns the value of attribute previous_set.



3
4
5
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 3

def previous_set
  @previous_set
end

Instance Method Details

#add(*mentionables) ⇒ Object



10
11
12
13
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 10

def add *mentionables
  current_set.merge prepare_mentionables(mentionables)
  self
end

#addedObject



44
45
46
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 44

def added
  (current_set - previous_set).to_a
end

#changed?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 40

def changed?
  current_set != previous_set
end

#changesObject



30
31
32
33
34
35
36
37
38
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 30

def changes
  {
    changed: changed?,
    added: added,
    removed: removed,
    previous: previous,
    current: current
  }
end

#currentObject



56
57
58
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 56

def current
  current_set.to_a
end

#fix_changes!Object



25
26
27
28
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 25

def fix_changes!
  previous_set.replace current_set
  self
end

#previousObject



52
53
54
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 52

def previous
  previous_set.to_a
end

#remove(*mentionables) ⇒ Object



15
16
17
18
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 15

def remove *mentionables
  current_set.subtract prepare_mentionables(mentionables)
  self
end

#removedObject



48
49
50
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 48

def removed
  (previous_set - current_set).to_a
end

#replace(*mentionables) ⇒ Object



20
21
22
23
# File 'lib/acts_as_mentionable/mentionables_manipulator.rb', line 20

def replace *mentionables
  current_set.replace prepare_mentionables(mentionables)
  self
end