class Gemojione::Index

Attributes

all[R]

Public Class Methods

new(emoji_list=nil) click to toggle source
# File lib/gemojione/index.rb, line 5
def initialize(emoji_list=nil)
  emoji_list ||= begin
    emoji_json = File.read(File.absolute_path(File.dirname(__FILE__) + '/../../config/index.json'))
    JSON.parse(emoji_json)
  end

  @emoji_by_name = {}
  @emoji_by_moji = {}
  @emoji_by_ascii = {}
  @emoji_by_code = {}
  @emoji_by_keyword = {}
  @emoji_by_category = {}
  @all = emoji_list

  emoji_list.each do |key, emoji_hash|

    emoji_hash["description"] = emoji_hash["name"]
    emoji_hash["name"] = key
    @emoji_by_name[key] = emoji_hash if key

    emoji_hash["aliases"].each do |emoji_alias|
      aliased = emoji_alias.tr(':','')
      @emoji_by_name[aliased] = emoji_hash if aliased
      @emoji_by_code[emoji_alias] = emoji_hash if aliased
    end

    emoji_hash['aliases_ascii'].each do |emoji_ascii|
      @emoji_by_ascii[emoji_ascii] = emoji_hash if emoji_ascii
    end

    code = emoji_hash['shortname']
    @emoji_by_code[code] = emoji_hash if code

    moji = emoji_hash['moji']
    @emoji_by_moji[moji] = emoji_hash if moji

    emoji_hash['keywords'].each do |emoji_keyword|
      @emoji_by_keyword[emoji_keyword] ||= []
      @emoji_by_keyword[emoji_keyword] << emoji_hash
    end

    category = emoji_hash['category']
    if category
      @emoji_by_category[category] ||= {}
      @emoji_by_category[category][key] = emoji_hash
    end
  end

  @emoji_code_regex = /#{@emoji_by_code.keys.map{|ec| Regexp.escape(ec)}.join('|')}/
  @emoji_moji_regex = /#{@emoji_by_moji.keys.map{|ec| Regexp.escape(ec)}.join('|')}/
  @emoji_ascii_regex = /#{@emoji_by_ascii.keys.map{|ec| Regexp.escape(ec)}.join('|')}/
end

Public Instance Methods

ascii_moji_regex() click to toggle source
# File lib/gemojione/index.rb, line 90
def ascii_moji_regex
  @emoji_ascii_regex
end
find_by_ascii(ascii) click to toggle source
# File lib/gemojione/index.rb, line 66
def find_by_ascii(ascii)
  @emoji_by_ascii[ascii]
end
find_by_category(category) click to toggle source
# File lib/gemojione/index.rb, line 74
def find_by_category(category)
  @emoji_by_category[category]
end
find_by_keyword(keyword) click to toggle source
# File lib/gemojione/index.rb, line 70
def find_by_keyword(keyword)
  @emoji_by_keyword[keyword]
end
find_by_moji(moji) click to toggle source
# File lib/gemojione/index.rb, line 58
def find_by_moji(moji)
  @emoji_by_moji[moji]
end
find_by_name(name) click to toggle source
# File lib/gemojione/index.rb, line 62
def find_by_name(name)
  @emoji_by_name[name]
end
find_by_shortname(shortname) click to toggle source
# File lib/gemojione/index.rb, line 78
def find_by_shortname(shortname)
  @emoji_by_code[shortname]
end
shortname_moji_regex() click to toggle source
# File lib/gemojione/index.rb, line 86
def shortname_moji_regex
  @emoji_code_regex
end
unicode_moji_regex() click to toggle source
# File lib/gemojione/index.rb, line 82
def unicode_moji_regex
  @emoji_moji_regex
end