graph-ruby 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graph-ruby.rb +96 -48
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d0b7f3fb2ccd309786bb71f49d33cf6a246fb62c
4
- data.tar.gz: d422ff3bc7ebbc6c2e7c4b0de0e37d9aa5a7024f
3
+ metadata.gz: 3b72695b9cdfdd262fba4ebc54bd4bee99a0a24d
4
+ data.tar.gz: b8e838de622ce8ee02fbdf7bfe3af7a1912e8cff
5
5
  SHA512:
6
- metadata.gz: cb25fd3ca243b5cae5cd04447fabfc489f8fe7305696ba3992b5b898bc4755c23e2e7ba1aaa33f272815421c59b1c0909e061fdb7f22b6fcf9034ea2da297583
7
- data.tar.gz: ef5f15ff6f6909d5aa5da98a26802075b452af806ec483b7cd0243efd2977b994faaa6694a9dd029a2fcd81f114d6c80225896020300f1cac77331ec2ddfb798
6
+ metadata.gz: 37284a9f00dc41609d1dda59fd97662edccdbf8d75a0f23e7b7121994eead36047715c96b8e35c745087f1f3fab6a861d9c89c372c6588236fb701782b816141
7
+ data.tar.gz: 9d1692f8e923bda081dec5f36a8376076aeeb51e5bc37f4eb0e70d5823fbca79416cc2963e8aa7d51ab8231650a732a77e6c2d60399e6ed6a599856cd5f4c78e
@@ -1,53 +1,113 @@
1
1
  class GraphRuby
2
2
 
3
- def self.histogram(data)
4
- Histogram.new(data)
3
+ def self.histogram!(args)
4
+ View.clear_screen
5
+ self.histogram(args)
6
+ end
7
+
8
+ def self.histogram(args)
9
+
10
+ data = args[:data]
11
+ percent = args[:percent] || false
12
+ axis = args[:axis] || 1
13
+
14
+ ValidateData.run(data)
15
+
16
+ hist = HistogramHelper.new(data, axis)
17
+ header_padding = hist.padding
18
+ View.print_heading(data, header_padding)
19
+
20
+ hist.convert_to_percentages if(percent)
21
+
22
+ View.print_numerical_value(data, header_padding)
23
+ hist.calculate_axis
24
+ View.print_marks(data, header_padding)
5
25
  end
6
26
 
7
27
  end
8
28
 
29
+ class ValidateData
9
30
 
10
- # my_hash = {a: 5, b: 6, c: 10, d: 2, e: 9}
31
+ def self.run(data)
32
+ @data = data
33
+ self.isHash
34
+ self.valuesAreNumbers
35
+ end
11
36
 
37
+ def self.isHash
38
+ raise "Data must be a hash" if (!@data.is_a?(Hash))
39
+ end
12
40
 
13
- class Histogram
14
- def initialize(my_hash = {}, axis = 1)
15
- @data = my_hash
16
- @axis = axis
17
- run
41
+ def self.valuesAreNumbers
42
+ @data.each do |key, value|
43
+ if (!value.is_a?(Fixnum) && !value.is_a?(Float))
44
+ raise "Values in data hash must be numbers"
45
+ end
46
+ end
18
47
  end
19
48
 
20
- def run
21
- clear_screen
22
- calculate_padding
23
- print_heading
24
- print_value
25
- # convert_to_percentages
26
- # calculate_axis
27
- print_values
28
- end
29
-
30
- def clear_screen
49
+ end
50
+
51
+
52
+
53
+ # my_hash = {a: 5, b: 6, c: 10, d: 2, e: 9}
54
+ class View
55
+
56
+ def self.clear_screen
31
57
  puts "\e[H\e[2J"
32
58
  end
33
59
 
34
- def print_heading
35
- @data.each do |key, value|
36
- print "%-#{@padding}s" % "#{key}"
60
+ def self.print_heading(data, padding)
61
+ data.each do |key, value|
62
+ print "%-#{padding}s" % "#{key}"
37
63
  end
38
64
  puts ""
39
- puts "-"*((@data.length*@padding)-3)
65
+ puts "-"*((data.length*padding)-3)
40
66
  end
41
67
 
42
- def print_value
43
- @data.each do |key, value|
44
- print "%-#{@padding}s" % "#{value}"
68
+ def self.print_numerical_value(data, padding)
69
+ data.each do |key, value|
70
+ print "%-#{padding}s" % "#{value}"
45
71
  end
46
72
  puts ""
47
73
  end
48
74
 
75
+ def self.print_marks(data, padding)
76
+ all_zero = false
77
+ while !all_zero
78
+ all_zero = true
79
+ data.each do |key, value|
80
+ if value > 0
81
+ print print "%-#{padding}s" % "X"
82
+ data[key] -=1
83
+ all_zero = false
84
+ else
85
+ print "%-#{padding}s" % " "
86
+ end
87
+ end
88
+ puts " "
89
+ end
90
+ end
91
+
92
+ end
93
+
94
+
95
+
96
+ class HistogramHelper
97
+
98
+ attr_reader :padding, :data
99
+
100
+ def initialize(my_hash = {}, axis = 1)
101
+ @data = my_hash
102
+ @axis = axis
103
+ @padding = calculate_padding
104
+ end
105
+
106
+
49
107
  def calculate_axis
50
- @data.each {|key, value| @data[key] = value}
108
+ if (@axis >0)
109
+ @data.each {|key, value| @data[key] = value/@axis}
110
+ end
51
111
  end
52
112
 
53
113
  def convert_to_percentages
@@ -67,33 +127,21 @@ class Histogram
67
127
  end
68
128
 
69
129
 
70
- def print_values
71
- all_zero = false
72
- while !all_zero
73
- all_zero = true
74
- @data.each do |key, value|
75
- if value > 0
76
- print print "%-#{@padding}s" % "X"
77
- @data[key] -=1
78
- all_zero = false
79
- else
80
- print "%-#{@padding}s" % " "
81
- end
82
- end
83
- puts " "
84
- end
85
- end
86
-
87
130
 
88
131
  def calculate_padding
89
- longest_length_sf = 0
132
+ longest_key_length = 0
90
133
  @data.each do |key, value|
91
- longest_length_sf = key.length if key.length > longest_length_sf
134
+ longest_key_length = key.length if key.length > longest_key_length
92
135
  end
93
136
 
94
- @padding = longest_length_sf + 3
137
+ return longest_key_length + 3
95
138
  end
96
139
 
97
140
 
98
141
 
99
- end
142
+ end
143
+
144
+
145
+
146
+
147
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graph-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amelia Downs