emoji.rb 1.5 KB
Newer Older
1 2 3
module Gitlab
  module Emoji
    extend self
E
Eric Eastwood 已提交
4

5 6 7 8 9 10 11
    def emojis
      Gemojione.index.instance_variable_get(:@emoji_by_name)
    end

    def emojis_by_moji
      Gemojione.index.instance_variable_get(:@emoji_by_moji)
    end
J
Johan H 已提交
12

H
henrik 已提交
13
    def emojis_unicodes
J
Johan H 已提交
14
      emojis_by_moji.keys
H
henrik 已提交
15
    end
J
Johan H 已提交
16

17
    def emojis_names
J
Johan H 已提交
18
      emojis.keys
19 20
    end

E
Eric Eastwood 已提交
21
    def emojis_aliases
E
Eric Eastwood 已提交
22
      @emoji_aliases ||= JSON.parse(File.read(Rails.root.join('fixtures', 'emojis', 'aliases.json')))
E
Eric Eastwood 已提交
23 24
    end

25 26 27
    def emoji_filename(name)
      emojis[name]["unicode"]
    end
J
Johan H 已提交
28

H
henrik 已提交
29 30 31
    def emoji_unicode_filename(moji)
      emojis_by_moji[moji]["unicode"]
    end
E
Eric Eastwood 已提交
32 33

    def emoji_unicode_version(name)
34
      @emoji_unicode_versions_by_name ||= JSON.parse(File.read(Rails.root.join('fixtures', 'emojis', 'emoji-unicode-version-map.json')))
E
Eric Eastwood 已提交
35 36 37 38 39
      @emoji_unicode_versions_by_name[name]
    end

    def normalize_emoji_name(name)
      emojis_aliases[name] || name
E
Eric Eastwood 已提交
40 41 42 43 44 45 46
    end

    def emoji_image_tag(name, src)
      "<img class='emoji' title=':#{name}:' alt=':#{name}:' src='#{src}' height='20' width='20' align='absmiddle' />"
    end

    # CSS sprite fallback takes precedence over image fallback
47
    def gl_emoji_tag(name)
E
Eric Eastwood 已提交
48 49
      emoji_name = emojis_aliases[name] || name
      emoji_info = emojis[emoji_name]
50
      return unless emoji_info
E
Eric Eastwood 已提交
51 52 53 54 55

      data = {
        name: emoji_name,
        unicode_version: emoji_unicode_version(emoji_name)
      }
56 57

      ActionController::Base.helpers.content_tag('gl-emoji', emoji_info['moji'], data: data)
E
Eric Eastwood 已提交
58
    end
59 60
  end
end