1

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

<strong>Hi All</strong>

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

任何人都可以帮助我提供文档或想法来做到这一点?

谢谢

4

1 回答 1

1

小而简单:

text = "#_ Hi all _#"

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

稍微高级一点:

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

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

如果您愿意,一些关于更高级功能的想法:

  • 启用标签转义,例如\#_表示“按原样显示此标签”

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

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

  • 从标签哈希动态生成 gsub 正则表达式。

  • 等等

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

于 2013-02-26T01:33:09.803 回答