graph-ruby 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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