求助一个 Homeland 框架的问题

2018-12-15 10:45:50 +08:00
 mathzhaoliang

本来这个问题应该在 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 这个输入呢?

1522 次点击
所在节点    问与答
5 条回复
oott123
2018-12-15 12:22:56 +08:00
ruby 最后一条表达式的值就是返回值

伸手问题在 v2 也不受欢迎
mathzhaoliang
2018-12-15 12:26:33 +08:00
@oott123 谢谢,那么他写的 `YouCustomRender` 是笔误吗,这里应该是 `RubyChina` 吧?
我在网上查过很多次这个框架,除了他们论坛上的几个帖子,有用的信息很少。我又不是搞 rails 框架的,很难看懂。
flyingkid
2018-12-15 14:16:06 +08:00
YouCustomRender 应该就是你调用的渲染器。例如你用 pandoc

```
require 'pandoc-ruby'
def render(raw)
# 在这里编写你的详细转换实现
PandocRuby.convert(raw, :from => :markdown, :to => :html)
end
```
msg7086
2018-12-16 05:46:42 +08:00
看到有人说 Ruby-China 对新手不友好我就笑了。说实话 v2 上的人普遍比 Ruby-China 的人更不友好。从正常讨论到互杠到问候父母家人只要几层楼的功夫。v2 上友好的人到后来都不敢多说话了。

YouCustomRender 是笔误,应该是 YourCustomRender,就是「你自己的渲染器」,你可以在这里调用任何能返回 HTML 的程序。比如像楼上说的调用 PandocRuby.convert,又比如说如果你想直接调用可执行文件,也可以用

html, s = Open3.capture2('pandoc', '-xxxxx', '-yyyyy', stdin_data: raw)
html

之类的,看你的具体需求了。要定制程序的话,还是得学 Ruby 的。
neocanable
2019-01-15 21:46:47 +08:00
联系我,我给你实现以下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/517755

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX