refactor process_youtube, escape vimeo titles

This commit is contained in:
Dan Hansen 2011-01-22 16:26:45 -06:00
parent 5ebd10e43f
commit 90f5192055

View file

@ -178,11 +178,10 @@ module ApplicationHelper
end end
message = process_links(message) message = process_links(message)
message = process_youtube(message) message = process_youtube(message, options[:youtube_maps])
message = process_vimeo(message, options[:vimeo_maps]) message = process_vimeo(message, options[:vimeo_maps])
message = process_autolinks(message) message = process_autolinks(message)
message = process_emphasis(message) message = process_emphasis(message)
message = process_youtube_again(message, options[:youtube_maps])
if options[:newlines] if options[:newlines]
message.gsub!(/\n+/, '<br />') message.gsub!(/\n+/, '<br />')
@ -217,11 +216,16 @@ module ApplicationHelper
return message return message
end end
def process_youtube(message) def process_youtube(message, youtube_maps)
message.gsub!(/( |^)(http:\/\/)?www\.youtube\.com\/watch[^ ]*v=([A-Za-z0-9_]+)(&[^ ]*|)/) do |m| regex = /( |^)(http:\/\/)?www\.youtube\.com\/watch[^ ]*v=([A-Za-z0-9_\-]+)(&[^ ]*|)/
res = "#{$1}youtube.com::#{$3}" while youtube = message.match(regex)
res.gsub!(/(\*|_)/) { |m| "\\#{$1}" } video_id = youtube[3]
res if youtube_maps && youtube_maps[video_id]
title = h(CGI::unescape(youtube_maps[video_id]))
else
title = I18n.t 'application.helper.video_title.unknown'
end
message.gsub!(youtube[0], '<a class="video-link" data-host="youtube.com" data-video-id="' + video_id + '" href="#video">Youtube: ' + title + '</a>')
end end
return message return message
end end
@ -255,26 +259,12 @@ module ApplicationHelper
return message return message
end end
def process_youtube_again(message, youtube_maps)
while youtube = message.match(/youtube\.com::([A-Za-z0-9_\\\-]+)/)
video_id = youtube[1]
if youtube_maps && youtube_maps[video_id]
title = h(CGI::unescape(youtube_maps[video_id]))
else
title = I18n.t 'application.helper.video_title.unknown'
end
message.gsub!('youtube.com::'+video_id, '<a class="video-link" data-host="youtube.com" data-video-id="' + video_id + '" href="#video">Youtube: ' + title + '</a>')
end
return message
end
def process_vimeo(message, vimeo_maps) def process_vimeo(message, vimeo_maps)
regex = /https?:\/\/(?:w{3}\.)?vimeo.com\/(\d{6,})/ regex = /https?:\/\/(?:w{3}\.)?vimeo.com\/(\d{6,})/
while vimeo = message.match(regex) while vimeo = message.match(regex)
video_id = vimeo[1] video_id = vimeo[1]
if vimeo_maps && vimeo_maps[video_id] if vimeo_maps && vimeo_maps[video_id]
title = vimeo_maps[video_id] title = h(CGI::unescape(vimeo_maps[video_id]))
else else
title = I18n.t 'application.helper.video_title.unknown' title = I18n.t 'application.helper.video_title.unknown'
end end