prawn-utils/lib/fourmi/prawn/utils/extensions/box.rb

54 lines
1.5 KiB
Ruby
Raw Permalink Normal View History

2022-10-14 09:05:37 +00:00
require 'fourmi/prawn/utils/extensions/text_align'
module Fourmi::Prawn::Utils
module Extensions
module Box
def textbox(content = nil, height = 40)
bounding_box([0, cursor], height: content.blank? && !block_given? ? height : nil, width: bounds.width) do
pad(5) do
indent(5) do
text content unless content.blank?
yield if block_given?
end
end
stroke_bounds
end
end
def padded_box(position, padding, **options, &block)
rounded = options.delete(:rounded)
rounded = true if rounded.nil?
bounding_box position, options do
bounding_box [padding, bounds.top - padding], width: bounds.width - 2 * padding, height: bounds.height > 2 * padding ? bounds.height - 2 * padding : nil do
yield block
move_down padding
end
if rounded
stroke_rounded_bounds
else
stroke_bounds
end
end
end
def filled_box(color, x: 0, y: cursor, width: bounds.width, height: 150, &block)
fill_color(color) do
fill_rectangle [x, y], width, height
end
bounding_box([x, y], width: width, height: height, &block)
end
def list(text, options = {})
float { indent(5) { text '- ' } }
indent 15 do
textj text, options
end
end
end
end
end
require 'prawn/document'
Prawn::Document.extensions << Fourmi::Prawn::Utils::Extensions::Box