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
|