gruff 0.10.0-java → 0.13.0-java

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +24 -4
  4. data/.rubocop_todo.yml +94 -42
  5. data/.travis.yml +3 -6
  6. data/CHANGELOG.md +35 -0
  7. data/README.md +10 -1
  8. data/assets/fonts/LICENSE.txt +202 -0
  9. data/assets/fonts/Roboto-Bold.ttf +0 -0
  10. data/assets/fonts/Roboto-Regular.ttf +0 -0
  11. data/gruff.gemspec +8 -3
  12. data/lib/gruff.rb +8 -3
  13. data/lib/gruff/accumulator_bar.rb +0 -2
  14. data/lib/gruff/area.rb +2 -6
  15. data/lib/gruff/bar.rb +35 -35
  16. data/lib/gruff/base.rb +295 -188
  17. data/lib/gruff/bezier.rb +0 -4
  18. data/lib/gruff/bullet.rb +12 -14
  19. data/lib/gruff/dot.rb +8 -33
  20. data/lib/gruff/helper/bar_conversion.rb +34 -19
  21. data/lib/gruff/helper/bar_value_label.rb +68 -0
  22. data/lib/gruff/histogram.rb +25 -25
  23. data/lib/gruff/line.rb +29 -26
  24. data/lib/gruff/mini/bar.rb +1 -1
  25. data/lib/gruff/mini/legend.rb +9 -4
  26. data/lib/gruff/mini/pie.rb +1 -2
  27. data/lib/gruff/mini/side_bar.rb +1 -2
  28. data/lib/gruff/net.rb +19 -20
  29. data/lib/gruff/patch/rmagick.rb +22 -24
  30. data/lib/gruff/patch/string.rb +7 -4
  31. data/lib/gruff/photo_bar.rb +12 -16
  32. data/lib/gruff/pie.rb +19 -30
  33. data/lib/gruff/renderer/bezier.rb +4 -3
  34. data/lib/gruff/renderer/circle.rb +4 -3
  35. data/lib/gruff/renderer/dash_line.rb +4 -3
  36. data/lib/gruff/renderer/dot.rb +4 -3
  37. data/lib/gruff/renderer/ellipse.rb +4 -3
  38. data/lib/gruff/renderer/line.rb +14 -5
  39. data/lib/gruff/renderer/polygon.rb +5 -4
  40. data/lib/gruff/renderer/polyline.rb +4 -3
  41. data/lib/gruff/renderer/rectangle.rb +3 -2
  42. data/lib/gruff/renderer/renderer.rb +31 -38
  43. data/lib/gruff/renderer/text.rb +39 -9
  44. data/lib/gruff/scatter.rb +30 -44
  45. data/lib/gruff/scene.rb +0 -1
  46. data/lib/gruff/side_bar.rb +60 -45
  47. data/lib/gruff/side_stacked_bar.rb +30 -19
  48. data/lib/gruff/spider.rb +18 -17
  49. data/lib/gruff/stacked_area.rb +8 -7
  50. data/lib/gruff/stacked_bar.rb +28 -18
  51. data/lib/gruff/store/{base_data.rb → basic_data.rb} +9 -7
  52. data/lib/gruff/store/custom_data.rb +8 -6
  53. data/lib/gruff/store/store.rb +6 -5
  54. data/lib/gruff/store/xy_data.rb +10 -7
  55. data/lib/gruff/version.rb +1 -1
  56. metadata +36 -9
  57. data/Rakefile +0 -23
  58. data/docker/Dockerfile +0 -14
  59. data/docker/build.sh +0 -4
  60. data/docker/launch.sh +0 -4
  61. data/lib/gruff/helper/bar_value_label_mixin.rb +0 -30
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gruff
4
- # @private
5
4
  class Store
6
- class BaseData < Struct.new(:label, :points, :color)
5
+ # @private
6
+ class BasicData < Struct.new(:label, :points, :color)
7
7
  def initialize(label, points, color)
8
- self.label = label.to_s
9
- self.points = Array(points)
10
- self.color = color
8
+ super(label.to_s, Array(points), color)
9
+ end
10
+
11
+ def empty?
12
+ points.empty?
11
13
  end
12
14
 
13
15
  def columns
@@ -22,9 +24,9 @@ module Gruff
22
24
  points.compact.max
23
25
  end
24
26
 
25
- def normalize(args = {})
27
+ def normalize(minimum:, spread:)
26
28
  norm_points = points.map do |point|
27
- point.nil? ? nil : (point.to_f - args[:minimum].to_f) / args[:spread]
29
+ point.nil? ? nil : (point.to_f - minimum.to_f) / spread
28
30
  end
29
31
 
30
32
  self.class.new(label, norm_points, color)
@@ -2,12 +2,14 @@
2
2
 
3
3
  module Gruff
4
4
  class Store
5
+ # @private
5
6
  class CustomData < Struct.new(:label, :points, :color, :custom)
6
7
  def initialize(label, points, color, custom = nil)
7
- self.label = label.to_s
8
- self.points = Array(points)
9
- self.color = color
10
- self.custom = custom
8
+ super(label.to_s, Array(points), color, custom)
9
+ end
10
+
11
+ def empty?
12
+ points.empty?
11
13
  end
12
14
 
13
15
  def columns
@@ -22,9 +24,9 @@ module Gruff
22
24
  points.compact.max
23
25
  end
24
26
 
25
- def normalize(args = {})
27
+ def normalize(minimum:, spread:)
26
28
  norm_points = points.map do |point|
27
- point.nil? ? nil : (point.to_f - args[:minimum].to_f) / args[:spread]
29
+ point.nil? ? nil : (point.to_f - minimum.to_f) / spread
28
30
  end
29
31
 
30
32
  self.class.new(label, norm_points, color, custom)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gruff
4
+ # @private
4
5
  class Store
5
6
  attr_reader :data, :norm_data
6
7
 
@@ -15,10 +16,10 @@ module Gruff
15
16
  @data << @data_class.new(*args)
16
17
  end
17
18
 
18
- def normalize(args = {})
19
+ def normalize(**keywords)
19
20
  unless @normalized
20
21
  @data.each do |data_row|
21
- @norm_data << data_row.normalize(args)
22
+ @norm_data << data_row.normalize(**keywords)
22
23
  end
23
24
 
24
25
  @normalized = true
@@ -26,7 +27,7 @@ module Gruff
26
27
  end
27
28
 
28
29
  def empty?
29
- @data.empty?
30
+ @data.all?(&:empty?)
30
31
  end
31
32
 
32
33
  def length
@@ -56,11 +57,11 @@ module Gruff
56
57
  end
57
58
 
58
59
  def sort_data!
59
- @data = @data.sort_by { |a| -a.points.reduce(0) { |acc, elem| acc + elem.to_f } }
60
+ @data = @data.sort_by { |a| -a.points.sum(&:to_f) }
60
61
  end
61
62
 
62
63
  def sort_norm_data!
63
- @norm_data = @norm_data.sort_by { |a| -a.points.reduce(0) { |acc, elem| acc + elem.to_f } }
64
+ @norm_data = @norm_data.sort_by { |a| -a.points.sum(&:to_f) }
64
65
  end
65
66
 
66
67
  def reverse!
@@ -2,12 +2,11 @@
2
2
 
3
3
  module Gruff
4
4
  class Store
5
+ # @private
5
6
  class XYData < Struct.new(:label, :y_points, :color, :x_points)
6
7
  def initialize(label, y_points, color, x_points = nil)
7
- self.label = label.to_s
8
- self.y_points = Array(y_points)
9
- self.color = color
10
- self.x_points = Array(x_points) if x_points
8
+ x_points = Array(x_points) if x_points
9
+ super(label.to_s, Array(y_points), color, x_points)
11
10
  end
12
11
 
13
12
  def x_points
@@ -18,6 +17,10 @@ module Gruff
18
17
  x_points.zip(y_points)
19
18
  end
20
19
 
20
+ def empty?
21
+ y_points.empty?
22
+ end
23
+
21
24
  def columns
22
25
  y_points.length
23
26
  end
@@ -40,12 +43,12 @@ module Gruff
40
43
  x_points.compact.max
41
44
  end
42
45
 
43
- def normalize(args = {})
46
+ def normalize(minimum_x:, minimum_y:, spread_x:, spread_y:)
44
47
  norm_x_points = x_points.map do |x|
45
- x.nil? ? nil : (x.to_f - args[:minimum_x].to_f) / args[:spread_x]
48
+ x.nil? ? nil : (x.to_f - minimum_x.to_f) / spread_x
46
49
  end
47
50
  norm_y_points = y_points.map do |y|
48
- y.nil? ? nil : (y.to_f - args[:minimum_y].to_f) / args[:spread_y]
51
+ y.nil? ? nil : (y.to_f - minimum_y.to_f) / spread_y
49
52
  end
50
53
 
51
54
  self.class.new(label, norm_y_points, color, norm_x_points)
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.10.0'
4
+ VERSION = '0.13.0'
5
5
  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.10.0
4
+ version: 0.13.0
5
5
  platform: java
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: 2020-05-31 00:00:00.000000000 Z
12
+ date: 2021-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  requirement: !ruby/object:Gem::Requirement
@@ -53,6 +53,20 @@ dependencies:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ name: parallel
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
56
70
  - !ruby/object:Gem::Dependency
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
@@ -67,6 +81,20 @@ dependencies:
67
81
  - - ">="
68
82
  - !ruby/object:Gem::Version
69
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ name: simplecov
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
70
98
  - !ruby/object:Gem::Dependency
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
@@ -99,13 +127,12 @@ files:
99
127
  - Gemfile
100
128
  - MIT-LICENSE
101
129
  - README.md
102
- - Rakefile
130
+ - assets/fonts/LICENSE.txt
131
+ - assets/fonts/Roboto-Bold.ttf
132
+ - assets/fonts/Roboto-Regular.ttf
103
133
  - assets/plastik/blue.png
104
134
  - assets/plastik/green.png
105
135
  - assets/plastik/red.png
106
- - docker/Dockerfile
107
- - docker/build.sh
108
- - docker/launch.sh
109
136
  - gruff.gemspec
110
137
  - init.rb
111
138
  - lib/gruff.rb
@@ -117,7 +144,7 @@ files:
117
144
  - lib/gruff/bullet.rb
118
145
  - lib/gruff/dot.rb
119
146
  - lib/gruff/helper/bar_conversion.rb
120
- - lib/gruff/helper/bar_value_label_mixin.rb
147
+ - lib/gruff/helper/bar_value_label.rb
121
148
  - lib/gruff/helper/stacked_mixin.rb
122
149
  - lib/gruff/histogram.rb
123
150
  - lib/gruff/line.rb
@@ -148,7 +175,7 @@ files:
148
175
  - lib/gruff/spider.rb
149
176
  - lib/gruff/stacked_area.rb
150
177
  - lib/gruff/stacked_bar.rb
151
- - lib/gruff/store/base_data.rb
178
+ - lib/gruff/store/basic_data.rb
152
179
  - lib/gruff/store/custom_data.rb
153
180
  - lib/gruff/store/store.rb
154
181
  - lib/gruff/store/xy_data.rb
@@ -169,7 +196,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
196
  requirements:
170
197
  - - ">="
171
198
  - !ruby/object:Gem::Version
172
- version: 1.9.3
199
+ version: 2.4.0
173
200
  required_rubygems_version: !ruby/object:Gem::Requirement
174
201
  requirements:
175
202
  - - ">="
data/Rakefile DELETED
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rake/testtask'
5
- require 'rake/clean'
6
-
7
- CLEAN.concat %w[pkg test/output/*]
8
-
9
- desc 'Run tests'
10
- task default: :test
11
-
12
- task gem: :build
13
-
14
- Rake::TestTask.new
15
-
16
- namespace :test do
17
- desc 'Run mini tests'
18
- task mini: :clean do
19
- Dir['test/test_mini*'].each do |file|
20
- system "ruby #{file}"
21
- end
22
- end
23
- end
data/docker/Dockerfile DELETED
@@ -1,14 +0,0 @@
1
- FROM ubuntu:18.04
2
-
3
- RUN apt update && apt install -y gcc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev \
4
- libmagickwand-dev wget git pkg-config && \
5
- wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.gz && \
6
- tar xvzf ruby-2.7.1.tar.gz && \
7
- cd ruby-2.7.1 && \
8
- ./configure --prefix=/usr --disable-install-rdoc && \
9
- make -j install && \
10
- cd .. && rm -rf ruby-2.7.1 && \
11
- gem install bundler -v 1.17.3 && \
12
- /usr/bin/bundle config set --local path 'vendor/bundle'
13
-
14
- WORKDIR /opt/gruff
data/docker/build.sh DELETED
@@ -1,4 +0,0 @@
1
- #!/bin/bash
2
-
3
- script_dir=$(cd $(dirname ${BASH_SOURCE:-$0}); pwd)
4
- docker build -t gruff ${script_dir}
data/docker/launch.sh DELETED
@@ -1,4 +0,0 @@
1
- #!/bin/bash
2
-
3
- prject_dir="$(cd $(dirname ${BASH_SOURCE:-$0}); pwd)/.."
4
- docker run -v $prject_dir:/opt/gruff --rm -it gruff bash
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @private
4
- module Gruff::Base::BarValueLabelMixin
5
- class BarValueLabel
6
- attr_accessor :coordinates, :values
7
-
8
- def initialize(size, bar_width)
9
- @coordinates = Array.new(size)
10
- @values = Hash.new(0)
11
- @bar_width = bar_width
12
- end
13
-
14
- def prepare_rendering(format)
15
- @coordinates.each_with_index do |(left_x, left_y, right_x, _right_y), index|
16
- value = @values[index]
17
- val = (format || '%.2f') % value
18
- y = value >= 0 ? left_y - 30 : left_y + 12
19
- yield left_x + (right_x - left_x) / 2, y, val.commify
20
- end
21
- end
22
-
23
- def prepare_sidebar_rendering(format)
24
- @coordinates.each_with_index do |(_left_x, _left_y, right_x, right_y), index|
25
- val = (format || '%.2f') % @values[index]
26
- yield right_x + 40, right_y - @bar_width / 2, val.commify
27
- end
28
- end
29
- end
30
- end