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