如何将 html 文件渲染为 haml

How to render html file as haml

我是 ruby 的新手,正在构建一个前端样式指南,其中包含 html 个片段,我想将其呈现为 haml 到 pre 标记中。我正在为中间人构建一个助手,并且已经弄清楚如何读取 HTML 文件并输出其内容。现在我想将 html 转换为 haml 并输出它。

环顾四周似乎 html2haml gem 是我想要使用的,尽管 gem 上的文档似乎只涵盖了在命令行上使用它,而我正在尝试将此功能添加到助手。

这是我目前为助手准备的资料

helpers do
  def render_snippet(page)
    p1 = ("<pre><code>").html_safe
    p2 = File.read("source/"+"#{page}")
    p3 = ("</code></pre>").html_safe
    p0+p1+p2+p3
  end
end

下面是我如何使用助手

= render_snippet "partials/examples/typography/elements.html"

为了回答您的问题,您可以通过以下方式让助手在终端外使用 html2haml gem shell 命令

# some_view.html.erb
<%= render html_2_haml("home/my_partial.html") %>


# app/helpers/application_helper.rb    
module ApplicationHelper
  def html_2_haml(path)
    file_name = path.split("/").last
    path_with_underscore = path.gsub(file_name, "_#{file_name}")
    system "html2haml app/views/#{path_with_underscore} app/views/#{path_with_underscore}.haml"
    "#{path}.haml"
  end
end

现在我想说这绝对不会在生产中工作(因为它动态创建一个新文件和托管服务,如 Heroku 不允许这样做)但是如果你只是让自己成为这个的开发助手-然后-也许这对你有帮助。

我在这方面做了更多工作,结果如下:

def render_html2haml(file)
  templateSource = preserve(File.read("source/"+"#{file}"))
  haml = Html2haml::HTML.new(templateSource, {:erb => nil})
  content_tag(:pre, content_tag(:code, haml.render))
end