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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a06d9174b4665f2d0f6c72826755accf882558c3003b6831742fd08bb807c0f
4
- data.tar.gz: 3c8594c380161da7cbbddbc8cacc50cf8b57438563e93f83a89270902bf2dfd9
3
+ metadata.gz: 3bf4ffdcc7be3ef6bb0c9cdde82fc096736a6d760880e7411a6c89e3302ebe84
4
+ data.tar.gz: 53c9d6ad73e9af805007a990c9a270cc1cb86026b456556031b726ab36b3f68f
5
5
  SHA512:
6
- metadata.gz: 2068130a9795faf9805e3b422f4813324e4c21b863c918650b2cf52b36f6a7a92bf7e2a77fd6fcb21e53284f7c8e9ae6c590800f130fd61ee4e8531a8afd5baa
7
- data.tar.gz: 12305b271c60c0f89a6b7448306486041600e97e7dece333573221b3deb87c636ba91c54a52a519bfc4b43c78618c4cd04c30158132f344b60530a2b813bb400
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:, period: nil)
8
+ def initialize(principal:, annual_rate:, start_date:, end_date:, rule:)
9
9
  @principal = principal
10
- @annual_rate = annual_rate # e.g., 0.05 for 5%
11
- @start_date = Date.parse(start_date)
12
- @end_date = Date.parse(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
- principal * annual_rate * year_fraction
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
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Ec
4
4
  module Abacus
5
- VERSION = "0.1.0"
5
+ PATCH = 2
6
+ VERSION = "0.1.#{PATCH}"
6
7
  end
7
8
  end
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 :InterestCalculator, 'abacus/interest_calculator'
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.0
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