Class: AwardEmoji

Inherits:
Object
  • Object
show all
Defined in:
lib/award_emoji.rb

Constant Summary collapse

CATEGORIES =
{
  other: "Other",
  objects: "Objects",
  places: "Places",
  travel_places: "Travel",
  emoticons: "Emoticons",
  objects_symbols: "Symbols",
  nature: "Nature",
  celebration: "Celebration",
  people: "People",
  activity: "Activity",
  flags: "Flags",
  food_drink: "Food"
}.with_indifferent_access
CATEGORY_ALIASES =
{
  symbols: "objects_symbols",
  foods: "food_drink",
  travel: "travel_places"
}.with_indifferent_access

Class Method Summary collapse

Class Method Details

.aliasesObject


59
60
61
62
63
64
# File 'lib/award_emoji.rb', line 59

def self.aliases
  @aliases ||= begin
    json_path = File.join(Rails.root, 'fixtures', 'emojis', 'aliases.json' )
    JSON.parse(File.read(json_path))
  end
end

.emoji_by_categoryObject


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/award_emoji.rb', line 27

def self.emoji_by_category
  unless @emoji_by_category
    @emoji_by_category = Hash.new { |h, key| h[key] = [] }

    emojis.each do |emoji_name, data|
      data["name"] = emoji_name

      # Skip Fitzpatrick(tone) modifiers
      next if data["category"] == "modifier"

      category = CATEGORY_ALIASES[data["category"]] || data["category"]

      @emoji_by_category[category] << data
    end

    @emoji_by_category = @emoji_by_category.sort.to_h
  end

  @emoji_by_category
end

.emojisObject


48
49
50
51
52
53
# File 'lib/award_emoji.rb', line 48

def self.emojis
  @emojis ||= begin
    json_path = File.join(Rails.root, 'fixtures', 'emojis', 'index.json' )
    JSON.parse(File.read(json_path))
  end
end

.normilize_emoji_name(name) ⇒ Object


23
24
25
# File 'lib/award_emoji.rb', line 23

def self.normilize_emoji_name(name)
  aliases[name] || name
end

.unicodeObject


55
56
57
# File 'lib/award_emoji.rb', line 55

def self.unicode
  @unicode ||= emojis.map {|key, value| { key => emojis[key]["unicode"] } }.inject(:merge!)
end

.urlsObject

Returns an Array of Emoji names and their asset URLs.


67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/award_emoji.rb', line 67

def self.urls
  @urls ||= begin
    path = File.join(Rails.root, 'fixtures', 'emojis', 'digests.json')
    prefix = Gitlab::Application.config.assets.prefix
    digest = Gitlab::Application.config.assets.digest

    JSON.parse(File.read(path)).map do |hash|
      if digest
        fname = "#{hash['unicode']}-#{hash['digest']}"
      else
        fname = hash['unicode']
      end

      { name: hash['name'], path: "#{prefix}/#{fname}.png" }
    end
  end
end