Sha256: 7a43969159b154d35eac07062c7b7471c30733b803dc8b0ebe346336822d587c

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

module PrawnCocktail
  class Renderer
    def initialize(template, data, doc_initializers)
      @template = template
      @data = data
      @doc_initializers = doc_initializers
    end

    def meta(opts)
      @prawn_document_options = opts
    end

    def content(&block)
      @doc_initializers.each do |proc|
        doc.instance_eval(&proc)
      end

      doc.instance_exec(data_object, &block)
    end

    def render_data
      render
      doc.render
    end

    def render_file(file)
      render
      doc.render_file(file)
    end

    private

    def render
      # We pass the filename for better backtraces.
      instance_eval(read_template, template_path)
    end

    def doc
      @doc ||= Prawn::Document.new(@prawn_document_options || {})
    end

    def data_object
      OpenStruct.new(@data)
    end

    def read_template
      File.read(File.join(app_root, template_path))
    end

    def template_path
      "app/documents/views/#{@template}.pdf.rb"
    end

    def app_root
      Rails.root
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
prawn_cocktail-0.0.1 lib/prawn_cocktail/renderer.rb