lib/quesadilla/extractor/emoji.rb
# encoding: UTF-8
module Quesadilla
class Extractor
# Extract named emoji.
#
# This module has no public methods.
module Emoji
private
require 'named_emoji'
# Emoji colon-syntax regex
EMOJI_COLON_REGEX = %r{:([a-zA-Z0-9_\-\+]+):}.freeze
def replace_emoji
codes = {}
# Replace codes with shas
i = 0
while match = @original_text.match(Markdown::CODE_REGEX)
original = match[0]
key = Digest::SHA1.hexdigest("#{original}-#{i}")
codes[key] = original
@original_text.sub!(original, key)
i += 1
end
# Replace emojis
match = @original_text.match(EMOJI_COLON_REGEX)
match.captures.each do |match|
sym = match.downcase.to_sym
next unless NamedEmoji.emojis.keys.include?(sym)
@original_text.sub!(":#{sym}:", NamedEmoji.emojis[sym])
end if match && match.captures
# Unreplace codes
codes.each do |key, value|
@original_text.sub!(key, value)
end
end
end
end
end