gruff 0.24.0-java → 0.26.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ef07020e21d2f77bf04e8c90d0990bbd00a64bb5e44fbceb8d485f255d8f3ce
4
- data.tar.gz: e6073f86bff07eb0b02045ff8da1c2f5937efee11f6574667091cd8fc21f5767
3
+ metadata.gz: fc81683c78f26b76aee4c5616f94c619a07fe1098ef6fbd3c3405d6fae6e8c6b
4
+ data.tar.gz: eb0ef5989ab19973bd19fca65b5dc9c6098c66e9f19dd735c9f58810fa342188
5
5
  SHA512:
6
- metadata.gz: b919327dfe6fb6b1a7ab52a262b12768e7c759d3d73e1b58e25a580f3e19241f3e983fca931917950352a6bc53a2d45f53a0c9438ca7302794b6c389d481c961
7
- data.tar.gz: 6d99017cb356942f66cae454d364ce059a2abc32e79ff7aba0ceb03e4f5335ce3b885188e4ee18cc26639ca409a049afc325e58469a47429656e0e6e18f876ec
6
+ metadata.gz: 504829c21472a69d214061741beabd6cb90bb5ae29c3f1ca605d6dfdda85170f9cd84b52e6daf7b6230d7210d0ed7d4345ee4cd13266857242450e277d64a7ba
7
+ data.tar.gz: e5c0b29c9996f22a12ae7dc457dc09801729eadb015753d87d010d21dcfa57b050dea63958876a6fc057a3cd011035f6306452a492cd1cc73c5172cbb33f9849
data/.editorconfig CHANGED
@@ -7,8 +7,8 @@ end_of_line = lf
7
7
  charset = utf-8
8
8
  trim_trailing_whitespace = true
9
9
  insert_final_newline = true
10
- indent_style = spaces
10
+ indent_style = space
11
11
  tab_width = 2
12
12
 
13
- [{*.{rb,yml,md}]
13
+ [*.{rb,yml,md}]
14
14
  indent_size = 2
@@ -0,0 +1,41 @@
1
+ name: Report
2
+ description: Create a report.
3
+ body:
4
+ - type: textarea
5
+ id: description
6
+ attributes:
7
+ label: Description
8
+ description: A description of the bug or feature.
9
+ validations:
10
+ required: true
11
+ - type: textarea
12
+ id: reproduce
13
+ attributes:
14
+ label: Steps to Reproduce
15
+ description: |
16
+ List of steps, sample code, failing test or link to a project that reproduces the behavior.
17
+ Make sure you place a stack trace inside a code (```) block to avoid linking unrelated issues.
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: environment
22
+ attributes:
23
+ label: System Configuration
24
+ description: Tell us about the environment where you are experiencing the bug.
25
+ value: |
26
+ - ImageMagick version:
27
+ - RMagick version:
28
+ - Gruff version:
29
+ - Ruby version:
30
+ - Environment (Operating system, version and so on):
31
+ - Additional information:
32
+ render: markdown
33
+ validations:
34
+ required: true
35
+ - type: textarea
36
+ id: addtional-context
37
+ attributes:
38
+ label: Additional context
39
+ description: Add any other context about the problem here.
40
+ validations:
41
+ required: false
@@ -11,17 +11,33 @@ permissions:
11
11
 
12
12
  jobs:
13
13
  lint:
14
- runs-on: ubuntu-22.04
14
+ runs-on: ubuntu-24.04
15
15
  timeout-minutes: 20
16
- name: Lint
16
+ strategy:
17
+ matrix:
18
+ ruby-version: ['3.0']
19
+ imagemagick-version:
20
+ - { full: 7.1.1-33, major-minor: '7.1' }
21
+ name: Lint (Ruby ${{ matrix.ruby-version }}, ImageMagick ${{ matrix.imagemagick-version.major-minor }})
17
22
  steps:
18
23
  - uses: actions/checkout@v4
19
24
  with:
20
25
  ref: ${{ github.event.pull_request.head.sha }}
21
- - name: Set up Ruby 2.6
26
+ - name: Cache ImageMagick
27
+ uses: actions/cache@v4
28
+ with:
29
+ path: ./build-ImageMagick
30
+ key: v1-linux-imagemagick-${{ matrix.imagemagick-version.full }}
31
+ restore-keys: |
32
+ v1-linux-imagemagick-${{ matrix.imagemagick-version.full }}
33
+ - name: Install ImageMagick ${{ matrix.imagemagick-version.full }}
34
+ run: |
35
+ export IMAGEMAGICK_VERSION=${{ matrix.imagemagick-version.full }}
36
+ ./before_install_linux.sh
37
+ - name: Set up Ruby ${{ matrix.ruby-version }}
22
38
  uses: ruby/setup-ruby@master
23
39
  with:
24
- ruby-version: '2.6'
40
+ ruby-version: ${{ matrix.ruby-version }}
25
41
  bundler-cache: true
26
42
  - name: Install dependencies
27
43
  run: bundle install --path=vendor/bundle --jobs 4 --retry 3
@@ -31,13 +47,13 @@ jobs:
31
47
  run: bundle exec rubocop
32
48
 
33
49
  test-ruby:
34
- runs-on: ubuntu-22.04
50
+ runs-on: ubuntu-24.04
35
51
  timeout-minutes: 20
36
52
  strategy:
37
53
  matrix:
38
- ruby-version: ['2.6', '2.7', '3.0', '3.1', '3.2', '3.3']
54
+ ruby-version: ['3.0', '3.1', '3.2', '3.3', '3.4']
39
55
  imagemagick-version:
40
- - { full: 7.1.1-15, major-minor: '7.1' }
56
+ - { full: 7.1.1-33, major-minor: '7.1' }
41
57
  name: Ruby ${{ matrix.ruby-version }}
42
58
  steps:
43
59
  - uses: actions/checkout@v4
@@ -63,11 +79,11 @@ jobs:
63
79
  run: bundle exec rake
64
80
 
65
81
  test-jruby:
66
- runs-on: ubuntu-22.04
82
+ runs-on: ubuntu-24.04
67
83
  timeout-minutes: 20
68
84
  strategy:
69
85
  matrix:
70
- ruby-version: ['9.3.10.0', '9.4.3.0']
86
+ ruby-version: ['9.4.7.0']
71
87
  name: JRuby ${{ matrix.ruby-version }}
72
88
  steps:
73
89
  - uses: actions/checkout@v4
data/.rubocop.yml CHANGED
@@ -1,25 +1,26 @@
1
- require:
1
+ plugins:
2
2
  - rubocop-minitest
3
3
  - rubocop-performance
4
4
  - rubocop-rake
5
5
 
6
6
  AllCops:
7
7
  EnabledByDefault: true
8
- TargetRubyVersion: 2.6
8
+ TargetRubyVersion: 3.0
9
9
  Exclude:
10
10
  - 'vendor/bundle/**/*'
11
11
  - 'rails_generators/gruff/**/*'
12
+ - 'build-ImageMagick/**/*'
12
13
 
13
14
  Metrics:
14
15
  Enabled: false
15
16
 
16
- Gemspec/DependencyVersion:
17
+ Bundler/GemComment:
17
18
  Enabled: false
18
19
 
19
- Gemspec/DevelopmentDependencies:
20
+ Bundler/GemVersion:
20
21
  Enabled: false
21
22
 
22
- Gemspec/OrderedDependencies:
23
+ Gemspec/DependencyVersion:
23
24
  Enabled: false
24
25
 
25
26
  Gemspec/RequiredRubyVersion:
@@ -67,6 +68,9 @@ Naming/VariableNumber:
67
68
  Style/AccessorGrouping:
68
69
  Enabled: false
69
70
 
71
+ Style/ArrayFirstLast:
72
+ Enabled: false
73
+
70
74
  Style/ClassAndModuleChildren:
71
75
  Enabled: false
72
76
 
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.26.0
4
+
5
+ - Allow customizing No Data font size (#642)
6
+
7
+ ## 0.25.0
8
+ - Add bigdecimal gem as dependency for Ruby 3.4
9
+ - Update dependent RMagick version to 5.5.0 or later
10
+ - Drop Ruby 2.6 and 2.7 support (#632)
11
+
3
12
  ## 0.24.0
4
13
  - Add the way to make background transparent (#631)
5
14
  - Adjust line number position on side graph (#624)
data/Gemfile CHANGED
@@ -4,3 +4,15 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in gruff.gemspec
6
6
  gemspec
7
+
8
+ unless defined? JRUBY_VERSION
9
+ gem 'rubocop', '~> 1.66'
10
+ gem 'rubocop-minitest', '~> 0.36'
11
+ gem 'rubocop-performance', '~> 1.21'
12
+ gem 'rubocop-rake', '~> 0.6'
13
+ end
14
+
15
+ gem 'minitest-reporters'
16
+ gem 'rake'
17
+ gem 'simplecov'
18
+ gem 'yard', '~> 0.9.28'
data/README.md CHANGED
@@ -144,8 +144,8 @@ http://www.rubydoc.info/github/topfunky/gruff/frames
144
144
 
145
145
  ## Supported Ruby Versions
146
146
 
147
- - Ruby 2.6 or later
148
- - JRuby 9.3.x or later
147
+ - Ruby 3.0 or later
148
+ - JRuby 9.4.x or later
149
149
 
150
150
  ## Development
151
151
  1. Build docker image
data/gruff.gemspec CHANGED
@@ -22,19 +22,13 @@ Gem::Specification.new do |s|
22
22
  s.platform = 'java'
23
23
  s.add_dependency 'rmagick4j'
24
24
  else
25
- s.add_dependency 'rmagick', '>= 5.3'
26
- s.add_development_dependency 'rubocop', '~> 1.50.2'
27
- s.add_development_dependency 'rubocop-minitest', '~> 0.30.0'
28
- s.add_development_dependency 'rubocop-performance', '~> 1.17.1'
29
- s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
25
+ s.add_dependency 'rmagick', '>= 5.5'
30
26
  end
27
+ s.add_dependency 'bigdecimal', '>= 3.0'
31
28
  s.add_dependency 'histogram'
32
- s.required_ruby_version = '>= 2.6.0'
33
-
34
- s.add_development_dependency 'rake'
35
- s.add_development_dependency 'minitest-reporters'
36
- s.add_development_dependency 'simplecov'
37
- s.add_development_dependency 'yard', '~> 0.9.28'
29
+ s.required_ruby_version = '>= 3.0.0'
38
30
 
31
+ s.metadata['bug_tracker_uri'] = 'https://github.com/topfunky/gruff/issues'
32
+ s.metadata['changelog_uri'] = 'https://github.com/topfunky/gruff/blob/master/CHANGELOG.md'
39
33
  s.metadata['rubygems_mfa_required'] = 'true'
40
34
  end
data/lib/gruff/base.rb CHANGED
@@ -182,6 +182,7 @@ module Gruff
182
182
  @title_font = Gruff::Font.new(size: 36.0, bold: true)
183
183
  @marker_font = Gruff::Font.new(size: 21.0)
184
184
  @legend_font = Gruff::Font.new(size: 20.0)
185
+ @no_data_font = Gruff::Font.new(size: 80.0)
185
186
 
186
187
  @label_margin = LABEL_MARGIN
187
188
  @top_margin = @bottom_margin = @left_margin = @right_margin = DEFAULT_MARGIN
@@ -283,6 +284,7 @@ module Gruff
283
284
  @title_font.path = font_path unless @title_font.path
284
285
  @marker_font.path = font_path
285
286
  @legend_font.path = font_path
287
+ @no_data_font.path = font_path
286
288
  end
287
289
 
288
290
  # Same as {#font=} but for the title.
@@ -320,6 +322,14 @@ module Gruff
320
322
  @legend_font.size = value
321
323
  end
322
324
 
325
+ # Set the font size of the no data message. Default is +80+.
326
+ #
327
+ # @param value [Numeric] no data font size
328
+ #
329
+ def no_data_font_size=(value)
330
+ @no_data_font.size = value
331
+ end
332
+
323
333
  # Specifies whether to draw the title bolded or not. Default is +true+.
324
334
  #
325
335
  # @param value [Boolean] specifies whether to draw the title bolded or not.
@@ -336,6 +346,7 @@ module Gruff
336
346
  @title_font.color = value
337
347
  @marker_font.color = value
338
348
  @legend_font.color = value
349
+ @no_data_font.color = value
339
350
  end
340
351
 
341
352
  # Add a color to the list of available colors for lines.
@@ -791,7 +802,7 @@ module Gruff
791
802
  # Draws column labels below graph, centered over x
792
803
  def draw_label(x, index, gravity = Magick::NorthGravity, &block)
793
804
  draw_unique_label(index) do
794
- if x >= @graph_left && x <= @graph_right
805
+ if x.between?(@graph_left, @graph_right)
795
806
  y = @graph_bottom
796
807
  x_offset, y_offset = calculate_label_offset(@marker_font, @labels[index], @label_margin, @label_rotation)
797
808
 
@@ -826,9 +837,7 @@ module Gruff
826
837
 
827
838
  # Shows an error message because you have no data.
828
839
  def draw_no_data
829
- font = @title_font.dup
830
- font.size = 80
831
- font.bold = false
840
+ font = @no_data_font
832
841
  text_renderer = Gruff::Renderer::Text.new(renderer, @no_data_message, font: font)
833
842
  text_renderer.render(@raw_columns, @raw_rows, 0, 0, Magick::CenterGravity)
834
843
  end
data/lib/gruff/line.rb CHANGED
@@ -53,7 +53,7 @@ class Gruff::Line < Gruff::Base
53
53
  if args.empty? || (!args.first.is_a?(Numeric) && !args.first.is_a?(String))
54
54
  super()
55
55
  else
56
- super args.shift
56
+ super(args.shift)
57
57
  end
58
58
  end
59
59
 
@@ -308,7 +308,7 @@ private
308
308
  if x_data.nil?
309
309
  draw_label(new_x, index)
310
310
  else
311
- @labels.each do |label_pos, _|
311
+ @labels.each_key do |label_pos|
312
312
  draw_label(@graph_left + (((label_pos - @minimum_x_value) * @graph_width) / (@maximum_x_value - @minimum_x_value)), label_pos)
313
313
  end
314
314
  end
@@ -5,7 +5,7 @@ module Gruff
5
5
  class Renderer::Dot
6
6
  def initialize(renderer, style, color:, width: 1.0, opacity: 1.0)
7
7
  @renderer = renderer
8
- @style = style
8
+ @style = style.to_sym
9
9
  @color = color
10
10
  @width = width
11
11
  @opacity = opacity
@@ -17,7 +17,7 @@ module Gruff
17
17
  @renderer.draw.stroke(@color)
18
18
  @renderer.draw.fill_opacity(@opacity)
19
19
  @renderer.draw.fill(@color)
20
- case @style.to_sym
20
+ case @style
21
21
  when :square
22
22
  square(new_x, new_y, radius)
23
23
  when :diamond
@@ -28,6 +28,8 @@ module Gruff
28
28
  @renderer.draw.pop
29
29
  end
30
30
 
31
+ private
32
+
31
33
  def circle(new_x, new_y, radius)
32
34
  @renderer.draw.circle(new_x, new_y, new_x - radius, new_y)
33
35
  end
@@ -13,7 +13,7 @@ module Gruff
13
13
  def render(upper_left_x, upper_left_y, lower_right_x, lower_right_y)
14
14
  @renderer.draw.push
15
15
  @renderer.draw.stroke_width(@width)
16
- @renderer.draw.stroke(@color) if @width > 1.0
16
+ @renderer.draw.stroke(@color) if @color && @width > 1.0
17
17
  @renderer.draw.fill_opacity(@opacity)
18
18
  @renderer.draw.fill(@color) if @color
19
19
  @renderer.draw.rectangle(upper_left_x, upper_left_y, lower_right_x, lower_right_y)
@@ -23,6 +23,12 @@ module Gruff
23
23
  end
24
24
  end
25
25
 
26
+ def transparent_background(columns, rows)
27
+ @image = render_transparent_background(columns, rows)
28
+ end
29
+
30
+ private
31
+
26
32
  def background(columns, rows, scale, theme_options)
27
33
  return image_background(scale, *theme_options[:background_image]) if theme_options[:background_image]
28
34
 
@@ -36,8 +42,13 @@ module Gruff
36
42
  end
37
43
  end
38
44
 
39
- def transparent_background(columns, rows)
40
- @image = render_transparent_background(columns, rows)
45
+ # Use with a theme to use an image (800x600 original) background.
46
+ def image_background(scale, image_path)
47
+ image = Magick::Image.read(image_path)
48
+ if scale != 1.0
49
+ image[0].resize!(scale) # TODO: Resize with new scale (crop if necessary for wide graph)
50
+ end
51
+ image[0]
41
52
  end
42
53
 
43
54
  # Make a new image at the current size with a solid +color+.
@@ -82,17 +93,6 @@ module Gruff
82
93
  end
83
94
  end
84
95
 
85
- private
86
-
87
- # Use with a theme to use an image (800x600 original) background.
88
- def image_background(scale, image_path)
89
- image = Magick::Image.read(image_path)
90
- if scale != 1.0
91
- image[0].resize!(scale) # TODO: Resize with new scale (crop if necessary for wide graph)
92
- end
93
- image[0]
94
- end
95
-
96
96
  # Use with a theme to make a transparent background
97
97
  def render_transparent_background(columns, rows)
98
98
  Magick::Image.new(columns, rows) do |img|
@@ -35,21 +35,21 @@ module Gruff
35
35
  end
36
36
 
37
37
  def min
38
- @min ||= @data.map(&:min).compact.min
38
+ @min ||= @data.filter_map(&:min).min
39
39
  end
40
40
  alias min_y min
41
41
 
42
42
  def max
43
- @max ||= @data.map(&:max).compact.max
43
+ @max ||= @data.filter_map(&:max).max
44
44
  end
45
45
  alias max_y max
46
46
 
47
47
  def min_x
48
- @min_x ||= @data.map(&:min_x).compact.min
48
+ @min_x ||= @data.filter_map(&:min_x).min
49
49
  end
50
50
 
51
51
  def max_x
52
- @max_x ||= @data.map(&:max_x).compact.max
52
+ @max_x ||= @data.filter_map(&:max_x).max
53
53
  end
54
54
 
55
55
  def sort_data!
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.24.0'
4
+ VERSION = '0.26.0'
5
5
  end
metadata CHANGED
@@ -1,100 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gruff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.0
4
+ version: 0.26.0
5
5
  platform: java
6
6
  authors:
7
7
  - Geoffrey Grosenbach
8
8
  - Uwe Kubosch
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2024-03-13 00:00:00.000000000 Z
11
+ date: 2025-05-06 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
14
  name: rmagick4j
21
- prerelease: false
22
- type: :runtime
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - ">="
32
18
  - !ruby/object:Gem::Version
33
19
  version: '0'
34
- name: histogram
35
- prerelease: false
36
20
  type: :runtime
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- name: rake
49
21
  prerelease: false
50
- type: :development
51
22
  version_requirements: !ruby/object:Gem::Requirement
52
23
  requirements:
53
24
  - - ">="
54
25
  - !ruby/object:Gem::Version
55
26
  version: '0'
56
27
  - !ruby/object:Gem::Dependency
28
+ name: bigdecimal
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - ">="
60
32
  - !ruby/object:Gem::Version
61
- version: '0'
62
- name: minitest-reporters
33
+ version: '3.0'
34
+ type: :runtime
63
35
  prerelease: false
64
- type: :development
65
36
  version_requirements: !ruby/object:Gem::Requirement
66
37
  requirements:
67
38
  - - ">="
68
39
  - !ruby/object:Gem::Version
69
- version: '0'
40
+ version: '3.0'
70
41
  - !ruby/object:Gem::Dependency
42
+ name: histogram
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - ">="
74
46
  - !ruby/object:Gem::Version
75
47
  version: '0'
76
- name: simplecov
48
+ type: :runtime
77
49
  prerelease: false
78
- type: :development
79
50
  version_requirements: !ruby/object:Gem::Requirement
80
51
  requirements:
81
52
  - - ">="
82
53
  - !ruby/object:Gem::Version
83
54
  version: '0'
84
- - !ruby/object:Gem::Dependency
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.9.28
90
- name: yard
91
- prerelease: false
92
- type: :development
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: 0.9.28
98
55
  description: Beautiful graphs for one or multiple datasets. Can be used on websites
99
56
  or in documents.
100
57
  email: boss@topfunky.com
@@ -105,6 +62,7 @@ files:
105
62
  - ".devcontainer/devcontainer.json"
106
63
  - ".editorconfig"
107
64
  - ".github/ISSUE_TEMPLATE.md"
65
+ - ".github/ISSUE_TEMPLATE/report.yml"
108
66
  - ".github/workflows/ci.yml"
109
67
  - ".gitignore"
110
68
  - ".rubocop.yml"
@@ -174,8 +132,9 @@ homepage: https://github.com/topfunky/gruff
174
132
  licenses:
175
133
  - MIT
176
134
  metadata:
135
+ bug_tracker_uri: https://github.com/topfunky/gruff/issues
136
+ changelog_uri: https://github.com/topfunky/gruff/blob/master/CHANGELOG.md
177
137
  rubygems_mfa_required: 'true'
178
- post_install_message:
179
138
  rdoc_options: []
180
139
  require_paths:
181
140
  - lib
@@ -183,15 +142,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
183
142
  requirements:
184
143
  - - ">="
185
144
  - !ruby/object:Gem::Version
186
- version: 2.6.0
145
+ version: 3.0.0
187
146
  required_rubygems_version: !ruby/object:Gem::Requirement
188
147
  requirements:
189
148
  - - ">="
190
149
  - !ruby/object:Gem::Version
191
150
  version: '0'
192
151
  requirements: []
193
- rubygems_version: 3.2.33
194
- signing_key:
152
+ rubygems_version: 3.6.3
195
153
  specification_version: 4
196
154
  summary: Beautiful graphs for one or multiple datasets.
197
155
  test_files: []