为什么 克拉姆登氏 自动收费解析器在 感化 文本字段上运行时会中断?
对于[Test](http://google.com "Test"),我得到:
<a href="http://google.com "Test"">Test</a>而不是预期的产出:
<a href="http://google.com" title="Test">Test</a>Live:http://runnable.com/VAL1VuMjrGFur2yx/forem-gemoji-kramdown (见Test帖子)
application_helper.rb
def add_emojify_and_kramdown(text)
raw(Kramdown::Document.new(emojify(text)).to_html)
end
[...snip...]
def emojify(text)
h(text).to_str.gsub(/:([a-z0-9\+\-_]+):/) do |match|
if emoji = Emoji.find_by_alias($1)
' + ')'
else
match
end
end
end一些补充信息:
raw(Kramdown::Document.new(text).to_html)返回预期的输出,但没有Gemojiraw(emojify(text))不会改变任何东西,因为text不包含任何表情符号raw(emojify(Kramdown::Document.new(text).to_html))返回预期的输出,但作为原始的HTML返回发布于 2014-09-18 12:23:54
emojify方法做的第一件事是h(text),它转义输入,转换
[Test](http://google.com "Test")转到
[Test](http://google.com "Test")然后,Kramdown对这个字符串进行操作,由于它不再包含引号,所以它假定(...)的全部内容就是URL,从而产生:
<a href="http://google.com "Test"">Test</a>要使它正常工作,只需放弃对h:text.gsub(...的调用即可。如果这是外部数据,您可能需要考虑如何管理您的字符串安全。
https://stackoverflow.com/questions/25912116
复制相似问题