gruff 0.12.2 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +66 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +34 -27
  5. data/CHANGELOG.md +29 -0
  6. data/README.md +15 -7
  7. data/assets/fonts/LICENSE.txt +202 -0
  8. data/assets/fonts/Roboto-Bold.ttf +0 -0
  9. data/assets/fonts/Roboto-Regular.ttf +0 -0
  10. data/gruff.gemspec +9 -10
  11. data/lib/gruff/accumulator_bar.rb +3 -1
  12. data/lib/gruff/area.rb +5 -8
  13. data/lib/gruff/bar.rb +32 -49
  14. data/lib/gruff/base.rb +199 -115
  15. data/lib/gruff/bezier.rb +4 -6
  16. data/lib/gruff/bullet.rb +12 -11
  17. data/lib/gruff/dot.rb +13 -14
  18. data/lib/gruff/font.rb +39 -0
  19. data/lib/gruff/helper/bar_conversion.rb +27 -12
  20. data/lib/gruff/helper/bar_value_label.rb +71 -0
  21. data/lib/gruff/helper/stacked_mixin.rb +1 -2
  22. data/lib/gruff/histogram.rb +9 -7
  23. data/lib/gruff/line.rb +57 -50
  24. data/lib/gruff/mini/bar.rb +9 -6
  25. data/lib/gruff/mini/legend.rb +12 -8
  26. data/lib/gruff/mini/pie.rb +9 -6
  27. data/lib/gruff/mini/side_bar.rb +9 -6
  28. data/lib/gruff/net.rb +9 -15
  29. data/lib/gruff/patch/rmagick.rb +0 -1
  30. data/lib/gruff/patch/string.rb +1 -1
  31. data/lib/gruff/pie.rb +23 -65
  32. data/lib/gruff/renderer/bezier.rb +8 -9
  33. data/lib/gruff/renderer/circle.rb +8 -9
  34. data/lib/gruff/renderer/dash_line.rb +9 -10
  35. data/lib/gruff/renderer/dot.rb +13 -14
  36. data/lib/gruff/renderer/ellipse.rb +8 -9
  37. data/lib/gruff/renderer/line.rb +8 -9
  38. data/lib/gruff/renderer/polygon.rb +9 -10
  39. data/lib/gruff/renderer/polyline.rb +8 -9
  40. data/lib/gruff/renderer/rectangle.rb +7 -8
  41. data/lib/gruff/renderer/renderer.rb +25 -40
  42. data/lib/gruff/renderer/text.rb +21 -29
  43. data/lib/gruff/scatter.rb +55 -75
  44. data/lib/gruff/scene.rb +28 -18
  45. data/lib/gruff/side_bar.rb +35 -54
  46. data/lib/gruff/side_stacked_bar.rb +14 -17
  47. data/lib/gruff/spider.rb +11 -20
  48. data/lib/gruff/stacked_area.rb +10 -11
  49. data/lib/gruff/stacked_bar.rb +14 -15
  50. data/lib/gruff/store/store.rb +6 -10
  51. data/lib/gruff/store/xy_data.rb +2 -0
  52. data/lib/gruff/themes.rb +6 -6
  53. data/lib/gruff/version.rb +1 -1
  54. data/lib/gruff.rb +68 -55
  55. data/rails_generators/gruff/templates/controller.rb +1 -1
  56. metadata +34 -20
  57. data/.rubocop_todo.yml +0 -190
  58. data/.travis.yml +0 -23
  59. data/assets/plastik/blue.png +0 -0
  60. data/assets/plastik/green.png +0 -0
  61. data/assets/plastik/red.png +0 -0
  62. data/lib/gruff/helper/bar_value_label_mixin.rb +0 -33
  63. data/lib/gruff/photo_bar.rb +0 -93
data/lib/gruff/spider.rb CHANGED
@@ -20,7 +20,7 @@ class Gruff::Spider < Gruff::Base
20
20
  attr_writer :rotation
21
21
 
22
22
  def transparent_background=(value)
23
- Gruff::Renderer.setup_transparent_background(@columns, @rows) if value
23
+ renderer.transparent_background(@columns, @rows) if value
24
24
  end
25
25
 
26
26
  def hide_text=(value)
@@ -32,22 +32,21 @@ class Gruff::Spider < Gruff::Base
32
32
  @max_value = max_value
33
33
  end
34
34
 
35
- def initialize_ivars
35
+ private
36
+
37
+ def initialize_attributes
36
38
  super
37
39
  @hide_legend = true
38
40
  @hide_axes = false
39
41
  @hide_text = false
40
42
  @rotation = 0
41
- end
42
- private :initialize_ivars
43
+ @marker_font.bold = true
43
44
 
44
- def draw
45
45
  @hide_line_markers = true
46
+ @hide_line_markers.freeze
47
+ end
46
48
 
47
- super
48
-
49
- return unless data_given?
50
-
49
+ def draw_graph
51
50
  # Setup basic positioning
52
51
  radius = @graph_height / 2.0
53
52
  center_x = @graph_left + (@graph_width / 2.0)
@@ -64,8 +63,6 @@ class Gruff::Spider < Gruff::Base
64
63
  draw_polygon(center_x, center_y, additive_angle)
65
64
  end
66
65
 
67
- private
68
-
69
66
  def normalize_points(value)
70
67
  value * @unit_length
71
68
  end
@@ -77,9 +74,7 @@ private
77
74
  x = x_offset + ((radius + r_offset) * Math.cos(angle))
78
75
  y = y_offset + ((radius + r_offset) * Math.sin(angle))
79
76
 
80
- # Draw label
81
- text_renderer = Gruff::Renderer::Text.new(amount, font: @font, size: @legend_font_size, color: @marker_color, weight: Magick::BoldWeight)
82
- text_renderer.add_to_render_queue(0, 0, x, y, Magick::CenterGravity)
77
+ draw_label_at(1.0, 1.0, x, y, amount, Magick::CenterGravity)
83
78
  end
84
79
 
85
80
  def draw_axes(center_x, center_y, radius, additive_angle, line_color = nil)
@@ -91,7 +86,7 @@ private
91
86
  x_offset = radius * Math.cos(current_angle)
92
87
  y_offset = radius * Math.sin(current_angle)
93
88
 
94
- Gruff::Renderer::Line.new(color: line_color || data_row.color, width: 5.0)
89
+ Gruff::Renderer::Line.new(renderer, color: line_color || data_row.color, width: 5.0)
95
90
  .render(center_x, center_y, center_x + x_offset, center_y + y_offset)
96
91
 
97
92
  draw_label(center_x, center_y, current_angle, radius, data_row.label.to_s) unless @hide_text
@@ -110,10 +105,6 @@ private
110
105
  current_angle += additive_angle
111
106
  end
112
107
 
113
- Gruff::Renderer::Polygon.new(color: color || @marker_color, opacity: 0.4).render(points)
114
- end
115
-
116
- def sums_for_spider
117
- store.data.sum { |data_row| data_row.points.first }
108
+ Gruff::Renderer::Polygon.new(renderer, color: color || @marker_color, opacity: 0.4).render(points)
118
109
  end
119
110
  end
@@ -12,27 +12,26 @@
12
12
  #
13
13
  class Gruff::StackedArea < Gruff::Base
14
14
  include StackedMixin
15
- attr_writer :last_series_goes_on_bottom
16
15
 
17
- def initialize_ivars
18
- super
19
- @last_series_goes_on_bottom = false
16
+ # @deprecated
17
+ def last_series_goes_on_bottom=(_value)
18
+ warn '#last_series_goes_on_bottom is deprecated. It is no longer effective.'
20
19
  end
21
- private :initialize_ivars
22
20
 
23
- def draw
21
+ private
22
+
23
+ def setup_data
24
24
  calculate_maximum_by_stack
25
25
  super
26
+ end
26
27
 
27
- return unless data_given?
28
-
28
+ def draw_graph
29
29
  x_increment = @graph_width / (column_count - 1).to_f
30
30
 
31
31
  height = Array.new(column_count, 0)
32
32
 
33
33
  data_points = nil
34
- iterator = @last_series_goes_on_bottom ? :reverse_each : :each
35
- store.norm_data.public_send(iterator) do |data_row|
34
+ store.norm_data.each do |data_row|
36
35
  prev_data_points = data_points
37
36
  data_points = []
38
37
 
@@ -64,7 +63,7 @@ class Gruff::StackedArea < Gruff::Base
64
63
  poly_points << data_points[0]
65
64
  poly_points << data_points[1]
66
65
 
67
- Gruff::Renderer::Polygon.new(color: data_row.color).render(poly_points)
66
+ Gruff::Renderer::Polygon.new(renderer, color: data_row.color).render(poly_points)
68
67
  end
69
68
  end
70
69
  end
@@ -12,7 +12,6 @@
12
12
  #
13
13
  class Gruff::StackedBar < Gruff::Base
14
14
  include StackedMixin
15
- include BarValueLabelMixin
16
15
 
17
16
  # Spacing factor applied between bars.
18
17
  attr_writer :bar_spacing
@@ -20,7 +19,7 @@ class Gruff::StackedBar < Gruff::Base
20
19
  # Number of pixels between bar segments.
21
20
  attr_writer :segment_spacing
22
21
 
23
- # Set the number output format for labels using sprintf.
22
+ # Set the number output format string or lambda.
24
23
  # Default is +"%.2f"+.
25
24
  attr_writer :label_formatting
26
25
 
@@ -31,7 +30,9 @@ class Gruff::StackedBar < Gruff::Base
31
30
  # Prevent drawing of column labels below a stacked bar graph. Default is +false+.
32
31
  attr_writer :hide_labels
33
32
 
34
- def initialize_ivars
33
+ private
34
+
35
+ def initialize_attributes
35
36
  super
36
37
  @bar_spacing = 0.9
37
38
  @segment_spacing = 2
@@ -39,14 +40,14 @@ class Gruff::StackedBar < Gruff::Base
39
40
  @show_labels_for_bar_values = false
40
41
  @hide_labels = false
41
42
  end
42
- private :initialize_ivars
43
43
 
44
- # Draws a bar graph, but multiple sets are stacked on top of each other.
45
- def draw
44
+ def setup_data
46
45
  calculate_maximum_by_stack
47
46
  super
48
- return unless data_given?
47
+ end
49
48
 
49
+ # Draws a bar graph, but multiple sets are stacked on top of each other.
50
+ def draw_graph
50
51
  # Setup spacing.
51
52
  #
52
53
  # Columns sit stacked.
@@ -54,7 +55,7 @@ class Gruff::StackedBar < Gruff::Base
54
55
  padding = (bar_width * (1 - @bar_spacing)) / 2
55
56
 
56
57
  height = Array.new(column_count, 0)
57
- bar_value_label = BarValueLabel.new(column_count, bar_width)
58
+ stack_bar_value_label = Gruff::BarValueLabel::StackedBar.new
58
59
 
59
60
  store.norm_data.each_with_index do |data_row, row_index|
60
61
  data_row.points.each_with_index do |data_point, point_index|
@@ -71,27 +72,25 @@ class Gruff::StackedBar < Gruff::Base
71
72
  # update the total height of the current stacked bar
72
73
  height[point_index] += (data_point * @graph_height)
73
74
 
74
- rect_renderer = Gruff::Renderer::Rectangle.new(color: data_row.color)
75
+ rect_renderer = Gruff::Renderer::Rectangle.new(renderer, color: data_row.color)
75
76
  rect_renderer.render(left_x, left_y, right_x, right_y)
76
77
 
77
78
  # Calculate center based on bar_width and current row
78
79
  label_center = left_x + bar_width * @bar_spacing / 2.0
79
80
  draw_label(label_center, point_index)
80
81
 
81
- bar_value_label.coordinates[point_index] = [left_x, left_y, right_x, right_y]
82
- bar_value_label.values[point_index] += store.data[row_index].points[point_index]
82
+ bar_value_label = Gruff::BarValueLabel::Bar.new([left_x, left_y, right_x, right_y], store.data[row_index].points[point_index])
83
+ stack_bar_value_label.add(bar_value_label, point_index)
83
84
  end
84
85
  end
85
86
 
86
87
  if @show_labels_for_bar_values
87
- bar_value_label.prepare_rendering(@label_formatting) do |x, y, text|
88
- draw_value_label(x, y, text, true)
88
+ stack_bar_value_label.prepare_rendering(@label_formatting, bar_width) do |x, y, text|
89
+ draw_value_label(x, y, text)
89
90
  end
90
91
  end
91
92
  end
92
93
 
93
- protected
94
-
95
94
  def hide_labels?
96
95
  @hide_labels
97
96
  end
@@ -3,27 +3,23 @@
3
3
  module Gruff
4
4
  # @private
5
5
  class Store
6
- attr_reader :data, :norm_data
6
+ attr_reader :data
7
7
 
8
8
  def initialize(data_class)
9
9
  @data_class = data_class
10
10
  @data = []
11
- @norm_data = []
12
- @normalized = false
13
11
  end
14
12
 
15
13
  def add(*args)
16
14
  @data << @data_class.new(*args)
17
15
  end
18
16
 
19
- def normalize(**keywords)
20
- unless @normalized
21
- @data.each do |data_row|
22
- @norm_data << data_row.normalize(**keywords)
23
- end
17
+ def norm_data
18
+ @norm_data || []
19
+ end
24
20
 
25
- @normalized = true
26
- end
21
+ def normalize(**keywords)
22
+ @norm_data = @data.map { |data_row| data_row.normalize(**keywords) }
27
23
  end
28
24
 
29
25
  def empty?
@@ -9,6 +9,8 @@ module Gruff
9
9
  super(label.to_s, Array(y_points), color, x_points)
10
10
  end
11
11
 
12
+ alias points y_points
13
+
12
14
  def x_points
13
15
  self[:x_points] || Array.new(y_points.length)
14
16
  end
data/lib/gruff/themes.rb CHANGED
@@ -16,7 +16,7 @@ module Gruff
16
16
  marker_color: 'white',
17
17
  font_color: 'white',
18
18
  background_colors: %w[black #4a465a]
19
- }
19
+ }.freeze
20
20
 
21
21
  # A color scheme plucked from the colors on the popular usability blog.
22
22
  THIRTYSEVEN_SIGNALS = {
@@ -32,7 +32,7 @@ module Gruff
32
32
  marker_color: 'black',
33
33
  font_color: 'black',
34
34
  background_colors: %w[#d1edf5 white]
35
- }
35
+ }.freeze
36
36
 
37
37
  # A color scheme from the colors used on the 2005 Rails keynote
38
38
  # presentation at RubyConf.
@@ -49,7 +49,7 @@ module Gruff
49
49
  marker_color: 'white',
50
50
  font_color: 'white',
51
51
  background_colors: %w[#0083a3 #0083a3]
52
- }
52
+ }.freeze
53
53
 
54
54
  # A color scheme similar to that used on the popular podcast site.
55
55
  ODEO = {
@@ -65,7 +65,7 @@ module Gruff
65
65
  marker_color: 'white',
66
66
  font_color: 'white',
67
67
  background_colors: %w[#ff47a4 #ff1f81]
68
- }
68
+ }.freeze
69
69
 
70
70
  # A pastel theme
71
71
  PASTEL = {
@@ -81,7 +81,7 @@ module Gruff
81
81
  marker_color: '#aea9a9', # Grey
82
82
  font_color: 'black',
83
83
  background_colors: 'white'
84
- }
84
+ }.freeze
85
85
 
86
86
  # A greyscale theme
87
87
  GREYSCALE = {
@@ -96,6 +96,6 @@ module Gruff
96
96
  marker_color: '#aea9a9', # Grey
97
97
  font_color: 'black',
98
98
  background_colors: 'white'
99
- }
99
+ }.freeze
100
100
  end
101
101
  end
data/lib/gruff/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gruff
4
- VERSION = '0.12.2'
4
+ VERSION = '0.15.0'
5
5
  end
data/lib/gruff.rb CHANGED
@@ -1,61 +1,74 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rmagick'
4
+
5
+ require 'gruff/patch/rmagick'
6
+ require 'gruff/patch/string'
7
+ require 'gruff/renderer/renderer'
8
+ require 'gruff/store/store'
9
+ require 'gruff/font'
10
+ require 'gruff/base'
4
11
  require 'gruff/version'
5
12
 
6
- # Extra full path added to fix loading errors on some installations.
7
-
8
- %w[
9
- patch/rmagick
10
- patch/string
11
-
12
- base
13
-
14
- helper/bar_conversion.rb
15
- helper/stacked_mixin
16
- helper/bar_value_label_mixin
17
-
18
- themes
19
- area
20
- bar
21
- bezier
22
- bullet
23
- dot
24
- histogram
25
- line
26
- net
27
- pie
28
- scatter
29
- spider
30
- side_bar
31
- stacked_area
32
- stacked_bar
33
- side_stacked_bar
34
- accumulator_bar
35
-
36
- scene
37
-
38
- renderer/renderer
39
- renderer/rectangle
40
- renderer/circle
41
- renderer/dash_line
42
- renderer/line
43
- renderer/polyline
44
- renderer/polygon
45
- renderer/bezier
46
- renderer/ellipse
47
- renderer/dot
48
- renderer/text
49
-
50
- store/store
51
- store/basic_data
52
- store/custom_data
53
- store/xy_data
54
-
55
- mini/legend
56
- mini/bar
57
- mini/pie
58
- mini/side_bar
59
- ].each do |filename|
60
- require "gruff/#{filename}"
13
+ ##
14
+ # = Gruff. Graphs.
15
+ #
16
+ module Gruff
17
+ # @private
18
+ def self.libpath(path)
19
+ File.join(__dir__, 'gruff', path)
20
+ end
21
+
22
+ autoload :BarConversion, Gruff.libpath('helper/bar_conversion')
23
+ autoload :BarValueLabel, Gruff.libpath('helper/bar_value_label')
24
+ class Base
25
+ autoload :StackedMixin, Gruff.libpath('helper/stacked_mixin')
26
+ end
27
+
28
+ autoload :AccumulatorBar, Gruff.libpath('accumulator_bar')
29
+ autoload :Area, Gruff.libpath('area')
30
+ autoload :Bar, Gruff.libpath('bar')
31
+ autoload :Bezier, Gruff.libpath('bezier')
32
+ autoload :Bullet, Gruff.libpath('bullet')
33
+ autoload :Dot, Gruff.libpath('dot')
34
+ autoload :Histogram, Gruff.libpath('histogram')
35
+ autoload :Line, Gruff.libpath('line')
36
+ autoload :Net, Gruff.libpath('net')
37
+ autoload :Pie, Gruff.libpath('pie')
38
+ autoload :Scatter, Gruff.libpath('scatter')
39
+ autoload :Scene, Gruff.libpath('scene')
40
+ autoload :SideBar, Gruff.libpath('side_bar')
41
+ autoload :SideStackedBar, Gruff.libpath('side_stacked_bar')
42
+ autoload :Spider, Gruff.libpath('spider')
43
+ autoload :StackedArea, Gruff.libpath('stacked_area')
44
+ autoload :StackedBar, Gruff.libpath('stacked_bar')
45
+
46
+ autoload :Layer, Gruff.libpath('scene')
47
+ autoload :Themes, Gruff.libpath('themes')
48
+
49
+ class Renderer
50
+ autoload :Bezier, Gruff.libpath('renderer/bezier')
51
+ autoload :Circle, Gruff.libpath('renderer/circle')
52
+ autoload :DashLine, Gruff.libpath('renderer/dash_line')
53
+ autoload :Dot, Gruff.libpath('renderer/dot')
54
+ autoload :Ellipse, Gruff.libpath('renderer/ellipse')
55
+ autoload :Line, Gruff.libpath('renderer/line')
56
+ autoload :Polygon, Gruff.libpath('renderer/polygon')
57
+ autoload :Polyline, Gruff.libpath('renderer/polyline')
58
+ autoload :Rectangle, Gruff.libpath('renderer/rectangle')
59
+ autoload :Text, Gruff.libpath('renderer/text')
60
+ end
61
+
62
+ class Store
63
+ autoload :BasicData, Gruff.libpath('store/basic_data')
64
+ autoload :CustomData, Gruff.libpath('store/custom_data')
65
+ autoload :XYData, Gruff.libpath('store/xy_data')
66
+ end
67
+
68
+ module Mini
69
+ autoload :Bar, Gruff.libpath('mini/bar')
70
+ autoload :Legend, Gruff.libpath('mini/legend')
71
+ autoload :Pie, Gruff.libpath('mini/pie')
72
+ autoload :SideBar, Gruff.libpath('mini/side_bar')
73
+ end
61
74
  end
@@ -26,7 +26,7 @@ class <%= controller_class_name %>Controller < ApplicationController
26
26
 
27
27
  g.labels = {0 => '2004', 2 => '2005', 4 => '2006'}
28
28
 
29
- send_data(g.to_blob, :disposition => 'inline', :type => 'image/png', :filename => "gruff.png")
29
+ send_data(g.to_image.to_blob, :disposition => 'inline', :type => 'image/png', :filename => "gruff.png")
30
30
  end
31
31
 
32
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gruff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geoffrey Grosenbach
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-04-24 00:00:00.000000000 Z
12
+ date: 2022-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rmagick
@@ -17,42 +17,56 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: '4.2'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '4.2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rubocop
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.11.0
34
+ version: 1.27.0
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.11.0
41
+ version: 1.27.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rubocop-performance
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 1.10.1
48
+ version: 1.13.3
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 1.10.1
55
+ version: 1.13.3
56
+ - !ruby/object:Gem::Dependency
57
+ name: rubocop-rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 0.6.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.6.0
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: histogram
58
72
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +96,7 @@ dependencies:
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0'
84
98
  - !ruby/object:Gem::Dependency
85
- name: parallel
99
+ name: minitest-reporters
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - ">="
@@ -96,7 +110,7 @@ dependencies:
96
110
  - !ruby/object:Gem::Version
97
111
  version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
- name: minitest-reporters
113
+ name: simplecov
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
116
  - - ">="
@@ -132,18 +146,17 @@ extra_rdoc_files: []
132
146
  files:
133
147
  - ".editorconfig"
134
148
  - ".github/ISSUE_TEMPLATE.md"
149
+ - ".github/workflows/ci.yml"
135
150
  - ".gitignore"
136
151
  - ".rubocop.yml"
137
- - ".rubocop_todo.yml"
138
- - ".travis.yml"
139
152
  - ".yardopts"
140
153
  - CHANGELOG.md
141
154
  - Gemfile
142
155
  - MIT-LICENSE
143
156
  - README.md
144
- - assets/plastik/blue.png
145
- - assets/plastik/green.png
146
- - assets/plastik/red.png
157
+ - assets/fonts/LICENSE.txt
158
+ - assets/fonts/Roboto-Bold.ttf
159
+ - assets/fonts/Roboto-Regular.ttf
147
160
  - gruff.gemspec
148
161
  - init.rb
149
162
  - lib/gruff.rb
@@ -154,8 +167,9 @@ files:
154
167
  - lib/gruff/bezier.rb
155
168
  - lib/gruff/bullet.rb
156
169
  - lib/gruff/dot.rb
170
+ - lib/gruff/font.rb
157
171
  - lib/gruff/helper/bar_conversion.rb
158
- - lib/gruff/helper/bar_value_label_mixin.rb
172
+ - lib/gruff/helper/bar_value_label.rb
159
173
  - lib/gruff/helper/stacked_mixin.rb
160
174
  - lib/gruff/histogram.rb
161
175
  - lib/gruff/line.rb
@@ -166,7 +180,6 @@ files:
166
180
  - lib/gruff/net.rb
167
181
  - lib/gruff/patch/rmagick.rb
168
182
  - lib/gruff/patch/string.rb
169
- - lib/gruff/photo_bar.rb
170
183
  - lib/gruff/pie.rb
171
184
  - lib/gruff/renderer/bezier.rb
172
185
  - lib/gruff/renderer/circle.rb
@@ -198,7 +211,8 @@ files:
198
211
  homepage: https://github.com/topfunky/gruff
199
212
  licenses:
200
213
  - MIT
201
- metadata: {}
214
+ metadata:
215
+ rubygems_mfa_required: 'true'
202
216
  post_install_message:
203
217
  rdoc_options: []
204
218
  require_paths:
@@ -207,14 +221,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
207
221
  requirements:
208
222
  - - ">="
209
223
  - !ruby/object:Gem::Version
210
- version: 2.4.0
224
+ version: 2.5.0
211
225
  required_rubygems_version: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - ">="
214
228
  - !ruby/object:Gem::Version
215
229
  version: '0'
216
230
  requirements: []
217
- rubygems_version: 3.1.4
231
+ rubygems_version: 3.3.7
218
232
  signing_key:
219
233
  specification_version: 4
220
234
  summary: Beautiful graphs for one or multiple datasets.