Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan H <hanjoh-2@student.ltu.se>2016-10-11 17:27:09 +0300
committerhenrik <henthe-5@student.ltu.se>2016-10-13 14:18:30 +0300
commitae95118a4ff3242a210d93e57370f6ef400db886 (patch)
treeba4b96ecadc5255901f8acf85ae83d6236dc32fd /lib/banzai
parent969286fce0e31b1e2069570c98c9b9efa8cfdf8b (diff)
Convert UTF-8 Emoji to Gitlab emoji
Diffstat (limited to 'lib/banzai')
-rw-r--r--lib/banzai/filter/emoji_filter.rb39
1 files changed, 21 insertions, 18 deletions
diff --git a/lib/banzai/filter/emoji_filter.rb b/lib/banzai/filter/emoji_filter.rb
index 23ae6dfc79a..a8c1ca0c60a 100644
--- a/lib/banzai/filter/emoji_filter.rb
+++ b/lib/banzai/filter/emoji_filter.rb
@@ -14,15 +14,16 @@ module Banzai
search_text_nodes(doc).each do |node|
content = node.to_html
next if has_ancestor?(node, IGNORED_ANCESTOR_TAGS)
- if content.include?(':') || node.text.match(emoji_unicode_pattern)
- html = emoji_name_image_filter(content)
- html = emoji_unicode_image_filter(html)
- next if html == content
- node.replace(html)
- end
- end
+ next unless content.include?(':') || node.text.match(emoji_unicode_pattern)
+
+ html = emoji_name_image_filter(content)
+ html = emoji_unicode_image_filter(html)
+ next if html == content
+
+ node.replace(html)
+ end
doc
end
@@ -34,31 +35,35 @@ module Banzai
def emoji_name_image_filter(text)
text.gsub(emoji_pattern) do |match|
name = $1
- "<img class='emoji' title=':#{name}:' alt=':#{name}:' src='#{emoji_url(name)}' height='20' width='20' align='absmiddle' />"
+ emoji_image_tag(name, emoji_url(name))
end
end
-
- # Replace unicode emojis with corresponding images if they exist.
+ # Replace unicode emoji with corresponding images if they exist.
#
- # text - String text to replace unicode emojis in.
+ # text - String text to replace unicode emoji in.
#
- # Returns a String with unicode emojis replaced with images.
-
+ # Returns a String with unicode emoji replaced with images.
def emoji_unicode_image_filter(text)
text.gsub(emoji_unicode_pattern) do |moji|
- "<img class='emoji' title=':#{Gitlab::Emoji.emojis_by_moji[moji]['name']}:' alt=':#{Gitlab::Emoji.emojis_by_moji[moji]['name']}:' src='#{emoji_unicode_url(moji)}' height='20' width='20' align='absmiddle' />"
+ emoji_image_tag(Gitlab::Emoji.emojis_by_moji[moji]['name'], emoji_unicode_url(moji))
end
end
+
+ def emoji_image_tag(emoji_name, emoji_url)
+ "<img class='emoji' title=':#{emoji_name}:' alt=':#{emoji_name}:' src='#{emoji_url}' height='20' width='20' align='absmiddle' />"
+ end
+
# Build a regexp that matches all valid :emoji: names.
def self.emoji_pattern
@emoji_pattern ||= /:(#{Gitlab::Emoji.emojis_names.map { |name| Regexp.escape(name) }.join('|')}):/
end
+
# Build a regexp that matches all valid unicode emojis names.
def self.emoji_unicode_pattern
@emoji_unicode_pattern ||= /(#{Gitlab::Emoji.emojis_unicodes.map { |moji| Regexp.escape(moji) }.join('|')})/
-
end
+
private
def emoji_url(name)
@@ -80,13 +85,10 @@ module Banzai
emoji_unicode_path = emoji_unicode_filename(moji)
if context[:asset_host]
- # Asset host is specified.
url_to_image(emoji_unicode_path)
elsif context[:asset_root]
- # Gitlab url is specified
File.join(context[:asset_root], url_to_image(emoji_unicode_path))
else
- # All other cases
url_to_image(emoji_unicode_path)
end
end
@@ -102,6 +104,7 @@ module Banzai
def emoji_filename(name)
"#{Gitlab::Emoji.emoji_filename(name)}.png"
end
+
def emoji_unicode_pattern
self.class.emoji_unicode_pattern
end