- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在我的 rails3 应用程序中,我想使用 redcarpet 来处理用户的帖子和用户评论部分。因此,我想扩展 redcarpet 以支持将 @username 转换为指向我网站上用户的链接。我知道 redcarpet 是用 C 编写的,但是有没有简单的方法可以用 ruby 扩展它?用C写有多难?我应该只在 Redcarpet 之外做这件事吗?
此外,我对 redcarpet 的其他一些扩展很感兴趣,它们可以作为链接到我的应用程序中其他模型的简写。我还不确定语法,但我猜它与 github 处理问题链接的方式类似。
最佳答案
我发现在 Ruby 中为我的 Rails 3 应用程序扩展 redcarpet 的解析器非常容易。一点都不可怕。
首先,首先从 Redcarpet 的 HTML 渲染器派生一个类,然后按照文档中的建议覆盖预处理方法。在 Rails 3.2 和 Rails 4 中,这个文件可以放在任何地方,你不需要要求它。我使用“服务”文件夹来保存这样的代码。
# app/services/my_flavored_markdown.rb
class MyFlavoredMarkdown < Redcarpet::Render::HTML
def preprocess(text)
text
end
end
下一步是添加执行所需文本替换的方法。在这里,我使用正则表达式将看起来像“@mention”的文本包装在带有 css 类“mention”的 HTML span 标记中。
# app/services/my_flavored_markdown.rb
class MyFlavoredMarkdown < Redcarpet::Render::HTML
def preprocess(text)
wrap_mentions(text)
end
def wrap_mentions(text)
text.gsub! /(^|\s)(@\w+)/ do
"#{$1}<span class='mention'>#{$2}</span>"
end
text
end
end
您可以同样轻松地查找用户的个人资料页面,并将 @mention 包装在 anchor 标记中。就我而言,我还为表情符号和主题标签制作了以相同方式工作的方法,并将这些方法链接在一起。
最后一步是添加接受一些文本的帮助器,创建 Redcarpet 派生类的实例,将文本传递到其中进行处理,并返回 html 结果。
# app/helpers/application_helper.rb
def flavored_markdown_to_html(text)
renderer = MyFlavoredMarkdown.new()
# These options might be helpful but are not required
options = {
safe_links_only: true,
no_intra_emphasis: true,
autolink: true
}
Redcarpet::Markdown.new(renderer, options).render(text)
}
在你的 View 中你可以这样调用它:
<%= flavored_markdown_to_html("This is something worth @mentioning") %>
输出将是:
This is something worth <span class='mention'>@mentioning</span>
.
关于ruby - 如何扩展 redcarpet 以支持自动链接用户提及?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12381230/
我正在关注 Syntax Highlighting Revised 的 RailsCasts 剧集.我将我的 ApplicationHelper 更新为如下所示: require 'redcarpet
我正在尝试使用 Redcarpet 获得语法高亮显示工作 我的appliaction_helper.rb: module ApplicationHelper def markdown(text)
在我的 rails3 应用程序中,我想使用 redcarpet 来处理用户的帖子和用户评论部分。因此,我想扩展 redcarpet 以支持将 @username 转换为指向我网站上用户的链接。我知道
我想知道如何使用 Redcarpet 的 :with_toc_data用于 Markdown 的选项 Middleman (基于 Sinatra 的静态站点生成器)。 我们目前的 config.rb
我正在使用 redcarpet gem 来标记用户生成的文本,并希望显示外部链接/图像托管的图像。到目前为止,我已经尝试过这样的事情: def markdown(text) options =
我正在尝试在我的 Rails 应用程序中实现 Markdown ,但我遇到了 Redcarpet这似乎是我想使用的。我已经将 gem 添加到我的 Gemfile 中,并且我已经从 github 克隆了
我正在尝试使用他们的 :redcarpet 过滤器过滤 Nanoc 3 中的内容。我的代码如下所示(来自规则文件): compile '/posts/*/' do filter :redcar
我无法获得换行符 ,即使内容中有一行包含空格和换行符。有什么方法可以在 redcarpet 中启用。 http://daringfireball.net/projects/markdown/synta
我正在编写一个 Ruby 应用程序,它目前使用 redcarpet渲染 Markdown。 我需要从文本中去除 Markdown 标记。有什么简单的方法吗? 最佳答案 是的,可以使用 Redcarpe
我目前正在尝试为 Rails 项目安装 Redcarpet gem。 问题是我前几天升级到Mavericks OS后安装不了,但我不确定是不是换了OS有什么关系。 这是我遇到的错误: ERROR:
有没有办法使用 Redcarpet 或 Bluecloth,这样当它插入 Markdown 时就不会生成任何标题? 例如: #header 1 产量: header 1 header 1 (prefe
我正在尝试使用 Redcarpet 渲染这样的表格 | header 1 | header 2 | | -------- | -------- | | cell 1 | cell 2 | |
使用杰基尔 2.0.3,我最初配置了 _config.yml markdown: kramdown 并且我能够在我的 example.md 中添加如下目录: --- layout: page titl
因此,我一直在利用中间人开发我自己的博客/网站,但我遇到了一些通过 redcarpet 使用围栏代码的障碍。无论我做什么,我似乎都会反复遇到同样的问题。嗯,图片值一千字,你可以在下面看到我的问题 因此
我编写了一个 Jekyll 生成器来解析 markdown 并将生成的 HTML 编码为 JSON。问题是,我的代码块没有被解析。我认为这是因为我用 Redcarpet 风格编写了 markdown,
我在 application_helper.rb 中有一个看起来像这样的 Markdown 助手。 你会如何为这样的事情编写测试?另外,这是从 Markdown 生成简单 HTML 的最佳方式吗? 谢
我正在尝试让代码突出显示适用于使用 jekyll 构建的简单博客。我希望能够在用 markdown 编写的帖子中突出显示代码,因此我启用了 redcarpet 作为标记语言。这一切正常,代码在 中格
我的 slate 有以下 Markdown 优惠项目: --- title: API Reference language_tabs: - http - javascript search:
我正在关注this tutorial,但始终无法说出“Redcarpet:Module的未定义方法'new'”。我的Gemfile中有 gem “redcarpet”。失败的那段代码: Redcarp
我正在尝试使用 Gollumn Wiki ,所以我可以编辑我的 GitHub Wiki,但我似乎无法让它工作。 我在 Ubuntu 11.10,64 位。 我也用 Ruby 1.9 试过这个,也是同样
我是一名优秀的程序员,十分优秀!