summaryrefslogtreecommitdiff
path: root/lib/gitlab/emoji.rb
blob: 3c5d223b1060a3a46c6bca7256f9dfa21ed3b8c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# frozen_string_literal: true

module Gitlab
  module Emoji
    extend self

    # When updating emoji assets increase the version below
    # and update the version number in `app/assets/javascripts/emoji/index.js`
    EMOJI_VERSION = 2

    # Return a Pathname to emoji's current versioned folder
    #
    # @return [Pathname] Absolute Path to versioned emojis folder in `public`
    def emoji_public_absolute_path
      Rails.root.join("public/-/emojis/#{EMOJI_VERSION}")
    end

    def emoji_image_tag(name, src)
      image_options = {
        class:  'emoji',
        src:    src,
        title:  ":#{name}:",
        alt:    ":#{name}:",
        height: 20,
        width:  20,
        align:  'absmiddle'
      }

      ActionController::Base.helpers.tag(:img, image_options)
    end

    # CSS sprite fallback takes precedence over image fallback
    # @param [TanukiEmoji::Character] emoji
    # @param [Hash] options
    def gl_emoji_tag(emoji, options = {})
      return unless emoji

      data = {
        name: emoji.name,
        unicode_version: emoji.unicode_version
      }
      options = { title: emoji.description, data: data }.merge(options)

      ActionController::Base.helpers.content_tag('gl-emoji', emoji.codepoints, options)
    end

    def custom_emoji_tag(name, image_source)
      data = {
        name: name
      }

      ActionController::Base.helpers.content_tag('gl-emoji', title: name, data: data) do
        emoji_image_tag(name, image_source).html_safe
      end
    end
  end
end