gruff 0.12.2 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +66 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +34 -27
- data/CHANGELOG.md +29 -0
- data/README.md +15 -7
- data/assets/fonts/LICENSE.txt +202 -0
- data/assets/fonts/Roboto-Bold.ttf +0 -0
- data/assets/fonts/Roboto-Regular.ttf +0 -0
- data/gruff.gemspec +9 -10
- data/lib/gruff/accumulator_bar.rb +3 -1
- data/lib/gruff/area.rb +5 -8
- data/lib/gruff/bar.rb +32 -49
- data/lib/gruff/base.rb +199 -115
- data/lib/gruff/bezier.rb +4 -6
- data/lib/gruff/bullet.rb +12 -11
- data/lib/gruff/dot.rb +13 -14
- data/lib/gruff/font.rb +39 -0
- data/lib/gruff/helper/bar_conversion.rb +27 -12
- data/lib/gruff/helper/bar_value_label.rb +71 -0
- data/lib/gruff/helper/stacked_mixin.rb +1 -2
- data/lib/gruff/histogram.rb +9 -7
- data/lib/gruff/line.rb +57 -50
- data/lib/gruff/mini/bar.rb +9 -6
- data/lib/gruff/mini/legend.rb +12 -8
- data/lib/gruff/mini/pie.rb +9 -6
- data/lib/gruff/mini/side_bar.rb +9 -6
- data/lib/gruff/net.rb +9 -15
- data/lib/gruff/patch/rmagick.rb +0 -1
- data/lib/gruff/patch/string.rb +1 -1
- data/lib/gruff/pie.rb +23 -65
- data/lib/gruff/renderer/bezier.rb +8 -9
- data/lib/gruff/renderer/circle.rb +8 -9
- data/lib/gruff/renderer/dash_line.rb +9 -10
- data/lib/gruff/renderer/dot.rb +13 -14
- data/lib/gruff/renderer/ellipse.rb +8 -9
- data/lib/gruff/renderer/line.rb +8 -9
- data/lib/gruff/renderer/polygon.rb +9 -10
- data/lib/gruff/renderer/polyline.rb +8 -9
- data/lib/gruff/renderer/rectangle.rb +7 -8
- data/lib/gruff/renderer/renderer.rb +25 -40
- data/lib/gruff/renderer/text.rb +21 -29
- data/lib/gruff/scatter.rb +55 -75
- data/lib/gruff/scene.rb +28 -18
- data/lib/gruff/side_bar.rb +35 -54
- data/lib/gruff/side_stacked_bar.rb +14 -17
- data/lib/gruff/spider.rb +11 -20
- data/lib/gruff/stacked_area.rb +10 -11
- data/lib/gruff/stacked_bar.rb +14 -15
- data/lib/gruff/store/store.rb +6 -10
- data/lib/gruff/store/xy_data.rb +2 -0
- data/lib/gruff/themes.rb +6 -6
- data/lib/gruff/version.rb +1 -1
- data/lib/gruff.rb +68 -55
- data/rails_generators/gruff/templates/controller.rb +1 -1
- metadata +34 -20
- data/.rubocop_todo.yml +0 -190
- data/.travis.yml +0 -23
- data/assets/plastik/blue.png +0 -0
- data/assets/plastik/green.png +0 -0
- data/assets/plastik/red.png +0 -0
- data/lib/gruff/helper/bar_value_label_mixin.rb +0 -33
- 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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/gruff/stacked_area.rb
CHANGED
@@ -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
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
21
|
+
private
|
22
|
+
|
23
|
+
def setup_data
|
24
24
|
calculate_maximum_by_stack
|
25
25
|
super
|
26
|
+
end
|
26
27
|
|
27
|
-
|
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
|
-
|
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
|
data/lib/gruff/stacked_bar.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
45
|
-
def draw
|
44
|
+
def setup_data
|
46
45
|
calculate_maximum_by_stack
|
47
46
|
super
|
48
|
-
|
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
|
-
|
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
|
82
|
-
bar_value_label
|
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
|
-
|
88
|
-
draw_value_label(x, y, text
|
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
|
data/lib/gruff/store/store.rb
CHANGED
@@ -3,27 +3,23 @@
|
|
3
3
|
module Gruff
|
4
4
|
# @private
|
5
5
|
class Store
|
6
|
-
attr_reader :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
|
20
|
-
|
21
|
-
|
22
|
-
@norm_data << data_row.normalize(**keywords)
|
23
|
-
end
|
17
|
+
def norm_data
|
18
|
+
@norm_data || []
|
19
|
+
end
|
24
20
|
|
25
|
-
|
26
|
-
|
21
|
+
def normalize(**keywords)
|
22
|
+
@norm_data = @data.map { |data_row| data_row.normalize(**keywords) }
|
27
23
|
end
|
28
24
|
|
29
25
|
def empty?
|
data/lib/gruff/store/xy_data.rb
CHANGED
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
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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
helper/
|
16
|
-
helper/
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
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.
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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/
|
145
|
-
- assets/
|
146
|
-
- assets/
|
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/
|
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.
|
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.
|
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.
|