gpt4 book ai didi

ruby - 是否存在可以在 Ruby 中生成 Markdown 的 Markdown 解析器?

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:45 24 4
gpt4 key购买 nike

我想解析一个 Markdown 文档,以便获得一个我能够操作的树结构。之后我希望输出再次成为 Markdown。

例子:

# This is a title

And a short paragraph...
  • m = SomeLib.parse("#这是一只山雀...")
  • m.insert(1, "Here is a new paragraph") # 或类似的内容
  • m.to_md

应该变成

# This is a title

Here is a new paragraph

And a short paragraph...

因为我想大量更改文档,所以我不想使用 REGEX 或类似技术。

我查看了 Maruku 和 BlueCloth,但不知何故我无法再次生成 Markdown。

最佳答案

可能不是开箱即用,而是使用 redcarpet您可以编写一个自定义渲染器来构建您的树,然后对其进行操作。

虽然在这种情况下要小心,但您不能重用 Markdown 和 Renderer 实例,并且自定义 Renderer 子类中的所有方法都应该返回一个字符串。像这样的事情可能是一个起点:

class StackRenderer < Redcarpet::Render::Base
attr_reader :items

def initialize
super
@items = []
end

def header(title, level)
items << { :text => title, :level => level, :type => :header }
"#{'#' * level} #{title}\n\n"
end

def paragraph(text)
items << { :text => text, :type => :paragraph }
"#{text}\n\n"
end
end

# example...
sr = StackRenderer.new
md = Redcarpet::Markdown.new(sr)

text = <<-EOF
# This is a title

And a short paragraph...
EOF

md.render(text) # => "# This is a title\n\nAnd a short paragraph...\n\n"

sr.items # => [{:type=>:header, :level=>1, :text=>"This is a title"},
# {:type=>:paragraph, :text=>"And a short paragraph..."}]

关于ruby - 是否存在可以在 Ruby 中生成 Markdown 的 Markdown 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com