module Spiffy
Public Class Methods
markup_to_html(markup_file, css_file: nil, template_file: nil, output_html: true, output_pdf: false, output_dir: nil)
click to toggle source
# File lib/spiffy.rb, line 7 def self.markup_to_html(markup_file, css_file: nil, template_file: nil, output_html: true, output_pdf: false, output_dir: nil) markup_file_ext = File.extname(markup_file) markup_file_name = File.basename(markup_file, ".*") markup_file_directory = File.dirname(markup_file) markup = File.open(markup_file, "r:UTF-8", &:read) html = GitHub::Markup.render(markup_file, markup) if css_file css = File.open(css_file, "r:UTF-8", &:read) end if template_file template_ext = File.extname(template_file) template = File.open(template_file, "r:UTF-8", &:read) local_variables = { base_url: "file://#{File.absolute_path(markup_file_directory)}/", file: markup_file } html = case template_ext when ".erb" ERB.new(template).result do |section| case section; when :css; css; when :body, nil; html; end end when ".haml" engine = Haml::Engine.new(template) engine.render(Object.new, local_variables) do |section| case section; when :css; css; when :body, nil; html; end end else raise "Template file #{template_file} unsupported. Only .erb or .haml are supported." end end output_dir = File.join(output_dir, "") if output_dir output_dir = "#{output_dir}#{markup_file_directory}" FileUtils.mkdir_p(output_dir) unless File.directory?(output_dir) if output_html html_file = File.join(output_dir, "#{markup_file_name}.html") File.open(html_file, "w:UTF-8") { |f| f.write(html) } end if output_pdf pdf_file = File.join(output_dir, "#{markup_file_name}.pdf") pdf = PDFKit.new(html) pdf.stylesheets << css_file if css_file pdf.to_file(pdf_file) end end