# 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