percentage 1.4.1 → 2.1.0

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: 20e2362952bb7911cca151e3df92aa1fbd1673d165c745ca577aa7fa269c5d79
4
- data.tar.gz: 82c0f31ba57b5e8eae7e4c9bf3e27cd202f32fa30d6f7ae544d519499e19cd37
3
+ metadata.gz: 21374fb1c476c85b4a4380ee15c3366aae81897a381c78eecfe4c439f4f333ab
4
+ data.tar.gz: f7be43bf545ffa5982a22a3da8ecd2692f114335a88be8090190b297d178b298
5
5
  SHA512:
6
- metadata.gz: 575215d64aaf5a84851d29e732902abc07239bf0be3e8a542ce8e332272b9c2470cfc6bc4c7d1337d180f2a2249cb854b3fbdf6fc3b697ef0a5f126680bc423b
7
- data.tar.gz: 1e7ca91c861e49039fd592a82f54c9778ba335efc6286b9ab772c4f634db536e58eb429d9a839e1013684f435aa77c942210d8fcadfb2d49cac73dfbf449ea04
6
+ metadata.gz: 2305a119de4fb3e426a20ca722cb3dcd14c46039d24e5b8c16328e74cbe43514c673fa20c83fb9d8f6d62d909e518e545f6a33be46a3ecc11ab6ffe3408b31f4
7
+ data.tar.gz: 6ac6258c6234e35a32b747f1317b725e84c3fdee226248b076d55fab34e4b2d43a54333de958eb6750640de3ae815a2a1657cbe279354f615dc3e1832f6ddec2
data/CHANGES.md CHANGED
@@ -1,3 +1,19 @@
1
+ # 2.1.0
2
+
3
+ * Added Percentage#-@
4
+
5
+ * Added Percentage#positive?
6
+
7
+ * Added Percentage#negative?
8
+
9
+ # 2.0.0
10
+
11
+ * Added Percentage#to_d
12
+
13
+ * Percentage instances are now frozen on initialization
14
+
15
+ * Changed `Percentage.change` to return `nil` when first argument is zero
16
+
1
17
  # 1.4.1
2
18
 
3
19
  * Added CHANGES.md to gem files
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-2020 TIMCRAFT
1
+ Copyright (c) 2012-2024 TIMCRAFT
2
2
 
3
3
  This is an Open Source project licensed under the terms of the LGPLv3 license.
4
4
  Please see <http://www.gnu.org/licenses/lgpl-3.0.html> for license text.
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # percentage
2
2
 
3
3
  ![Gem Version](https://badge.fury.io/rb/percentage.svg)
4
- ![Build Status](https://github.com/readysteady/percentage/workflows/Test/badge.svg)
4
+ ![Test Status](https://github.com/readysteady/percentage/actions/workflows/test.yml/badge.svg)
5
5
 
6
6
 
7
7
  Ruby gem for working with percentages.
data/lib/percentage.rb CHANGED
@@ -7,6 +7,8 @@ class Percentage
7
7
 
8
8
  def initialize(value)
9
9
  @value = value
10
+
11
+ freeze
10
12
  end
11
13
 
12
14
  def to_i
@@ -25,6 +27,16 @@ class Percentage
25
27
  fractional_value.to_r
26
28
  end
27
29
 
30
+ def to_d
31
+ if @value.integer?
32
+ @value.to_d / 100
33
+ elsif BigDecimal === @value
34
+ @value
35
+ else
36
+ @value.to_d(0)
37
+ end
38
+ end
39
+
28
40
  def zero?
29
41
  @value.zero?
30
42
  end
@@ -91,6 +103,18 @@ class Percentage
91
103
  self.class.new(@value * n)
92
104
  end
93
105
 
106
+ def -@
107
+ self.class.new(-@value)
108
+ end
109
+
110
+ def positive?
111
+ @value.positive?
112
+ end
113
+
114
+ def negative?
115
+ @value.negative?
116
+ end
117
+
94
118
  protected
95
119
 
96
120
  def fractional_value
@@ -115,7 +139,7 @@ def Percentage(object)
115
139
  end
116
140
 
117
141
  def Percentage.change(a, b)
118
- Percentage.new((b - a).to_r / a)
142
+ Percentage.new((b - a).to_r / a) unless a.zero?
119
143
  end
120
144
 
121
145
  class BigDecimal
data/percentage.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'percentage'
3
- s.version = '1.4.1'
3
+ s.version = '2.1.0'
4
4
  s.license = 'LGPL-3.0'
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ['Tim Craft']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: percentage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Craft
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-03 00:00:00.000000000 Z
11
+ date: 2024-01-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby gem for working with percentages
14
14
  email:
@@ -46,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  requirements: []
49
- rubygems_version: 3.1.4
49
+ rubygems_version: 3.4.10
50
50
  signing_key:
51
51
  specification_version: 4
52
52
  summary: See description