ec-abacus 0.1.0 → 0.1.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/lib/ec/abacus/simple_interest.rb +11 -7
- data/lib/ec/abacus/version.rb +2 -1
- data/lib/ec/abacus.rb +2 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3bf4ffdcc7be3ef6bb0c9cdde82fc096736a6d760880e7411a6c89e3302ebe84
|
|
4
|
+
data.tar.gz: 53c9d6ad73e9af805007a990c9a270cc1cb86026b456556031b726ab36b3f68f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7eb82e3fb49cd68d704c3523b6d8f8a4d8fd9dc73da95be3ae59c3c4fd5b113937469baf28f3d966d11c4517ba09c8452d0d2ad15a26a33628b53448c81deb20
|
|
7
|
+
data.tar.gz: a80e6ed1a4fab85d9735dabd49335609fa87dd3c66be6ced966b46a7abdd59ee9fcb4ff775f6a557412820312fcd586d8d8f3d79e05702d0b46894ed9c2c3f8e
|
|
@@ -5,16 +5,20 @@ require 'date'
|
|
|
5
5
|
module Ec
|
|
6
6
|
module Abacus
|
|
7
7
|
class SimpleInterest
|
|
8
|
-
def initialize(principal:, annual_rate:, start_date:, end_date:, rule
|
|
8
|
+
def initialize(principal:, annual_rate:, start_date:, end_date:, rule:)
|
|
9
9
|
@principal = principal
|
|
10
|
-
@annual_rate = annual_rate
|
|
11
|
-
@start_date =
|
|
12
|
-
@end_date =
|
|
13
|
-
@rule = rule
|
|
10
|
+
@annual_rate = annual_rate
|
|
11
|
+
@start_date = Chronic.parse(start_date)&.to_date
|
|
12
|
+
@end_date = Chronic.parse(end_date)&.to_date
|
|
13
|
+
@rule = rule.to_sym
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def call
|
|
17
|
-
|
|
17
|
+
if start_date.present? && end_date.present?
|
|
18
|
+
principal * annual_rate * year_fraction
|
|
19
|
+
else
|
|
20
|
+
return 0
|
|
21
|
+
end
|
|
18
22
|
end
|
|
19
23
|
|
|
20
24
|
private
|
|
@@ -23,7 +27,7 @@ module Ec
|
|
|
23
27
|
# Fraction of a year between start_date and end_date under the
|
|
24
28
|
# chosen convention. This is the "t" used in all interest formulas.
|
|
25
29
|
def year_fraction
|
|
26
|
-
case rule
|
|
30
|
+
case rule
|
|
27
31
|
when :actual_365 then actual_days / 365.0
|
|
28
32
|
when :actual_360 then actual_days / 360.0
|
|
29
33
|
when :actual_actual then actual_actual_fraction
|
data/lib/ec/abacus/version.rb
CHANGED
data/lib/ec/abacus.rb
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative "abacus/version"
|
|
4
|
+
require 'chronic'
|
|
4
5
|
|
|
5
6
|
module Ec
|
|
6
7
|
module Abacus
|
|
7
8
|
class Error < StandardError; end
|
|
8
9
|
# Your code goes here...
|
|
9
10
|
|
|
10
|
-
autoload :
|
|
11
|
+
autoload :SimpleInterest, 'ec/abacus/simple_interest.rb'
|
|
11
12
|
end
|
|
12
13
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ec-abacus
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eclectic Code
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: chronic
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
12
26
|
description: Provide various financial calculations.
|
|
13
27
|
email:
|
|
14
28
|
- gxssd624@duck.com
|