class ArrayProgressItem

Attributes

extra_name[RW]
item[RW]
name[RW]
parent[RW]
progress[RW]
status[RW]

Public Class Methods

run!(parent_, item_, progress_, &block) click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 10
def self.run!(parent_, item_, progress_, &block)
  pi = ArrayProgressItem.new
  pi.parent = parent_
  pi.item = item_
  pi.progress = sprintf('[%5.1f%%] ', progress_)
  pi.run!(&block)
end

Public Instance Methods

change_name(new_name) click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 18
def change_name(new_name)
  set_name(new_name)
  reprint!
end
expand_name(extra_name) click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 23
def expand_name(extra_name)
  self.extra_name = extra_name
  reprint!
end
run!() { |item, self| ... } click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 28
def run!
  self.status = nil
  self.extra_name = ''
  
  set_name(item)
  reprint!

  self.status = process_status_code(yield(item, self))
  reprint!
  print "\n"
end

Private Instance Methods

description() click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 54
def description
  parent.description
end
display_name() click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 66
def display_name
  width = ArrayProgressConfiguration.item_width
  ret = (description + ' ' + self.name + ' ' + self.extra_name)
  ret = ret.gsub("\n", ' ')
  ret = ret.strip
  ret = ret[0..width-1]
  ret = ret.ljust(width, ' ')
  ret
end
name_colored() click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 93
def name_colored
  if status == :error
    display_name.light_white.on_light_red
  elsif status == :warning
    display_name.black.on_light_yellow
  elsif status == :skip
    display_name.white
  else
    display_name
  end
end
process_status_code(code) click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 42
def process_status_code(code)
  if code.is_a? Symbol
    code
  elsif code.is_a? TrueClass
    :ok
  elsif code.is_a? FalseClass
    :error
  else
    :unknown
  end
end
progress_colored() click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 83
def progress_colored
  if status == :error
    progress.light_white.on_light_red
  elsif status == :warning
    progress.black.on_light_yellow
  else
    progress.white
  end
end
reprint!() click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 76
def reprint!
  print "\r"
  print progress_colored
  print name_colored
  print result_colored
end
result_colored() click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 105
def result_colored
  if status == nil
    ''
  elsif status == :ok
    ' [ Success ]'.green.bold
  elsif status == :error
    ' [ Failure ]'.light_white.on_light_red
  elsif status == :warning
    ' [ Warning ]'.black.on_light_yellow
  elsif status == :skip
    ' [ Skipped ]'.white.bold
  else
    ' [ Unknown ]'.bold
  end
end
set_name(new_name) click to toggle source
# File lib/array_with_progress/array_progress_item.rb, line 58
def set_name(new_name)
  if new_name.is_a? Array
    self.name = new_name.map(&:to_s).join('|')
  else
    self.name = new_name.to_s
  end
end