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 |