class UtilsDrawer::GraphDrawer::Graph

Public Class Methods

new(option) click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 4
def initialize(option)
  @datas = []
  @max_item_size = 0
  @max_value_size = 0
  @omission = option[:omission]
end

Public Instance Methods

add(data) click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 11
def add(data)
  @datas << data
  @max_item_size = data.item.size if @max_item_size < data.item.size
  @max_value_size = data.value if @max_value_size < data.value
end
datas_init() click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 17
def datas_init
  @datas.each do |data|
    # Adjust the data item size
    data.item = adjust_item_size(data)

    # Set the data level
    data.level = calc_data_level(data)
  end
end
to_s() click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 27
def to_s
  puts separate

  ommit_flag = false
  omitted = false

  @datas.each.with_index do |data, index|
    ommit_flag = false if ommit_flag == true && !data.value.zero?

    # First and Last
    if index.zero? || index == @datas.size - 1
      puts data.to_s

      # Omission
    elsif ommit_flag == true && omitted == false && @datas[index + 1].value.zero?
      puts draw_omission

      omitted = true

      # Omitted already
    elsif ommit_flag == true && omitted == true && @datas[index + 1].value.zero?
      next

    else
      puts data.to_s

      omitted = false
    end

    ommit_flag = true if ommit_flag == false && data.value.zero? && @omission
  end

  puts separate
end

Private Instance Methods

adjust_item_size(data) click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 64
def adjust_item_size(data)
  missing_size = @max_item_size - data.item.size

  # Nothing to do
  return data.item if missing_size.zero?

  if missing_size.even?
    ' ' * (missing_size / 2) + data.item + ' ' * (missing_size / 2)
  else
    ' ' * (missing_size / 2) + data.item + ' ' * (missing_size / 2 + 1)
  end
end
calc_data_level(data) click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 77
def calc_data_level(data)
  basis = (@max_value_size / 3).round
  if data.value <= basis * 1
    1
  elsif data.value <= basis * 2
    2
  else
    3
  end
end
draw_omission() click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 92
def draw_omission
  if @max_item_size.even?
    ' ' * (@max_item_size / 2) + '|' + ' ' * (@max_item_size / 2 - 1) + '|'
  else
    ' ' * (@max_item_size / 2) + '|' + ' ' * (@max_item_size / 2) + '|'
  end
end
separate() click to toggle source
# File lib/utils_drawer/graph_drawer/graph.rb, line 88
def separate
  '=' * (@max_item_size + 1 + (@max_value_size * 2))
end