class TanukiEmoji::Db::Gemojione

Gemojione Emoji database

Constants

DATA_FILE

Attributes

data_file[R]

Public Class Methods

data_file() click to toggle source
# File lib/tanuki_emoji/db/gemojione.rb, line 11
def self.data_file
  File.expand_path(File.join(__dir__, '../../../', DATA_FILE))
end
new(index:, data_file: self.class.data_file) click to toggle source
# File lib/tanuki_emoji/db/gemojione.rb, line 17
def initialize(index:, data_file: self.class.data_file)
  @data_file = data_file
  @index = index
end

Public Instance Methods

load!() click to toggle source
# File lib/tanuki_emoji/db/gemojione.rb, line 22
def load!
  db = File.open(data_file, 'r:UTF-8') do |file|
    JSON.parse(file.read, symbolize_names: true)
  end

  db.each do |emoji_name, emoji_data|
    emoji = Character.new(emoji_name.to_s,
                          codepoints: emoji_data[:moji],
                          alpha_code: emoji_data[:shortname],
                          description: emoji_data[:name],
                          category: emoji_data[:category])

    emoji_data[:unicode_alternates].each do |unicode_alternates|
      codepoints = unicode_hex_to_codepoint(unicode_alternates)

      emoji.add_codepoints(codepoints)
    end

    emoji_data[:aliases].each do |alpha_code|
      emoji.add_alias(alpha_code)
    end

    @index.add(emoji)
  end
end

Private Instance Methods

unicode_hex_to_codepoint(unicode) click to toggle source
# File lib/tanuki_emoji/db/gemojione.rb, line 50
def unicode_hex_to_codepoint(unicode)
  unicode.split('-').map { |i| i.to_i(16) }.pack('U*')
end