class Proforma::PrawnRenderer::BannerRenderer
This class understands how to ender a Proforma::Modeling::Banner component.
Constants
- NO_PADDING
- PAD_LEFT
Public Instance Methods
render(banner)
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 19 def render(banner) pdf.table( make_rows(banner), width: total_width, column_widths: make_column_widths(banner) ) end
Private Instance Methods
cell_style()
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 67 def cell_style @cell_style ||= { border_width: 0, min_font_size: 1, overflow: :shrink_to_fit, padding: 0, size: text_font_size } end
make_column_widths(banner)
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 36 def make_column_widths(banner) column_widths = [] if banner.image && banner.image_width && !text_contents(banner).empty? column_widths << banner.image_width end column_widths end
make_image_cell(banner)
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 50 def make_image_cell(banner) { image: banner.image, image_width: banner.image_width, image_height: banner.image_height, padding: 0, border_width: 0 } end
make_rows(banner)
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 29 def make_rows(banner) row = [] row << make_image_cell(banner) if banner.image row << make_text_cell(banner) unless text_contents(banner).empty? [row] end
make_text_cell(banner)
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 46 def make_text_cell(banner) pdf.make_cell(text_contents(banner), text_cell_style(!banner.image.nil?)) end
text_cell_style(pad_left)
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 77 def text_cell_style(pad_left) padding = pad_left ? PAD_LEFT : NO_PADDING cell_style.merge( inline_format: true, padding: padding ) end
text_contents(banner)
click to toggle source
# File lib/proforma/prawn_renderer/banner_renderer.rb, line 60 def text_contents(banner) contents = [] contents << "<b>#{banner.title}</b>" unless banner.title.empty? contents << banner.details.to_s unless banner.details.empty? contents.join("\n") end