retrospring/app/services/twittered_markdown.rb

23 lines
535 B
Ruby

# 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