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