Class: Phlex::PDF
Defined Under Namespace
Classes: Error
Class Method Summary collapse
Instance Method Summary collapse
- #after_template ⇒ nil abstract
- #around_template ⇒ nil abstract
- #before_template ⇒ nil abstract
- #call(document, &block) ⇒ Object
- #render(renderable, &block) ⇒ Object
- #yield_content(&block) ⇒ Object
Class Method Details
.document(document = Prawn::Document.new) ⇒ Object
79 80 81 82 |
# File 'lib/phlex/pdf.rb', line 79 def document(document = Prawn::Document.new) new.call(document) document end |
.render ⇒ Object
84 85 86 |
# File 'lib/phlex/pdf.rb', line 84 def render(...) document.render(...) end |
.render_file ⇒ Object
88 89 90 |
# File 'lib/phlex/pdf.rb', line 88 def render_file(...) document.render_file(...) end |
Instance Method Details
#after_template ⇒ nil
This method is abstract.
Override this method to hook in right after a template is rendered. Please remember to call super so that callbacks can be added at different layers of the inheritance tree.
43 44 45 |
# File 'lib/phlex/pdf.rb', line 43 def after_template nil end |
#around_template ⇒ nil
This method is abstract.
Override this method to hook in around a template render. You can do things before and after calling super to render the template. You should always call super so that callbacks can be added at different layers of the inheritance tree.
28 29 30 31 32 33 |
# File 'lib/phlex/pdf.rb', line 28 def around_template before_template yield after_template nil end |
#before_template ⇒ nil
This method is abstract.
Override this method to hook in right before a template is rendered. Please remember to call super so that callbacks can be added at different layers of the inheritance tree.
37 38 39 |
# File 'lib/phlex/pdf.rb', line 37 def before_template nil end |
#call(document, &block) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/phlex/pdf.rb', line 13 def call(document, &block) @document = document around_template do if block_given? view_template do yield_content(&block) end else view_template end end end |
#render(renderable, &block) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/phlex/pdf.rb', line 59 def render(renderable, &block) case renderable when Phlex::PDF renderable.call(@document, &block) when String @document.text renderable when Class render(renderable.new, &block) if renderable < Phlex::PDF when Proc, Method yield_content(&renderable) when Enumerable renderable.each { |r| render(r, &block) } else raise ArgumentError, "You can't render a #{renderable.inspect}." end nil end |
#yield_content(&block) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/phlex/pdf.rb', line 47 def yield_content(&block) return unless block_given? if block.arity.zero? # This handles lambdas and -> yield else # This handles Proc and proc yield self end end |