首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在带有Redcarpet的Markdown中嵌入YouTube视频?

如何在带有Redcarpet的Markdown中嵌入YouTube视频?
EN

Stack Overflow用户
提问于 2014-04-14 03:40:00
回答 1查看 1.6K关注 0票数 4

我在Rails 4.1中使用Redcarpet的Markdown解析器,这样工作人员就可以以某种格式相互写入消息。我希望他们也能嵌入youtube视频。也许是这样:

代码语言:javascript
运行
复制
Hey, *check out* my video: [VMD-z2Xni8U](youtube)

这将产生以下结果:

嘿, my的视频:<iframe width="560" height="315" src="//www.youtube.com/embed/VMD-z2Xni8U" frameborder="0" allowfullscreen></iframe>

在Redcarpet的Markdown解析器中有任何方法可以做到这一点吗?我想我必须编写某种自定义解析器吗?如果有办法的话,有什么合适的方法去做呢?有可能有一种标准的标记方式来做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-14 09:42:49

最简单的解决方案似乎如下。我使用http://youtube/VMD-z2Xni8U在我的标记下嵌入一个YouTube视频。然后,我允许在红地毯自动收费链接这一点。

代码语言:javascript
运行
复制
# /lib/helpers/markdown_renderer_with_special_links.rb
class MarkdownRendererWithSpecialLinks < Redcarpet::Render::HTML
  def autolink(link, link_type)
    case link_type
      when :url then url_link(link)
      when :email then email_link(link)
    end
  end
  def url_link(link)
    case link
      when /^http:\/\/youtube/ then youtube_link(link)
      else normal_link(link)
    end
  end
  def youtube_link(link)
    parameters_start = link.index('?')
    video_id = link[15..(parameters_start ? parameters_start-1 : -1)]
    "<iframe width=\"560\" height=\"315\" src=\"//www.youtube.com/embed/#{video_id}?rel=0\" frameborder=\"0\" allowfullscreen></iframe>"
  end
  def normal_link(link)
    "<a href=\"#{link}\">#{link}</a>"
  end
  def email_link(email)
    "<a href=\"mailto:#{email}\">#{email}</a>"
  end
end

然后,我创建一个markdown方法,以便在显示标记内容时在任何视图或控制器中使用:

代码语言:javascript
运行
复制
# /app/helpers/application_helper.rb
module ApplicationHelper
  require './lib/helpers/markdown_renderer_with_special_links'
  def markdown(content)
    @markdown ||= Redcarpet::Markdown.new(MarkdownRendererWithSpecialLinks, autolink: true, space_after_headers: true, fenced_code_blocks: true)
    @markdown.render(content).html_safe
  end
end
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23051568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档