ambito 0.2.0 → 0.2.1

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: 9108ecf4cec0a17c75f766b42d6aab71e970927c6d853cdd7bcaee2b57d0c49a
4
- data.tar.gz: 4289936f867c7f384282f695a1a256acf237cf7eb24abd1206a64d9054a58959
3
+ metadata.gz: d23be2cb4c6df3b9b39b52bca2a3f61f97d3ea0da79bee423df5e85e4387324e
4
+ data.tar.gz: d0b1156222d75af14749b9bfff6cc80550fcc0c20004337cfb7e0d478ac2d715
5
5
  SHA512:
6
- metadata.gz: 5c0f57262a90b245b8ff3f54ab60f0d35a24fd3b746948a0d06b199885fbbd0f757f5f0297896a4eeba74b42afd8b31101b5f9b57adfd067238f469756152f27
7
- data.tar.gz: 2d080b8844e91cea05c546cdd9c9684fb385617ada3a85f6689b0c28c9447653c6da15a4d944fe35b3eeba72c5719464c0ecfc7505c144cb14e6e9f54ce33f0a
6
+ metadata.gz: bdc8d2f6b7cb93b1af53f83d2f2c64a78f1198d260ec1e11a7ac8ef5b6e8b93affd564de405001f52e116264defd2253a60cb304e417a50caf7a4840a3460405
7
+ data.tar.gz: 4526159a7ac8282191e9f884e45efd713cde0e91857168eca569be72d24f4ba553d8dfdda67175cdba425be9c1c1597185f312ccb29b7ca887a49993a860685f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.1] - 2023-11-27
4
+
5
+ ### Fixed
6
+
7
+ - Correct path when loading configuration
8
+
3
9
  ## [0.2.0] - 2023-11-24
4
10
 
5
11
  ### Added
data/lib/ambito/dollar.rb CHANGED
@@ -3,7 +3,7 @@ require "yaml"
3
3
  module Ambito
4
4
  class Dollar
5
5
  LIST = YAML.safe_load_file(
6
- "./config/dollars.yml",
6
+ "#{__dir__}/../../config/dollars.yml",
7
7
  permitted_classes: [Ambito::Dollar]
8
8
  ).freeze
9
9
 
@@ -17,9 +17,9 @@ module Ambito
17
17
 
18
18
  def rate
19
19
  gateway = Gateway.new(endpoint:)
20
- buy, sell, variation = gateway.get("compra", "venta", "variacion")
20
+ buy, sell, value, variation = gateway.get("compra", "venta", "valor", "variacion")
21
21
 
22
- Rate.new(dollar: self, buy:, sell:, variation:)
22
+ Rate.new(dollar: self, buy:, sell:, value:, variation:)
23
23
  end
24
24
 
25
25
  def to_s
@@ -36,10 +36,6 @@ module Ambito
36
36
  dollar.name == String(name)
37
37
  end
38
38
  end
39
-
40
- def where(name: nil)
41
- name && find(name) || all
42
- end
43
39
  end
44
40
  end
45
41
  end
@@ -0,0 +1,27 @@
1
+ module Ambito
2
+ class Price
3
+ attr_reader :quote
4
+
5
+ def initialize(quote)
6
+ @quote = parse(quote)
7
+ end
8
+
9
+ def +(other)
10
+ quote + other.quote
11
+ end
12
+
13
+ def parse(quote)
14
+ String(quote).tr(",", ".").to_f
15
+ end
16
+
17
+ def to_s
18
+ sprintf("$ %.2f" % quote)
19
+ end
20
+
21
+ class << self
22
+ def [](quote)
23
+ quote && new(quote) || nil
24
+ end
25
+ end
26
+ end
27
+ end
data/lib/ambito/rate.rb CHANGED
@@ -2,41 +2,28 @@ module Ambito
2
2
  class Rate
3
3
  TRENDS = {up: "📈", down: "📉", equal: "📊"}.freeze
4
4
 
5
- def initialize(dollar:, buy:, sell:, variation:)
5
+ def initialize(dollar:, buy:, sell:, value:, variation:)
6
6
  @dollar = dollar
7
- @buy = float(buy)
8
- @sell = float(sell)
9
- @variation = float(variation)
7
+ @buy = Price[buy]
8
+ @sell = Price[sell]
9
+ @value = Price[value]
10
+ @variation = Variation[variation]
10
11
  end
11
12
 
12
13
  def average
13
- (buy + sell) / 2
14
+ Price[(buy + sell) / 2]
14
15
  end
15
16
 
16
17
  def to_s
17
- "#{dollar}: $ #{format(average)} #{trend} #{format(variation)}%"
18
+ "#{dollar}: #{price} #{variation.trend} #{variation}"
18
19
  end
19
20
 
20
21
  private
21
22
 
22
- attr_reader :dollar, :buy, :sell, :variation
23
+ attr_reader :dollar, :buy, :sell, :value, :variation
23
24
 
24
- def trend
25
- if variation.positive?
26
- TRENDS[:up]
27
- elsif variation.negative?
28
- TRENDS[:down]
29
- else
30
- TRENDS[:equal]
31
- end
32
- end
33
-
34
- def float(value)
35
- value.tr(",", ".").to_f
36
- end
37
-
38
- def format(number)
39
- sprintf("%.2f" % number)
25
+ def price
26
+ value || average
40
27
  end
41
28
  end
42
29
  end
@@ -0,0 +1,37 @@
1
+ module Ambito
2
+ class Variation
3
+ TRENDS = {up: "📈", down: "📉", equal: "📊"}.freeze
4
+
5
+ attr_reader :value
6
+
7
+ def initialize(value)
8
+ @value = parse(value)
9
+ end
10
+
11
+ def to_s
12
+ sprintf("%.2f" % value) << "%"
13
+ end
14
+
15
+ def trend
16
+ if value.positive?
17
+ TRENDS[:up]
18
+ elsif value.negative?
19
+ TRENDS[:down]
20
+ else
21
+ TRENDS[:equal]
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def parse(value)
28
+ value.tr(",", ".").to_f
29
+ end
30
+
31
+ class << self
32
+ def [](value)
33
+ new(value)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ambito
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
data/lib/ambito.rb CHANGED
@@ -3,7 +3,9 @@
3
3
  require_relative "ambito/cli"
4
4
  require_relative "ambito/dollar"
5
5
  require_relative "ambito/gateway"
6
+ require_relative "ambito/price"
6
7
  require_relative "ambito/rate"
8
+ require_relative "ambito/variation"
7
9
  require_relative "ambito/version"
8
10
 
9
11
  module Ambito
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ambito
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ariel Rzezak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-24 00:00:00.000000000 Z
11
+ date: 2023-11-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Ruby gem for retrieving real-time USD exchange rates and financial
14
14
  data.
@@ -31,7 +31,9 @@ files:
31
31
  - lib/ambito/cli.rb
32
32
  - lib/ambito/dollar.rb
33
33
  - lib/ambito/gateway.rb
34
+ - lib/ambito/price.rb
34
35
  - lib/ambito/rate.rb
36
+ - lib/ambito/variation.rb
35
37
  - lib/ambito/version.rb
36
38
  homepage: https://github.com/arzezak/ambito
37
39
  licenses: