24 lines
535 B
Ruby
24 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
|