gitlab-org--gitlab-foss/lib/award_emoji.rb

81 lines
1.9 KiB
Ruby
Raw Normal View History

2015-11-18 10:38:15 -05:00
class AwardEmoji
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
2016-04-14 12:38:17 -04:00
CATEGORY_ALIASES = {
symbols: "objects_symbols",
foods: "food_drink",
travel: "travel_places"
}.with_indifferent_access
2015-12-11 06:10:00 -05:00
def self.normilize_emoji_name(name)
2015-12-24 04:28:51 -05:00
aliases[name] || name
2015-12-11 06:10:00 -05:00
end
def self.emoji_by_category
unless @emoji_by_category
2016-04-14 12:38:17 -04:00
@emoji_by_category = Hash.new { |h, key| h[key] = [] }
2015-12-24 04:28:51 -05:00
emojis.each do |emoji_name, data|
data["name"] = emoji_name
2016-04-14 12:38:17 -04:00
# 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
2015-12-24 04:28:51 -05:00
def self.emojis
@emojis ||= begin
json_path = File.join(Rails.root, 'fixtures', 'emojis', 'index.json' )
JSON.parse(File.read(json_path))
end
end
def self.aliases
@aliases ||= begin
json_path = File.join(Rails.root, 'fixtures', 'emojis', 'aliases.json' )
JSON.parse(File.read(json_path))
end
end
# Returns an Array of Emoji names and their asset URLs.
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
2015-11-18 18:31:15 -05:00
end