class Graph::Bar
This class allows the display of data arrays in bar graph format
Public Class Methods
new(data = nil)
click to toggle source
Allows optionally setting the initial dataset as a parameter
# File lib/graph/bar.rb, line 25 def initialize(data = nil) data(data) mode(PrintMode::NOSCALE) scale(1) end
Public Instance Methods
data(data = nil)
click to toggle source
Get or Set the data array
# File lib/graph/bar.rb, line 34 def data(data = nil) unless data.nil? raise ArgumentError, 'Data Must Be Enumerable!', caller unless data.is_a? Enumerable @data = data end @data end
mode(mode = nil)
click to toggle source
Get or Set the print mode
# File lib/graph/bar.rb, line 46 def mode(mode = nil) unless mode.nil? raise ArgumentError, 'Invalid Print Mode!', caller unless [PrintMode::SCALE, PrintMode::NOSCALE].include? mode @mode = mode end @mode end
print(mode = nil)
click to toggle source
Print the graph to stdout, based on the print mode & scale
# File lib/graph/bar.rb, line 70 def print(mode = nil) case mode || @mode when PrintMode::NOSCALE print_noscale when PrintMode::SCALE print_scale else raise ArgumentError, 'Invalid Print Mode', caller end end
print_noscale()
click to toggle source
Print the graph without any scaling
# File lib/graph/bar.rb, line 84 def print_noscale print_scale 1 end
print_scale(scale = nil)
click to toggle source
Prints graph with a scale. Scale of 10 means every 10 values is displayed as 1 character
# File lib/graph/bar.rb, line 92 def print_scale(scale = nil) scale ||= @scale raise ArgumentError, 'Invalid Scale', caller unless scale > 0 @data.each_with_index do |count, index| printf "%02d|%s\n", index, ('#' * (count / scale)) end end
scale(scale = nil)
click to toggle source
Get or Set th print scale
# File lib/graph/bar.rb, line 58 def scale(scale = nil) unless scale.nil? raise ArgumentError, 'Invalid Scale!', caller unless scale > 0 @scale = scale end @scale end