ambito 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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: