Parent

Methods

Files

ProgressBar::Format::Base

Attributes

molecules[R]

Public Class Methods

new(format_string) click to toggle source
# File lib/ruby-progressbar/format/base.rb, line 6
def initialize(format_string)
  @format_string = format_string
  @molecules     = parse(format_string)
end

Public Instance Methods

process(environment) click to toggle source
# File lib/ruby-progressbar/format/base.rb, line 11
def process(environment)
  processed_string = @format_string.dup
  ansi_sgr_codes   = %{\e\[[\d;]+m}

  non_bar_molecules.each do |molecule|
    processed_string.gsub!("%#{molecule.key}", environment.send(molecule.method_name).to_s)
  end

  remaining_molecules = bar_molecules.size
  placeholder_length  = remaining_molecules * 2

  processed_string.gsub! '%%', '%'

  processed_string_length = processed_string.gsub(ansi_sgr_codes, '').length
  leftover_bar_length     = environment.send(:length) - processed_string_length + placeholder_length
  leftover_bar_length     = leftover_bar_length < 0 ? 0 : leftover_bar_length

  bar_molecules.each do |molecule|
    processed_string.gsub!("%#{molecule.key}", environment.send(molecule.method_name, leftover_bar_length).to_s)
  end

  processed_string
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.