Roman2K / prawn-handler

Rails template handler for PDF library Prawn

This URL has Read+Write access

prawn-handler / lib / prawn_handler.rb
100644 28 lines (22 sloc) 0.612 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module ActionView
  module TemplateHandlers
    class Prawn < TemplateHandler
      def self.register!
        Template.register_template_handler :prawn, self
      end
      
      include Compilable
      
      def compile(template)
        %(extend #{DocumentProxy}; #{template.source}; pdf.render)
      end
      
      module DocumentProxy
        def pdf
          @pdf ||= ::Prawn::Document.new
        end
        
      private
      
        def method_missing(method, *args, &block)
          pdf.respond_to?(method) ? pdf.send(method, *args, &block) : super
        end
      end
    end
  end
end