Class: ActsAsMentionable::MentionerParser

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mentioner) ⇒ MentionerParser

Returns a new instance of MentionerParser.



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

def initialize mentioner
  @mentioner = mentioner
end

Instance Attribute Details

#mentionerObject (readonly)

Returns the value of attribute mentioner.



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

def mentioner
  @mentioner
end

Instance Method Details

#parse!Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/acts_as_mentionable/mentioner_parser.rb', line 9

def parse!
  mentionables = []
  new_mention_field = mentioner.send(mentioner.class.mention_parsed_field).gsub(template_for_parsing) do |template|
    _delimiter, mentionable_id, mentionable_klass = template.gsub(/[\{,\}]/, '').split('|')
    mentionable = retrieve_mentionable mentionable_klass, mentionable_id
    mentionables << mentionable if mentionable.respond_to?(:mentionable?) && mentionable.mentionable?
    metionable_template mentionable, template
  end
  mentioner.update_column(mentioner.class.mention_field, new_mention_field)
  mentionables
end

#retrieve_mentionable(mentionable_klass, mentionable_id) ⇒ Object



21
22
23
24
25
# File 'lib/acts_as_mentionable/mentioner_parser.rb', line 21

def retrieve_mentionable mentionable_klass, mentionable_id
  mentionable_klass.classify.constantize.find mentionable_id
rescue NameError
  nil
end