2015-12-17 4 views
2

Я довольно новичок в рубине и работаю над созданием интерфейсного стиля, который имеет html-фрагменты, которые я бы хотел отобразить как haml в pre tag. Я создаю помощник для посредника и выяснил, как читать HTML-файл и выводить его содержимое. Теперь я хотел бы конвертировать html в haml и выводить его.Как визуализировать html-файл как haml

Оглядываясь вокруг, кажется, что драгоценный камень html2haml - это то, что я хочу использовать, хотя документ на этом драгоценном камне, кажется, охватывает только его использование в командной строке, тогда как я пытаюсь добавить эту функцию к помощнику.

Вот то, что я до сих пор для помощника

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" 

ответ

1

Чтобы ответить на ваш вопрос, это то, как вы можете сделать помощник использовать html2haml камень за пределами терминала команды оболочки

# 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 

Теперь я хотел бы сказать, что это, безусловно, не будет работать я n (так как это динамическое создание нового файла и услуг хостинга, таких как Heroku, это просто не позволит), но если вы просто сделаете себя помощником в разработке для этого и ... тогда, возможно, это может быть полезно для вас.

0

я закончил работать над этим еще немного, и в конечном итоге со следующим:

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 
Смежные вопросы