25 lines
		
	
	
		
			489 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			489 B
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module EmojiHelper
 | 
						|
  def emojify(text)
 | 
						|
    return text if text.blank?
 | 
						|
 | 
						|
    text.gsub(emoji_pattern) do |match|
 | 
						|
      emoji = Emoji.instance.unicode($1) # rubocop:disable Style/PerlBackrefs
 | 
						|
 | 
						|
      if emoji
 | 
						|
        emoji
 | 
						|
      else
 | 
						|
        match
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def emoji_pattern
 | 
						|
    @emoji_pattern ||=
 | 
						|
      /(?<=[^[:alnum:]:]|\n|^)
 | 
						|
      (#{Emoji.instance.names.map { |name| Regexp.escape(name) }.join('|')})
 | 
						|
      (?=[^[:alnum:]:]|$)/x
 | 
						|
  end
 | 
						|
end
 |