class ActsAsMentionable::MentionerParser
Attributes
mentioner[R]
Public Class Methods
new(mentioner)
click to toggle source
# File lib/acts_as_mentionable/mentioner_parser.rb, line 5 def initialize mentioner @mentioner = mentioner end
Public Instance Methods
parse!()
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
metionable_template(mentionable, template)
click to toggle source
# File lib/acts_as_mentionable/mentioner_parser.rb, line 33 def metionable_template mentionable, template if mentionable.respond_to?(:mentionable?) && mentionable.mentionable? "*U+2063*@#{mentionable.send(mentionable.class.mentionable_field)}*U+2063*" else template end end
template_for_parsing()
click to toggle source
# File lib/acts_as_mentionable/mentioner_parser.rb, line 29 def template_for_parsing /\{@\|\d+\|\w+\}/ end