为Ruby中的字符串自定义to_html方法

时间:2013-02-26 00:20:43

标签: ruby string parsing

我有这样的字符串:#_大家好_#我需要创建一个这样的输出:

<strong>Hi All</strong>

我一直在谷歌搜索Ruby中的解析器,但我找不到一些小而简单的东西来学习如何做这类事情。

任何人都可以帮我提供文档或想法吗?

由于

1 个答案:

答案 0 :(得分:1)

小而简单:

text = "#_ Hi all _#"

html = text.gsub(/#_ /,'<strong>').gsub(/ _#/,'</strong>')

略高一点:

tags = {
  '#_ ' => '<strong>', ' _#' => '</strong>',
  '#q ' => '<blockquote>', ' q#' => '</blockquote>'
}

html = text.gsub(/(#_ | _#|#q | q#)/){ tags[$1] }

如果您需要更多高级功能的一些想法:

  • 启用代码转义功能,例如\#_表示“按原样显示此代码”

  • 确保开始标记具有相应的停止标记,例如“#_ ... _#”

  • 启用嵌套,例如“#_ ... #_ ... _#... _#

  • 从标签hash动态生成gsub regexp。

  • 等。

您是否看过Maruku Ruby Markdown解析器?我喜欢它的代码库,它有很多评论可以指导你:https://github.com/bhollis/maruku