From a390abdefb5d741ba4375858a79fbf3eaf30f06d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Jul 2017 04:27:40 +0200 Subject: Use the same emoji data on the frontend and backend (#4284) * Use the same emoji data on the frontend and backend * Move emoji.json to repository, add tests This way you don't need to install node dependencies if you only want to run Ruby code --- app/helpers/emoji_helper.rb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'app/helpers') diff --git a/app/helpers/emoji_helper.rb b/app/helpers/emoji_helper.rb index c1595851f..848c03fce 100644 --- a/app/helpers/emoji_helper.rb +++ b/app/helpers/emoji_helper.rb @@ -1,19 +1,24 @@ # frozen_string_literal: true module EmojiHelper - EMOJI_PATTERN = /(?<=[^[:alnum:]:]|\n|^):([\w+-]+):(?=[^[:alnum:]:]|$)/x - def emojify(text) return text if text.blank? - text.gsub(EMOJI_PATTERN) do |match| - emoji = Emoji.find_by_alias($1) # rubocop:disable Rails/DynamicFindBy,Style/PerlBackrefs + text.gsub(emoji_pattern) do |match| + emoji = Emoji.instance.unicode($1) # rubocop:disable Style/PerlBackrefs if emoji - emoji.raw + 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 -- cgit