kaspernj/emoji_replace

View on GitHub
lib/emoji_replace/replacer.rb

Summary

Maintainability
A
0 mins
Test Coverage
class EmojiReplace::Replacer
  attr_reader :text

  def initialize(args)
    @text = args.fetch(:text).dup
    @index = Emoji::Index.new
  end

  def replace
    @text.gsub!(@index.unicode_moji_regex) do |moji|
      moji = @index.find_by_moji(moji)
      "%{emoji:#{moji.fetch('name')}}"
    end

    return self
  end

  def back(args = {})
    @text.gsub!(/%\{emoji:(.+?)\}/) do |moji_str|
      match = moji_str.match(/%\{emoji:(.+?)\}/)
      moji_name = match[1]
      moji = @index.find_by_name(moji_name)

      if args[:html]
        "<img alt=\"#{moji.fetch("name")}\" class=\"emoji\" src=\"#{Emoji.image_url_for_name(moji_name)}\">"
      else
        moji.fetch("moji")
      end
    end

    return self
  end
end