Sha256: e61576bdd6584c9c6fba3a9cfd0c9fbda90c4d827bacd79fccf61ef1df3dd640
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
module MakeMenu class FieldSet def initialize @fields = [] @max_widths = {} end def display build @fields.each do |field| label_cell = field[:label] .align( :right, width: @max_widths[:label] ).color(field[:label_color]) value_cel = field[:value] .align( :left, width: @max_widths[:value], pad_right: true ).color(field[:value_color]) puts "#{label_cell}#{value_cel}".align(:center) end puts end def build @max_widths[:label] = 0 @max_widths[:value] = 0 @fields.each do |field| label = field[:label] value = field[:value] = field[:handler].call label_width = label.decolor.size value_width = value.decolor.size @max_widths[:label] = label_width if label_width > @max_widths[:label] @max_widths[:value] = value_width if value_width > @max_widths[:value] end end def add(label = nil, label_color: :normal, value_color: :normal, &block) @fields << { label: label || '', label_color: label_color, value_color: value_color, handler: block } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
make_menu-1.1.0 | lib/make_menu/field_set.rb |