如何解决呈现电话:与 CommonMarker 的链接
我有这个帮手:
def markdown(text)
commonmarker.render_html(text.to_s,:HARDBREAKS,[:autolink]).html_safe
end
但我希望像 +33 7 87 12 10 21
这样的电话号码呈现 tel:
链接。
我弄明白了正则表达式:
PHONE_NUMBER_REGEXP = /\+?[ 0-9()-]+[0-9)]/
但我找不到如何与 commonmarker https://github.com/gjtorikian/commonmarker
集成好像我需要创建一个自定义渲染器 https://github.com/gjtorikian/commonmarker#creating-a-custom-renderer
我也试过:
text.gsub(PHONE_NUMBER_REGEXP) { |match| "[#{match}](tel:#{match})" }
没有成功
解决方法
放弃尝试扩展 CommonMarker 并仅对 html 输出进行 gsub-ed,由于转义,运行良好且安全:
module ApplicationHelper
PHONE_NUMBER_REGEXP = /\+?[ 0-9()-]{9,}[0-9)]/
def markdown(text)
html = CommonMarker.render_html(text.to_s,:HARDBREAKS,[:autolink]).html_safe
html.gsub(PHONE_NUMBER_REGEXP) do |match|
"<a href=\"tel:#{h(match)}\">#{h(match)}</a>"
end.html_safe
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。