class Grandfather::Renderer

Public Class Methods

new(file) click to toggle source
# File lib/grandfather/render.rb, line 10
def initialize(file)
  @file = file
  
  @data = file.data
  @code = Code.new
end

Public Instance Methods

render() click to toggle source
# File lib/grandfather/render.rb, line 17
def render
  prepare_data
  render_data
  post_process_data

  return @data
end

Private Instance Methods

post_process_data() click to toggle source
# File lib/grandfather/render.rb, line 41
def post_process_data
  @data = @code.process(@data)
  doc = Nokogiri::HTML::DocumentFragment.parse(@data, 'UTF-8')
  @data = doc.to_xhtml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XHTML, :encoding => 'UTF-8')
  @data.gsub!(/<p><\/P>/, '')
end
prepare_data() click to toggle source
# File lib/grandfather/render.rb, line 27
def prepare_data
  @data = @code.extract(@data)
end
render_data(content = nil) click to toggle source
# File lib/grandfather/render.rb, line 31
def render_data(content = nil)
  begin
    @data = @data.force_encoding('utf-8') if @data.respond_to? :force_encoding
    @data = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :tables => true).render(@data)
    if @data.nil?
      raise "There was an error converting #{@file.name} to HTML."
    end
  end
end