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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/ambito/dollar.rb +3 -7
- data/lib/ambito/price.rb +27 -0
- data/lib/ambito/rate.rb +10 -23
- data/lib/ambito/variation.rb +37 -0
- data/lib/ambito/version.rb +1 -1
- data/lib/ambito.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d23be2cb4c6df3b9b39b52bca2a3f61f97d3ea0da79bee423df5e85e4387324e
|
4
|
+
data.tar.gz: d0b1156222d75af14749b9bfff6cc80550fcc0c20004337cfb7e0d478ac2d715
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdc8d2f6b7cb93b1af53f83d2f2c64a78f1198d260ec1e11a7ac8ef5b6e8b93affd564de405001f52e116264defd2253a60cb304e417a50caf7a4840a3460405
|
7
|
+
data.tar.gz: 4526159a7ac8282191e9f884e45efd713cde0e91857168eca569be72d24f4ba553d8dfdda67175cdba425be9c1c1597185f312ccb29b7ca887a49993a860685f
|
data/CHANGELOG.md
CHANGED
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
|
-
"
|
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
|
data/lib/ambito/price.rb
ADDED
@@ -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 =
|
8
|
-
@sell =
|
9
|
-
@
|
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}:
|
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
|
25
|
-
|
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
|
data/lib/ambito/version.rb
CHANGED
data/lib/ambito.rb
CHANGED
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.
|
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-
|
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:
|