cryptocoin_fanboi 0.5.2 → 0.7.0
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 +5 -5
- checksums.yaml.gz.sig +3 -4
- data.tar.gz.sig +0 -0
- data/lib/cryptocoin_fanboi.rb +131 -52
- metadata +68 -83
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1bfc95bacb5c4990d5e1c0dda661b8ce3208e300379c87b52f6e1e69e7581edb
|
4
|
+
data.tar.gz: 190711504307d779f0180a6e7122693290c6233b0ea2e652362cb262b40880c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a569183a1bb366c18fae986cd2f182a9208ca51277eda22d4c6b0b5d71574ce8e51f2014d3120728b662afb2081808bb5341ff7b73062fde653031ca6c6e8b0
|
7
|
+
data.tar.gz: 41cd0bf2b9d4c883022c5d00102236cea7f3edc50f2c776f7db792a6d8d5988fae63a10fb192e3b8feccc5514239a4061987005465ccf87a6466bead4231c65e
|
checksums.yaml.gz.sig
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
|
-
�
|
3
|
-
���
|
4
|
-
��0�n?�5�nf���"�O���\�m��u!>��'zq�*m�Wӕn��> MW_Zg�Q{�%���!�8W=QF5b�ܱJ)�6�u9(�m�Bw
|
1
|
+
�fw`�|���+&B�0Ȥ�U+�ڂ������˴qx�������
|
2
|
+
s�O��5��2���vG��i��o�!�%�ϴ;�b�$�=iv��'2(�&n�ԋm�2�Ud-�@H ��}��\M�-
|
3
|
+
��-���U$��R�pvt�K��"��9 h#yߴ@��R�[�d���a�D��#�������J_R6�s���f�X��f��җ����@ʌۈ8)�\^L���U�~䇩s�_,na>D$�,.�ѥ*M�m[�[������A��o�c;��� ֮��f��AGڸ
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/cryptocoin_fanboi.rb
CHANGED
@@ -11,7 +11,21 @@ require 'rxfhelper'
|
|
11
11
|
require 'rexle'
|
12
12
|
require 'kramdown'
|
13
13
|
require 'justexchangerates'
|
14
|
-
|
14
|
+
require 'coinquery'
|
15
|
+
|
16
|
+
# 02-May 2021 ----
|
17
|
+
#
|
18
|
+
# public methods tested:
|
19
|
+
#
|
20
|
+
# * this_day
|
21
|
+
# * this_hour
|
22
|
+
# * this_week
|
23
|
+
# * this_month
|
24
|
+
# * past_60d
|
25
|
+
# * past_90d
|
26
|
+
|
27
|
+
# note: In order to use this gem you will need at least a
|
28
|
+
# valid "basic plan" Coinmarket API key.
|
15
29
|
|
16
30
|
=begin
|
17
31
|
|
@@ -47,7 +61,7 @@ module Colour
|
|
47
61
|
|
48
62
|
return x if x.to_s.strip.empty? or @colored == false
|
49
63
|
|
50
|
-
s3 = (x.to_s.sub(/[\d\.\-]+/) {|s2| "%.2f" % s2})
|
64
|
+
s3 = (x.to_s.sub(/[\d\.\-]+/) {|s2| "%.2f" % s2.to_f})
|
51
65
|
s = s3.length == x.to_s.length ? s3 : s3.sub(/ /,'')
|
52
66
|
|
53
67
|
s[/^ *-/] ? s.red : s.green
|
@@ -59,26 +73,44 @@ end
|
|
59
73
|
|
60
74
|
class CryptocoinFanboi
|
61
75
|
include Colour
|
76
|
+
using ColouredText
|
62
77
|
|
63
78
|
attr_reader :coins, :all_coins
|
64
79
|
attr_accessor :colored
|
65
80
|
|
66
|
-
def initialize(watch: [], ignore: [],
|
67
|
-
|
81
|
+
def initialize(watch: [], ignore: [], colored: true, debug: false,
|
82
|
+
filepath: '.', exchangerate_key: nil, cmc_apikey: nil)
|
68
83
|
|
69
84
|
@colored, @debug, @filepath = colored, debug, filepath
|
85
|
+
@exchangerate_key, @cmc_apikey = exchangerate_key, cmc_apikey
|
86
|
+
|
87
|
+
@cq = CoinQuery.new(dym: false, timeout: 7, debug: debug)
|
70
88
|
|
71
89
|
@watch= watch.map(&:upcase)
|
72
90
|
@ignore = ignore.map(&:upcase)
|
73
91
|
|
74
|
-
@fields = %w(rank name price_usd price_btc percent_change_1h
|
75
|
-
percent_change_24h percent_change_7d percent_change_year)
|
76
|
-
|
77
|
-
@year = Time.now.year
|
78
|
-
@labels = %w(Rank Name USD BTC) + ['% 1hr:', '% 24hr:',
|
79
|
-
'% 1 week:', '% ' + @year.to_s + ':']
|
80
|
-
coins = fetch_coinlist()
|
81
92
|
|
93
|
+
#@fields = %w(rank name price_usd price_btc percent_change_1h
|
94
|
+
# percent_change_24h percent_change_7d percent_change_year)
|
95
|
+
|
96
|
+
pct_fields = %w(1h 24h 7d 30d 60d 90d).map {|x| 'percent_change_' + x}
|
97
|
+
@fields = %w(price) + pct_fields
|
98
|
+
|
99
|
+
@year = Time.now.year
|
100
|
+
#@labels = %w(Rank Name USD BTC) + ['% 1hr:', '% 24hr:',
|
101
|
+
# '% 1 week:', '% ' + @year.to_s + ':']
|
102
|
+
@labels = %w(Rank Name USD) + ['% 1hr:', '% 24hr:',
|
103
|
+
'% 7d:','% 30d:','% 60d:','% 90d:']
|
104
|
+
|
105
|
+
puts 'about to fetch coinlist'.info if @debug
|
106
|
+
@coins = coins = fetch_coinlist()
|
107
|
+
puts 'coinlist fetched'.info if @debug
|
108
|
+
|
109
|
+
# The following code is commented out because it's non-essential to
|
110
|
+
# returning the current coin prices. It was intended to show yearly
|
111
|
+
# percentage returns
|
112
|
+
|
113
|
+
=begin
|
82
114
|
# check for the local cache file containing a record of currency
|
83
115
|
# prices from the start of the year
|
84
116
|
|
@@ -117,7 +149,7 @@ class CryptocoinFanboi
|
|
117
149
|
puts '@growth: ' + @growth.inspect if @debug
|
118
150
|
|
119
151
|
@coins = add_year_growth coins
|
120
|
-
|
152
|
+
=end
|
121
153
|
|
122
154
|
end
|
123
155
|
|
@@ -144,9 +176,11 @@ class CryptocoinFanboi
|
|
144
176
|
end
|
145
177
|
|
146
178
|
|
147
|
-
def btc_price(coin, date=nil)
|
179
|
+
def btc_price(coin='Bitcoin', date=nil)
|
148
180
|
|
149
181
|
usd = self.price(coin, date)
|
182
|
+
return usd if coin == 'Bitcoin'
|
183
|
+
|
150
184
|
puts 'usd: ' + usd.inspect if @debug
|
151
185
|
btc = self.price('bitcoin', date)
|
152
186
|
(usd / btc)
|
@@ -188,7 +222,8 @@ class CryptocoinFanboi
|
|
188
222
|
|
189
223
|
def inspect()
|
190
224
|
|
191
|
-
c = @coins.inspect.length > 50 ?
|
225
|
+
c = @coins.inspect.length > 50 ? \
|
226
|
+
@coins.inspect[0..50] + '...' : @coins.inspect
|
192
227
|
"#<%s:%s @coins=\"%s\ @all_coins=\"...\">" % [self.class,
|
193
228
|
self.object_id, c]
|
194
229
|
end
|
@@ -199,15 +234,16 @@ class CryptocoinFanboi
|
|
199
234
|
puts 'inside find: name: ' + name.inspect
|
200
235
|
puts 'coins: ' + @coins.inspect
|
201
236
|
end
|
202
|
-
|
237
|
+
|
238
|
+
coins.find {|coin| coin.name =~ /#{name}/i or coin.symbol =~ /#{name}/i}
|
203
239
|
|
204
240
|
end
|
205
241
|
|
206
242
|
# View the coins with the largest gains in the past hour
|
207
243
|
#
|
208
|
-
def now(limit: 5, markdown: false)
|
244
|
+
def now(limit: 5, markdown: false, rank: :top)
|
209
245
|
|
210
|
-
build_table
|
246
|
+
build_table sort_coins('1h', limit: limit, rank: rank), markdown: markdown
|
211
247
|
|
212
248
|
end
|
213
249
|
|
@@ -221,21 +257,21 @@ class CryptocoinFanboi
|
|
221
257
|
|
222
258
|
coin = raw_coin.downcase.split.map(&:capitalize).join(' ')
|
223
259
|
|
224
|
-
return self.coin(coin).
|
260
|
+
return self.coin(coin).quote['USD']['price'].to_f if raw_date.nil?
|
225
261
|
puts 'raw_date: ' + raw_date.inspect if @debug
|
226
262
|
|
227
263
|
date = if raw_date.is_a? Date then
|
228
264
|
raw_date.strftime("%Y%m%d")
|
229
265
|
else
|
230
|
-
Chronic.parse(raw_date.gsub('-',' ')).strftime("%
|
266
|
+
Chronic.parse(raw_date.gsub('-',' ')).strftime("%d%m%Y")
|
231
267
|
end
|
232
268
|
puts 'date: ' + date.inspect if @debug
|
233
269
|
|
234
270
|
# if date is today then return today's price
|
235
271
|
|
236
|
-
if date == Date.today.strftime("%
|
272
|
+
if date == Date.today.strftime("%d%m%Y")
|
237
273
|
puts 'same day' if @debug
|
238
|
-
return self.coin(coin).
|
274
|
+
return self.coin(coin).quote['USD']['price'].to_f
|
239
275
|
end
|
240
276
|
|
241
277
|
|
@@ -249,11 +285,12 @@ class CryptocoinFanboi
|
|
249
285
|
puts 'date: ' + date.inspect
|
250
286
|
end
|
251
287
|
|
252
|
-
a = Coinmarketcap.get_historical_price(coin.gsub(/ /,'-'), date, date)
|
253
|
-
puts 'a: ' + a.inspect if @debug
|
254
|
-
|
255
|
-
r = a.any? ? a.first[:close] : self.coin(coin).price_usd.to_f
|
288
|
+
#a = Coinmarketcap.get_historical_price(coin.gsub(/ /,'-'), date, date)
|
289
|
+
#puts 'a: ' + a.inspect if @debug
|
256
290
|
|
291
|
+
#r = a.any? ? a.first[:close] : self.coin(coin).quote['USD']['price'].to_f
|
292
|
+
price = @cq.historical_price coin, date
|
293
|
+
r = price ? price.to_f : self.coin(coin).quote['USD']['price'].to_f
|
257
294
|
@history_prices[coin] ||= {}
|
258
295
|
@history_prices[coin][date] = r
|
259
296
|
File.write @historic_prices_file, @history_prices.to_yaml
|
@@ -267,6 +304,21 @@ class CryptocoinFanboi
|
|
267
304
|
|
268
305
|
end
|
269
306
|
|
307
|
+
def past_60d(limit: 5, markdown: false, rank: :top)
|
308
|
+
|
309
|
+
coins = sort_coins('60d', limit: limit, rank: rank)
|
310
|
+
build_table coins, markdown: markdown
|
311
|
+
|
312
|
+
end
|
313
|
+
|
314
|
+
def past_90d(limit: 5, markdown: false, rank: :top)
|
315
|
+
|
316
|
+
coins = sort_coins('90d', limit: limit, rank: rank)
|
317
|
+
build_table coins, markdown: markdown
|
318
|
+
|
319
|
+
end
|
320
|
+
|
321
|
+
|
270
322
|
def prices_this_year(coin)
|
271
323
|
|
272
324
|
(Date.parse('1 Jan')..Date.today).map do |date|
|
@@ -280,7 +332,8 @@ class CryptocoinFanboi
|
|
280
332
|
#
|
281
333
|
def rates(coin='Bitcoin', currencies: %w(EUR GBP))
|
282
334
|
|
283
|
-
jeg = JustExchangeRates.new(base: 'USD'
|
335
|
+
jeg = JustExchangeRates.new(base: 'USD', app_id: @exchangerate_key,
|
336
|
+
debug: @debug)
|
284
337
|
usd = self.price(coin).round(2)
|
285
338
|
([:USD] + currencies.map(&:to_sym)).zip(
|
286
339
|
[usd, *currencies.map {|currency| (usd * jeg.rate(currency)).round(2) }]
|
@@ -290,21 +343,34 @@ class CryptocoinFanboi
|
|
290
343
|
|
291
344
|
# View the coins with the largest gains this week (past 7 days)
|
292
345
|
#
|
293
|
-
def this_week(limit: 5, markdown: false)
|
346
|
+
def this_week(limit: 5, markdown: false, rank: :top)
|
294
347
|
|
295
|
-
coins =
|
348
|
+
coins = sort_coins('7d', limit: limit, rank: rank)
|
296
349
|
build_table coins, markdown: markdown
|
297
350
|
|
298
351
|
end
|
299
352
|
|
300
353
|
alias week this_week
|
301
354
|
|
355
|
+
# View the coins with the largest gains this week (past 7 days)
|
356
|
+
#
|
357
|
+
def this_month(limit: 5, markdown: false, rank: :top)
|
358
|
+
|
359
|
+
puts 'inside this_mponth'.info if @debug
|
360
|
+
coins = sort_coins('30d', limit: limit, rank: rank)
|
361
|
+
build_table coins, markdown: markdown
|
362
|
+
|
363
|
+
end
|
364
|
+
|
365
|
+
alias month this_month
|
366
|
+
|
367
|
+
|
302
368
|
# View the coins with the largest gains this
|
303
369
|
# year (since the start of the year)
|
304
370
|
#
|
305
|
-
def this_year(limit: 5, markdown: false)
|
371
|
+
def this_year(limit: 5, markdown: false, rank: :top)
|
306
372
|
|
307
|
-
build_table
|
373
|
+
build_table sort_coins('year', limit: limit, rank: rank), markdown: markdown
|
308
374
|
|
309
375
|
end
|
310
376
|
|
@@ -312,9 +378,9 @@ class CryptocoinFanboi
|
|
312
378
|
|
313
379
|
# View the coins with the largest gains today (past 24 hours)
|
314
380
|
#
|
315
|
-
def today(limit: 5, markdown: false)
|
381
|
+
def today(limit: 5, markdown: false, rank: :top)
|
316
382
|
|
317
|
-
build_table
|
383
|
+
build_table sort_coins('24h', limit: limit, rank: rank), markdown: markdown
|
318
384
|
|
319
385
|
end
|
320
386
|
|
@@ -335,22 +401,25 @@ class CryptocoinFanboi
|
|
335
401
|
|
336
402
|
end
|
337
403
|
|
338
|
-
def to_s(limit: 5, markdown: false)
|
404
|
+
def to_s(limit: 5, markdown: false, rank: :top)
|
339
405
|
|
340
406
|
coins = (fetch_coinlist(limit: limit))
|
341
407
|
|
342
408
|
coins2 = add_year_growth(coins)
|
343
409
|
|
344
|
-
puts 'coins2: ' + coins2.inspect
|
410
|
+
puts ('coins2: ' + coins2.inspect).debug if @debg
|
345
411
|
|
346
412
|
coins3 = coins2.map do |coin|
|
347
413
|
|
348
|
-
puts 'coin: ' + coin.inspect if @debug
|
349
|
-
|
350
|
-
|
414
|
+
puts ('coin: ' + coin.inspect).debug if @debug
|
415
|
+
a2 = %w(cmc_rank name).map {|x| coin[x]}
|
416
|
+
puts 'a2: ' + a2.inspect
|
417
|
+
a3 = @fields.map {|x| coin['quote']['USD'][x].to_f.round(2) }
|
418
|
+
puts 'a3: ' + a3.inspect
|
419
|
+
a2 + a3
|
351
420
|
end
|
352
421
|
|
353
|
-
puts 'coins3: ' + coins3.inspect if @debug
|
422
|
+
puts ('coins3: ' + coins3.inspect).debug if @debug
|
354
423
|
|
355
424
|
|
356
425
|
build_table coins3, markdown: markdown
|
@@ -396,8 +465,8 @@ class CryptocoinFanboi
|
|
396
465
|
puts 'labels: ' + labels.inspect
|
397
466
|
end
|
398
467
|
|
399
|
-
s = TableFormatter.new(source: source, labels: labels,
|
400
|
-
|
468
|
+
s = TableFormatter.new(source: source, labels: labels, divider: '|',
|
469
|
+
markdown: markdown).display
|
401
470
|
|
402
471
|
return s if @colored == false or markdown
|
403
472
|
|
@@ -407,8 +476,9 @@ class CryptocoinFanboi
|
|
407
476
|
|
408
477
|
fields = line.split('|')
|
409
478
|
|
410
|
-
a2 = fields[
|
411
|
-
|
479
|
+
a2 = fields[4..-2].map {|x| c(x) }
|
480
|
+
puts 'at: ' + a2.inspect if @debug
|
481
|
+
(fields[0..3] + a2 + ["\n"]).join('|')
|
412
482
|
|
413
483
|
end
|
414
484
|
|
@@ -417,7 +487,8 @@ class CryptocoinFanboi
|
|
417
487
|
|
418
488
|
def fetch_coinlist(limit: nil)
|
419
489
|
|
420
|
-
|
490
|
+
body = CoinmarketcapLite.new(apikey: @cmc_apikey).coins.body
|
491
|
+
@all_coins = JSON.parse(body)['data']\
|
421
492
|
.map {|x| OpenStruct.new x}
|
422
493
|
|
423
494
|
if @watch.any? then
|
@@ -438,20 +509,22 @@ class CryptocoinFanboi
|
|
438
509
|
|
439
510
|
coins.inject({}) do |r, coin|
|
440
511
|
|
441
|
-
day1 = @year.to_s
|
512
|
+
day1 = '01-01-' + @year.to_s
|
442
513
|
puts 'coin: ' + coin.name.inspect if @debug
|
443
514
|
|
444
515
|
begin
|
445
516
|
|
446
|
-
a = Coinmarketcap.get_historical_price(coin.name.gsub(/ /,'-'),
|
447
|
-
|
517
|
+
#a = Coinmarketcap.get_historical_price(coin.name.gsub(/ /,'-'),
|
518
|
+
# day1, day1)
|
519
|
+
price = @cq.historical_price coin.symbol, day1
|
520
|
+
|
448
521
|
rescue
|
449
522
|
puts 'warning : ' + coin.name.inspect + ' ' + ($!).inspect
|
450
523
|
end
|
451
524
|
|
452
|
-
if
|
525
|
+
if price then
|
453
526
|
|
454
|
-
r.merge({coin.name =>
|
527
|
+
r.merge({coin.name => price.to_f})
|
455
528
|
else
|
456
529
|
r
|
457
530
|
end
|
@@ -476,7 +549,7 @@ class CryptocoinFanboi
|
|
476
549
|
|
477
550
|
if year_start_price then
|
478
551
|
|
479
|
-
latest_day = coin.
|
552
|
+
latest_day = coin.quote['USD']['price'].to_f
|
480
553
|
puts "latest_day: %s year_start: %s" % \
|
481
554
|
[latest_day, year_start_price] if @debug
|
482
555
|
r.merge({coin.name => (100.0 / (year_start_price /
|
@@ -489,10 +562,16 @@ class CryptocoinFanboi
|
|
489
562
|
|
490
563
|
end
|
491
564
|
|
492
|
-
def
|
565
|
+
def sort_coins(period='7d', limit: 5, rank: :top)
|
493
566
|
|
494
|
-
|
495
|
-
|
567
|
+
puts 'sorting coins ...'.info if @debug
|
568
|
+
puts '@coins[0]: ' + @coins[0].inspect
|
569
|
+
|
570
|
+
a = @coins.sort_by {|x| -x.quote['USD']['percent_change_' + period].to_f}
|
571
|
+
a.reverse! if rank == :bottom
|
572
|
+
a.take(limit).map do |coin|
|
573
|
+
[coin.cmc_rank, coin.name] + @fields.map {|key| coin.quote['USD'][key].round(2) }
|
574
|
+
end
|
496
575
|
|
497
576
|
end
|
498
577
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cryptocoin_fanboi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,170 +10,155 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwNTAyMTcxNTQ3WhcN
|
15
|
+
MjIwNTAyMTcxNTQ3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQD1nGup
|
17
|
+
7mMwGHuKirtgJDX5vuWZIfoJX2q6HmvGlzN4X9mg0HGumdxcn8hB87fhA7ZrABke
|
18
|
+
RvddmFeXJSlZDMtQ3Wrax16yp1wRGfL0yyPcTyTSWjldIZJEb+VkmUjnvvpqZNgU
|
19
|
+
JYfD5pMw68no7Sd90aoAjPI3Col8G8WXSyZTgUb/VBTtr5F0w/S0Vq70pe1ELXax
|
20
|
+
iBKvxKStzCtAIsppWmP0qicesKH6vX2aQexnUFRRoPIYMbSuPrWv6sESSShtkm2O
|
21
|
+
UC55cjaBSuvo3puRbPWmtB3Sopu5aaWgOrBIsXG0DnT3w9qguASUx6ERbUKrUS0o
|
22
|
+
h01mNPLPq97shGMP+zQrSxwOBxSxFeBwuzoNg8fTJ4TUjCz5cbHKSQE87VDmbpte
|
23
|
+
IKnUuMQ1AleMUkId9Qu2hMCgZodNAswPhK4te6xBBo62h1ZeisShi9ZfzqQ4ZJUd
|
24
|
+
Gz77jLxRbw4ffLAakevQaYkcGkzvMxF8F4zyYvSr6XChab4ySiOoiqR44HUCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUCg7Bg911
|
26
|
+
lYjihiJmU/amUBfS5XIwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAHqoUl4+Eb0XXSoSN2kn4FK0+lwCWzvsw1no8VVvz
|
29
|
+
X4Yzcxpx076sR97xax4S6++nOnULXp0U1dh5ohHbwN96soWUbtCUGc0ATI27BWMd
|
30
|
+
rGe6jvur7Aoc2RpOYF32gOcZGScHQnvptyKFA+iV2fLeC7X1EkP9zRa8FxBatbbq
|
31
|
+
Irrofi01zMrPy2GMtbmaBDQwyEvw10Mj4zPEFRO9HchS3Ufb0XzAjf0p+XYG6GOs
|
32
|
+
HNE6h7xQL14l/H74Nj6JQksFew5MwO45kkCaenQXOt6+OaoFayyp6MXjyHXsR6k/
|
33
|
+
X3MsM9Yluc0zjhjipc6i3lyqN/OyMy3RTbi25iTPeIFyl4n0F5OR1y+DXy2ZN6Xb
|
34
|
+
jMyolu6Fvw4RyX+8S7/yxACBenRqrBgjoRfardaubu7lhZAt9mRjKApWpRnTm4pX
|
35
|
+
8apOj5Vc5mSZcvmZkImt0L0+RfWgzVjyK6LWXmWC0fkURO1c8pu+DEn2QI5HEKpD
|
36
|
+
zda3SGyo8CEr8HOwCV4H0aAY
|
32
37
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
38
|
+
date: 2021-05-02 00:00:00.000000000 Z
|
34
39
|
dependencies:
|
35
40
|
- !ruby/object:Gem::Dependency
|
36
41
|
name: colored
|
37
42
|
requirement: !ruby/object:Gem::Requirement
|
38
43
|
requirements:
|
39
|
-
- - "
|
44
|
+
- - ">="
|
40
45
|
- !ruby/object:Gem::Version
|
41
46
|
version: '1.2'
|
42
|
-
- - "
|
47
|
+
- - "~>"
|
43
48
|
- !ruby/object:Gem::Version
|
44
49
|
version: '1.2'
|
45
50
|
type: :runtime
|
46
51
|
prerelease: false
|
47
52
|
version_requirements: !ruby/object:Gem::Requirement
|
48
53
|
requirements:
|
49
|
-
- - "
|
54
|
+
- - ">="
|
50
55
|
- !ruby/object:Gem::Version
|
51
56
|
version: '1.2'
|
52
|
-
- - "
|
57
|
+
- - "~>"
|
53
58
|
- !ruby/object:Gem::Version
|
54
59
|
version: '1.2'
|
55
60
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
61
|
+
name: coinmarketcap_lite
|
57
62
|
requirement: !ruby/object:Gem::Requirement
|
58
63
|
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.10'
|
62
64
|
- - ">="
|
63
65
|
- !ruby/object:Gem::Version
|
64
|
-
version: 0.
|
65
|
-
type: :runtime
|
66
|
-
prerelease: false
|
67
|
-
version_requirements: !ruby/object:Gem::Requirement
|
68
|
-
requirements:
|
66
|
+
version: 0.1.0
|
69
67
|
- - "~>"
|
70
68
|
- !ruby/object:Gem::Version
|
71
|
-
version: '0.
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 0.10.2
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: coinmarketcap
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0.2'
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: 0.2.4
|
69
|
+
version: '0.1'
|
85
70
|
type: :runtime
|
86
71
|
prerelease: false
|
87
72
|
version_requirements: !ruby/object:Gem::Requirement
|
88
73
|
requirements:
|
89
|
-
- - "~>"
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '0.2'
|
92
74
|
- - ">="
|
93
75
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.
|
76
|
+
version: 0.1.0
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.1'
|
95
80
|
- !ruby/object:Gem::Dependency
|
96
81
|
name: table-formatter
|
97
82
|
requirement: !ruby/object:Gem::Requirement
|
98
83
|
requirements:
|
99
|
-
- - "~>"
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0.5'
|
102
84
|
- - ">="
|
103
85
|
- !ruby/object:Gem::Version
|
104
|
-
version: 0.
|
86
|
+
version: 0.7.0
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.7'
|
105
90
|
type: :runtime
|
106
91
|
prerelease: false
|
107
92
|
version_requirements: !ruby/object:Gem::Requirement
|
108
93
|
requirements:
|
109
|
-
- - "~>"
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '0.5'
|
112
94
|
- - ">="
|
113
95
|
- !ruby/object:Gem::Version
|
114
|
-
version: 0.
|
96
|
+
version: 0.7.0
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0.7'
|
115
100
|
- !ruby/object:Gem::Dependency
|
116
|
-
name:
|
101
|
+
name: kramdown
|
117
102
|
requirement: !ruby/object:Gem::Requirement
|
118
103
|
requirements:
|
119
|
-
- - "~>"
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: '1.4'
|
122
104
|
- - ">="
|
123
105
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.
|
106
|
+
version: 2.1.0
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '2.1'
|
125
110
|
type: :runtime
|
126
111
|
prerelease: false
|
127
112
|
version_requirements: !ruby/object:Gem::Requirement
|
128
113
|
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '1.4'
|
132
114
|
- - ">="
|
133
115
|
- !ruby/object:Gem::Version
|
134
|
-
version: 1.
|
116
|
+
version: 2.1.0
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '2.1'
|
135
120
|
- !ruby/object:Gem::Dependency
|
136
|
-
name:
|
121
|
+
name: justexchangerates
|
137
122
|
requirement: !ruby/object:Gem::Requirement
|
138
123
|
requirements:
|
139
124
|
- - "~>"
|
140
125
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
126
|
+
version: '0.3'
|
142
127
|
- - ">="
|
143
128
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
129
|
+
version: 0.3.4
|
145
130
|
type: :runtime
|
146
131
|
prerelease: false
|
147
132
|
version_requirements: !ruby/object:Gem::Requirement
|
148
133
|
requirements:
|
149
134
|
- - "~>"
|
150
135
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
136
|
+
version: '0.3'
|
152
137
|
- - ">="
|
153
138
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
139
|
+
version: 0.3.4
|
155
140
|
- !ruby/object:Gem::Dependency
|
156
|
-
name:
|
141
|
+
name: coinquery
|
157
142
|
requirement: !ruby/object:Gem::Requirement
|
158
143
|
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 0.2.0
|
159
147
|
- - "~>"
|
160
148
|
- !ruby/object:Gem::Version
|
161
149
|
version: '0.2'
|
162
|
-
- - ">="
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version: 0.2.1
|
165
150
|
type: :runtime
|
166
151
|
prerelease: false
|
167
152
|
version_requirements: !ruby/object:Gem::Requirement
|
168
153
|
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 0.2.0
|
169
157
|
- - "~>"
|
170
158
|
- !ruby/object:Gem::Version
|
171
159
|
version: '0.2'
|
172
|
-
- - ">="
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version: 0.2.1
|
175
160
|
description:
|
176
|
-
email:
|
161
|
+
email: digital.robertson@gmail.com
|
177
162
|
executables: []
|
178
163
|
extensions: []
|
179
164
|
extra_rdoc_files: []
|
@@ -199,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
184
|
version: '0'
|
200
185
|
requirements: []
|
201
186
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.
|
187
|
+
rubygems_version: 2.7.10
|
203
188
|
signing_key:
|
204
189
|
specification_version: 4
|
205
190
|
summary: A coinmarketcap wrapper which makes it convenient to display the top 5 cryptocurrencies
|
metadata.gz.sig
CHANGED
Binary file
|