Module: EmojiSub

Extended by:
EmojiSub
Included in:
EmojiSub
Defined in:
lib/emoji_sub.rb,
lib/emoji_sub/version.rb,
lib/emoji_sub/emoji_sub.rb,
lib/emoji_sub/definitions.rb

Constant Summary collapse

GEM_ROOT =
File.dirname(__FILE__) + "/.."
EMOJI_MAPPING_YAML =
GEM_ROOT + "/data/emoji.yaml"
VERSION =
"0.5.0"

Class Method Summary collapse

Class Method Details

.definitionsObject



5
6
7
# File 'lib/emoji_sub/definitions.rb', line 5

def definitions
  @emoji_definitions ||= YAML.load(File.read(EMOJI_MAPPING_YAML))
end

.emoji_sub(text, additional_mappings = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/emoji_sub/emoji_sub.rb', line 3

def emoji_sub(text, additional_mappings = {})
  known_emoji = definitions.merge(additional_mappings)

  discovered_emoji = text.scan(/:([\w\d\-\_]+):/).flatten.map(&:to_sym).uniq
  found = discovered_emoji.each_with_object({}) do |emoji, found|
    found[emoji] = known_emoji.fetch(emoji,nil)
  end.compact

  found.each do |shortcode, unicode|
    text.gsub!(/:#{shortcode}:/, Array(unicode).map { |u| "&#x#{u}" }.join(''))
  end
  
  text
end