monies 1.1.0 → 2.0.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 +4 -4
- data/CHANGES.md +33 -0
- data/LICENSE.txt +1 -1
- data/lib/monies/digits.rb +6 -0
- data/lib/monies.rb +17 -3
- data/monies.gemspec +4 -4
- metadata +6 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 96e0bb12354bfdca7f9e660e8c93c9c67ee586f515fc0c9e48d237f341c1a1d5
|
|
4
|
+
data.tar.gz: f4991d3a35cd0ba1d2221be7ed548d57de0d54c4d4ad9161b31a37ef1774d0cf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 936d75d5e2793feeae9726ff2f263edc74c3ac1591ceced1857eb7fb9df7d005e0dc4c48cbd673bd4eb8d41125804b0ac0ec89c1dc2f2b656ce188b0defaeaa4
|
|
7
|
+
data.tar.gz: d27261c02ce98aeda4c424bda110ca426a7b59098db5c558255f0d49164bc2cb2bdb76ef66e76c95fdd36351fc81d61be33e3f7bee9b9df02788b8410367b45c
|
data/CHANGES.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 2.0.0
|
|
2
|
+
|
|
3
|
+
* Added Monies#to_f method
|
|
4
|
+
|
|
5
|
+
* Added Monies#to_json method
|
|
6
|
+
|
|
7
|
+
* Changed required\_ruby\_version to >= 3.3.0
|
|
8
|
+
|
|
9
|
+
# 1.2.0
|
|
10
|
+
|
|
11
|
+
* Added exception argument to Monies method
|
|
12
|
+
|
|
13
|
+
* Changed Monies method to raise ArgumentError for invalid strings
|
|
14
|
+
|
|
15
|
+
* Changed required\_ruby\_version to >= 3.2.0
|
|
16
|
+
|
|
17
|
+
* Improved compatibility with jruby
|
|
18
|
+
|
|
19
|
+
# 1.1.0
|
|
20
|
+
|
|
21
|
+
* Added Monies#allocate method
|
|
22
|
+
|
|
23
|
+
* Added Monies#fix method
|
|
24
|
+
|
|
25
|
+
* Added Monies#frac method
|
|
26
|
+
|
|
27
|
+
# 1.0.1
|
|
28
|
+
|
|
29
|
+
* Fixed division for negative values
|
|
30
|
+
|
|
31
|
+
# 1.0.0
|
|
32
|
+
|
|
33
|
+
* First version!
|
data/LICENSE.txt
CHANGED
data/lib/monies/digits.rb
CHANGED
data/lib/monies.rb
CHANGED
|
@@ -116,6 +116,7 @@ class Monies
|
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
scale = other.scale
|
|
119
|
+
scale = length - exponent if length < scale
|
|
119
120
|
|
|
120
121
|
return reduce(@value * value, @scale + scale)
|
|
121
122
|
end
|
|
@@ -384,10 +385,18 @@ class Monies
|
|
|
384
385
|
BigDecimal(Monies::Digits.dump(self))
|
|
385
386
|
end
|
|
386
387
|
|
|
388
|
+
def to_f
|
|
389
|
+
@value.to_f / BASE ** @scale
|
|
390
|
+
end
|
|
391
|
+
|
|
387
392
|
def to_i
|
|
388
393
|
@value / BASE ** @scale
|
|
389
394
|
end
|
|
390
395
|
|
|
396
|
+
def to_json(state = nil, *)
|
|
397
|
+
JSON::State.from_state(state).generate(self.class.dump(self))
|
|
398
|
+
end
|
|
399
|
+
|
|
391
400
|
def to_r
|
|
392
401
|
Rational(@value, BASE ** @scale)
|
|
393
402
|
end
|
|
@@ -487,7 +496,7 @@ class Monies
|
|
|
487
496
|
end
|
|
488
497
|
end
|
|
489
498
|
|
|
490
|
-
def Monies(object, currency = Monies.currency)
|
|
499
|
+
def Monies(object, currency = Monies.currency, exception: true)
|
|
491
500
|
case object
|
|
492
501
|
when Monies
|
|
493
502
|
object
|
|
@@ -496,7 +505,11 @@ def Monies(object, currency = Monies.currency)
|
|
|
496
505
|
when Rational
|
|
497
506
|
Monies.new(object.numerator, 0, currency) / object.denominator
|
|
498
507
|
when String
|
|
499
|
-
Monies::Digits.
|
|
508
|
+
if Monies::Digits.match?(object)
|
|
509
|
+
Monies::Digits.load(object, currency)
|
|
510
|
+
elsif exception
|
|
511
|
+
raise ArgumentError, "invalid value for Monies(): #{object.inspect}"
|
|
512
|
+
end
|
|
500
513
|
else
|
|
501
514
|
if defined?(BigDecimal) && object.is_a?(BigDecimal)
|
|
502
515
|
sign, significant_digits, base, exponent = object.split
|
|
@@ -510,10 +523,11 @@ def Monies(object, currency = Monies.currency)
|
|
|
510
523
|
end
|
|
511
524
|
|
|
512
525
|
scale = object.scale
|
|
526
|
+
scale = length - exponent if length < scale
|
|
513
527
|
|
|
514
528
|
return Monies.new(value, scale, currency)
|
|
515
529
|
end
|
|
516
530
|
|
|
517
|
-
raise TypeError, "can't convert #{object.inspect} into #{Monies}"
|
|
531
|
+
raise TypeError, "can't convert #{object.inspect} into #{Monies}" if exception
|
|
518
532
|
end
|
|
519
533
|
end
|
data/monies.gemspec
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'monies'
|
|
3
|
-
s.version = '
|
|
3
|
+
s.version = '2.0.0'
|
|
4
4
|
s.license = 'LGPL-3.0'
|
|
5
5
|
s.platform = Gem::Platform::RUBY
|
|
6
6
|
s.authors = ['Tim Craft']
|
|
7
7
|
s.email = ['email@timcraft.com']
|
|
8
8
|
s.homepage = 'https://github.com/readysteady/monies'
|
|
9
9
|
s.description = 'Ruby gem for representing monetary values'
|
|
10
|
-
s.summary = '
|
|
11
|
-
s.files = Dir.glob('lib/**/*.rb') + %w[LICENSE.txt README.md monies.gemspec]
|
|
12
|
-
s.required_ruby_version = '>= 3.
|
|
10
|
+
s.summary = 'Ruby gem for representing monetary values'
|
|
11
|
+
s.files = Dir.glob('lib/**/*.rb') + %w[CHANGES.md LICENSE.txt README.md monies.gemspec]
|
|
12
|
+
s.required_ruby_version = '>= 3.3.0'
|
|
13
13
|
s.require_path = 'lib'
|
|
14
14
|
s.metadata = {
|
|
15
15
|
'homepage' => 'https://github.com/readysteady/monies',
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: monies
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tim Craft
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies: []
|
|
13
12
|
description: Ruby gem for representing monetary values
|
|
14
13
|
email:
|
|
@@ -17,6 +16,7 @@ executables: []
|
|
|
17
16
|
extensions: []
|
|
18
17
|
extra_rdoc_files: []
|
|
19
18
|
files:
|
|
19
|
+
- CHANGES.md
|
|
20
20
|
- LICENSE.txt
|
|
21
21
|
- README.md
|
|
22
22
|
- lib/monies.rb
|
|
@@ -36,7 +36,6 @@ metadata:
|
|
|
36
36
|
source_code_uri: https://github.com/readysteady/monies
|
|
37
37
|
bug_tracker_uri: https://github.com/readysteady/monies/issues
|
|
38
38
|
changelog_uri: https://github.com/readysteady/monies/blob/main/CHANGES.md
|
|
39
|
-
post_install_message:
|
|
40
39
|
rdoc_options: []
|
|
41
40
|
require_paths:
|
|
42
41
|
- lib
|
|
@@ -44,15 +43,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
44
43
|
requirements:
|
|
45
44
|
- - ">="
|
|
46
45
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 3.
|
|
46
|
+
version: 3.3.0
|
|
48
47
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
48
|
requirements:
|
|
50
49
|
- - ">="
|
|
51
50
|
- !ruby/object:Gem::Version
|
|
52
51
|
version: '0'
|
|
53
52
|
requirements: []
|
|
54
|
-
rubygems_version:
|
|
55
|
-
signing_key:
|
|
53
|
+
rubygems_version: 4.0.6
|
|
56
54
|
specification_version: 4
|
|
57
|
-
summary:
|
|
55
|
+
summary: Ruby gem for representing monetary values
|
|
58
56
|
test_files: []
|