more_math 1.2.0 → 1.2.2
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 +4 -4
- data/CHANGES.md +15 -0
- data/Rakefile +1 -1
- data/lib/more_math/histogram.rb +25 -9
- data/lib/more_math/version.rb +1 -1
- data/more_math.gemspec +2 -2
- data/tests/histogram_test.rb +46 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01200b0474b98510b8405a12492684e8d871d3a406a697c2d7775a26efe8c2ae
|
4
|
+
data.tar.gz: dfa50772aedbc2f2530e35e7c1825a128cdaa5a9a76781d12484c9b8a2a995f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1dc76b84fed3a181158201798ce5fe6bff1ac22b2bff104b2f22ff5186104217c65ad1425cd676959f2358fc1b107722c3bc9bfcbd2ca6060fc033d927b47e6
|
7
|
+
data.tar.gz: 90ad74b6b12f7735b088dc6bd06ccfbbe02af132718240a81eb8080c550a04c856698394c821441ddac4f7188524d02a006bf3579645a5b25a483a8e0dac568e
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Changes
|
2
2
|
|
3
|
+
## 2024-09-30 v1.2.2
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
* Refactor Histogram display logic for better UTF-8 support:
|
7
|
+
+ Extracted `output_row_with_count` and `output_row_without_count` methods
|
8
|
+
+ Updated test cases for histogram display with counts and UTF-8 support
|
9
|
+
* Update Rakefile to ignore `.utilsrc` file:
|
10
|
+
- Add `.utilsrc` to `package_ignore` list in Rakefile
|
11
|
+
|
12
|
+
## 2024-09-30 v1.2.1
|
13
|
+
|
14
|
+
* Refactor histogram display logic for utf8 and ascii bars
|
15
|
+
+ *Improved `utf8_bar` method to handle fractional bar widths.*
|
16
|
+
+ *Updated test case in `histogram_test.rb` to reflect changes.*
|
17
|
+
|
3
18
|
## 2024-09-30 v1.2.0
|
4
19
|
|
5
20
|
#### Significant Changes
|
data/Rakefile
CHANGED
@@ -14,7 +14,7 @@ GemHadar do
|
|
14
14
|
'.AppleDouble', 'tags', '.byebug_history', '.DS_Store'
|
15
15
|
readme 'README.md'
|
16
16
|
title "#{name.camelize} -- More Math in Ruby"
|
17
|
-
package_ignore '.all_images.yml', '.gitignore', 'VERSION',
|
17
|
+
package_ignore '.all_images.yml', '.gitignore', 'VERSION', '.utilsrc',
|
18
18
|
*Dir.glob('.github/**/*', File::FNM_DOTMATCH)
|
19
19
|
|
20
20
|
required_ruby_version '>= 2.0'
|
data/lib/more_math/histogram.rb
CHANGED
@@ -53,12 +53,16 @@ module MoreMath
|
|
53
53
|
def utf8_bar(bar_width)
|
54
54
|
fract = bar_width - bar_width.floor
|
55
55
|
bar = ?⣿ * bar_width.floor
|
56
|
-
fract > 0.5
|
56
|
+
if fract > 0.5
|
57
|
+
bar << ?⡇
|
58
|
+
else
|
59
|
+
bar << ' '
|
60
|
+
end
|
57
61
|
bar
|
58
62
|
end
|
59
63
|
|
60
64
|
def ascii_bar(bar_width)
|
61
|
-
|
65
|
+
?* * bar_width
|
62
66
|
end
|
63
67
|
|
64
68
|
def utf8?
|
@@ -68,21 +72,33 @@ module MoreMath
|
|
68
72
|
def output_row(row, width)
|
69
73
|
left, right, count = row
|
70
74
|
if @with_counts
|
71
|
-
|
72
|
-
left_width = width - (counts.map { |x| x.to_s.size }.max + c)
|
75
|
+
output_row_with_count(left, right, count, width)
|
73
76
|
else
|
74
|
-
|
77
|
+
output_row_without_count(left, right, count, width)
|
75
78
|
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def output_row_with_count(left, right, count, width)
|
82
|
+
c = utf8? ? 2 : 1
|
83
|
+
left_width = width - (counts.map { |x| x.to_s.size }.max + c)
|
76
84
|
if left_width < 0
|
77
85
|
left_width = width
|
78
86
|
end
|
79
87
|
factor = left_width.to_f / max_count
|
80
88
|
bar_width = (count * factor)
|
81
89
|
bar = utf8? ? utf8_bar(bar_width) : ascii_bar(bar_width)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
90
|
+
max_count_length = max_count.to_s.size
|
91
|
+
"%11.5f -|%#{-width + max_count_length}s%#{max_count_length}s\n" %
|
92
|
+
[ (left + right) / 2.0, bar, count ]
|
93
|
+
end
|
94
|
+
|
95
|
+
def output_row_without_count(left, right, count, width)
|
96
|
+
left_width = width
|
97
|
+
left_width < 0 and left_width = width
|
98
|
+
factor = left_width.to_f / max_count
|
99
|
+
bar_width = (count * factor)
|
100
|
+
bar = utf8? ? utf8_bar(bar_width) : ascii_bar(bar_width)
|
101
|
+
"%11.5f -|%#{-width}s\n" % [ (left + right) / 2.0, bar ]
|
86
102
|
end
|
87
103
|
|
88
104
|
def rows
|
data/lib/more_math/version.rb
CHANGED
data/more_math.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: more_math 1.2.
|
2
|
+
# stub: more_math 1.2.2 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "more_math".freeze
|
6
|
-
s.version = "1.2.
|
6
|
+
s.version = "1.2.2".freeze
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
data/tests/histogram_test.rb
CHANGED
@@ -25,7 +25,7 @@ class HistogramTest < Test::Unit::TestCase
|
|
25
25
|
output = StringIO.new
|
26
26
|
histogram.display output
|
27
27
|
assert_equal <<~end, output.string
|
28
|
-
2.50000 -|*************************
|
28
|
+
2.50000 -|*************************
|
29
29
|
1.50000 -|**************************************************
|
30
30
|
0.50000 -|**************************************************
|
31
31
|
max_count=2
|
@@ -50,6 +50,23 @@ class HistogramTest < Test::Unit::TestCase
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
+
def test_histogram_display_with_counts_lots
|
54
|
+
srand 1337
|
55
|
+
sequence = Sequence.new 1000.times.map { rand(10) * rand(10) }
|
56
|
+
histogram = Histogram.new sequence, with_counts: true, bins: 3
|
57
|
+
def histogram.utf8?
|
58
|
+
false
|
59
|
+
end
|
60
|
+
output = StringIO.new
|
61
|
+
histogram.display output
|
62
|
+
assert_equal <<~end, output.string
|
63
|
+
67.50000 -|***** 81
|
64
|
+
40.50000 -|************* 206
|
65
|
+
13.50000 -|********************************************** 713
|
66
|
+
max_count=713
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
53
70
|
def test_histogram_display_utf8
|
54
71
|
srand 1337
|
55
72
|
sequence = Sequence.new 1000.times.map { rand(10) }
|
@@ -60,9 +77,9 @@ class HistogramTest < Test::Unit::TestCase
|
|
60
77
|
output = StringIO.new
|
61
78
|
histogram.display output
|
62
79
|
assert_equal <<~end, output.string
|
63
|
-
7.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
64
|
-
4.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇
|
65
|
-
1.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
80
|
+
7.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
81
|
+
4.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇
|
82
|
+
1.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
66
83
|
max_count=420
|
67
84
|
end
|
68
85
|
end
|
@@ -83,4 +100,29 @@ class HistogramTest < Test::Unit::TestCase
|
|
83
100
|
max_count=420
|
84
101
|
end
|
85
102
|
end
|
103
|
+
|
104
|
+
def test_histogram_display_with_counts_utf8_zero
|
105
|
+
srand 1337
|
106
|
+
sequence = Sequence.new 1000.times.map { rand(10) * rand(10) }
|
107
|
+
histogram = Histogram.new sequence, with_counts: true, bins: 3
|
108
|
+
def histogram.utf8?
|
109
|
+
true
|
110
|
+
end
|
111
|
+
output = StringIO.new
|
112
|
+
histogram.display output
|
113
|
+
assert_equal <<~end, output.string
|
114
|
+
67.50000 -|⣿⣿⣿⣿⣿ 81
|
115
|
+
40.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 206
|
116
|
+
13.50000 -|⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 713
|
117
|
+
max_count=713
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
def output_histogram(histogram)
|
124
|
+
$stdout.puts
|
125
|
+
histogram.display $stdout
|
126
|
+
$stdout.puts
|
127
|
+
end
|
86
128
|
end
|