class ProgressBar::Format::Base

Attributes

molecules[R]

Public Class Methods

new(format_string) click to toggle source
# File lib/progress_bar/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/progress_bar/format/base.rb, line 11
def process(environment)
  processed_string = @format_string.dup

  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! '%%', '%'

  leftover_bar_length = environment.send(:length) - processed_string.length + placeholder_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