class Chamomile::Layout::Horizontal
Public Class Methods
Source
# File lib/chamomile/layout/horizontal.rb, line 6 def initialize(align: :top) @align = align @children = [] end
Public Instance Methods
Source
# File lib/chamomile/layout/horizontal.rb, line 11 def add(child) @children << child self end
Source
# File lib/chamomile/layout/horizontal.rb, line 16 def render(width:, height:) return "" if @children.empty? explicit = @children.select { |c| c.respond_to?(:explicit_width?) && c.explicit_width? } flexible = @children - explicit used = explicit.sum { |c| c.resolved_width(width) } flex_width = flexible.empty? ? 0 : (width - used) / flexible.size parts = @children.map do |child| w = explicit.include?(child) ? child.resolved_width(width) : flex_width child.render(width: w, height: height) end Chamomile.horizontal(parts, align: @align) end