24 lines
513 B
Ruby
24 lines
513 B
Ruby
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
|
|
text
|
|
end
|
|
end
|