本来这个问题应该在 ruby-china 上提的,但是那里的人对新手很不友好,只有请 v2 的朋友们帮忙啦。
我的问题是这样的,我想用 homeland 这个框架建一个论坛: https://github.com/rails-engine/homeland
这个框架有个问题就是它的 markdown 解析是自己实现的,而我想在论坛里使用 mathjax 数学公式,这样一来会和 markdown 语法有冲突,于是我决定调用外部软件,使用与 latex 兼容的比较好的 pandoc 来将 md 转换为 html 格式。
它的文档里说,如果你要实现自己的解释器的话,需要这样做:
在 Homeland::Markup 命名空间下面实现一个新的自定义类,并继承 Homeland::Markup::Base,实现 render 函数,例如:
新建文件 lib/homeland/markup/ruby_china.rb
module Homeland
module Markup
class RubyChina < Base
class << self
def render(raw)
# 在这里编写你的详细转换实现
YouCustomRender.render(raw)
end
end
end
end
end
我的问题是这样的,我理解的是这个 YouCustomRender
指的就是 RubyChina
这个类,raw 应该是个 md 格式的字符串,但是这个函数没有返回值,它是怎么把转换后的字符串传出去的呢?
第二个问题是,我不懂 ruby,我应该怎样调用 pandoc 命令来渲染 raw
这个输入呢?
1
oott123 2018-12-15 12:22:56 +08:00 via Android
ruby 最后一条表达式的值就是返回值
伸手问题在 v2 也不受欢迎 |
2
mathzhaoliang OP @oott123 谢谢,那么他写的 `YouCustomRender` 是笔误吗,这里应该是 `RubyChina` 吧?
我在网上查过很多次这个框架,除了他们论坛上的几个帖子,有用的信息很少。我又不是搞 rails 框架的,很难看懂。 |
3
flyingkid 2018-12-15 14:16:06 +08:00 1
YouCustomRender 应该就是你调用的渲染器。例如你用 pandoc
``` require 'pandoc-ruby' def render(raw) # 在这里编写你的详细转换实现 PandocRuby.convert(raw, :from => :markdown, :to => :html) end ``` |
4
msg7086 2018-12-16 05:46:42 +08:00 2
看到有人说 Ruby-China 对新手不友好我就笑了。说实话 v2 上的人普遍比 Ruby-China 的人更不友好。从正常讨论到互杠到问候父母家人只要几层楼的功夫。v2 上友好的人到后来都不敢多说话了。
YouCustomRender 是笔误,应该是 YourCustomRender,就是「你自己的渲染器」,你可以在这里调用任何能返回 HTML 的程序。比如像楼上说的调用 PandocRuby.convert,又比如说如果你想直接调用可执行文件,也可以用 html, s = Open3.capture2('pandoc', '-xxxxx', '-yyyyy', stdin_data: raw) html 之类的,看你的具体需求了。要定制程序的话,还是得学 Ruby 的。 |
5
neocanable 2019-01-15 21:46:47 +08:00
联系我,我给你实现以下
|