class Numerals::Format::Symbols::Padding

Padding a number to a given width

Attributes

adjust[RW]
fill[RW]
width[RW]

Public Class Methods

new(*args) click to toggle source

Parameters:

  • :width field width (0 for no padding)

  • :fill filling symbol; nil for no padding; 0 to use the digit zero; otherwise should be a String

  • :adjust adjust mode: :left, :right, :integer, :center

# File lib/numerals/format/symbols/padding.rb, line 13
def initialize(*args)
  @width = 0
  @fill = nil
  @adjust = :right
  set! *args
end

Public Instance Methods

inspect() click to toggle source
# File lib/numerals/format/symbols/padding.rb, line 63
def inspect
  "Format::Symbols::#{to_s}"
end
leading_zeros=(width) click to toggle source
# File lib/numerals/format/symbols/padding.rb, line 31
def leading_zeros=(width)
  @width = width
  @fill = 0
  @adjust = :internal
end
padded?() click to toggle source
# File lib/numerals/format/symbols/padding.rb, line 37
def padded?
  @width > 0 && @fill && @fill != ''
end
padding_sizes(number_size) click to toggle source

Returns size (characters of left, internal and right padding) for a number of given width (without padding)

# File lib/numerals/format/symbols/padding.rb, line 69
def padding_sizes(number_size)
  left_padding_size = internal_padding_size = right_padding_size = 0
  padding_size = width - number_size
  if padding_size > 0 && padded?
    case adjust
    when :left
      left_padding_size = padding_size
    when :right
      right_padding_size = padding_size
    when :internal
      internal_padding_size = padding_size
    when :center
      left_padding_size = (padding_size + 1) / 2
      right_padding_size = padding_size - left_padding_size
    end
  end
  [left_padding_size, internal_padding_size, right_padding_size]
end
parameters() click to toggle source
# File lib/numerals/format/symbols/padding.rb, line 41
def parameters
  { width: width, fill: fill, adjust: adjust }
end
to_s() click to toggle source
# File lib/numerals/format/symbols/padding.rb, line 45
def to_s
  params = []
  if fill == 0 && adjust == :internal
    params << "leading_zeros: #{width}"
  else
    if width != 0
      params << "width: #{width}"
    end
    if fill
      params << "fill: #{fill.inspect}"
    end
    if adjust != :right || !params.empty?
      params << "adjust: #{adjust.inspect}"
    end
  end
  "Padding[#{params.join(', ')}]"
end

Private Instance Methods

extract_options(*args) click to toggle source
# File lib/numerals/format/symbols/padding.rb, line 90
def extract_options(*args)
  options = {}
  args = args.first if args.size == 1 && args.first.kind_of?(Array)
  args.each do |arg|
    case arg
    when Integer
      options.merge! width: arg
    when String
      options.merge! fill: arg
    when :left, :right, :internal, :center
      options.merge! adjust: arg
    when Hash
      options.merge! arg
    when Format::Symbols::Padding
      options.merge! arg.parameters
    end
  end
  options
end