# frozen_string_literal: true

class TwitteredMarkdown < Redcarpet::Render::StripDown
  def preprocess(text)
    wrap_mentions(text)
  end

  def wrap_mentions(text)
    text.gsub(/(^|\s)@([a-zA-Z0-9_]{1,16})/) do
      local_user = User.find_by(screen_name: $2)
      if local_user.nil?
        "#{$1}#{$2}"
      else
        service = local_user.services.where(type: "Services::Twitter").first
        if service.nil?
          "#{$1}#{$2}"
        else
          "#{$1}@#{service.nickname}"
        end
      end
    end
  end
end