You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
489 B
25 lines
489 B
# 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
|