cryptocoin_fanboi 0.5.5 → 0.8.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 +0 -0
- data.tar.gz.sig +0 -0
- data/lib/cryptocoin_fanboi.rb +126 -43
- metadata +96 -71
- 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: a1fd541ce5377d0b6e93894f354e6b0e75ee870376c6599a451df8616984ccbd
|
4
|
+
data.tar.gz: 91717a3ac0a1535414c69d3c6387ee732948b86557cc308ff3fe2e5ff9713a74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73afb57040c45f35f75d8f3094e88680c64d58cc3b0276fecf15bbe5ab4046922c98b2e5877b9f22be75c78a6058eb96140d426c82b99df3ffe9c6ecb858aef0
|
7
|
+
data.tar.gz: 1e244f248fd3c8399fc0427ce3877443b1862a562a4b52a18a2b7f85a18283fb2cacb30b9155522a23b1547cd8d6fa19278ae077c05d4b2be61a5a09e67362fb
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/cryptocoin_fanboi.rb
CHANGED
@@ -3,15 +3,32 @@
|
|
3
3
|
# file: cryptocoin_fanboi.rb
|
4
4
|
|
5
5
|
|
6
|
+
require 'excon'
|
6
7
|
require 'psych'
|
7
8
|
require 'colored'
|
8
|
-
require '
|
9
|
+
require 'coinmarketcap_lite'
|
9
10
|
require 'table-formatter'
|
10
11
|
require 'rxfhelper'
|
11
12
|
require 'rexle'
|
12
13
|
require 'kramdown'
|
13
14
|
require 'justexchangerates'
|
14
|
-
|
15
|
+
require 'coinquery'
|
16
|
+
require 'coin360api21'
|
17
|
+
require 'remote_dwsregistry'
|
18
|
+
|
19
|
+
# 02-May 2021 ----
|
20
|
+
#
|
21
|
+
# public methods tested:
|
22
|
+
#
|
23
|
+
# * this_day
|
24
|
+
# * this_hour
|
25
|
+
# * this_week
|
26
|
+
# * this_month
|
27
|
+
# * past_60d
|
28
|
+
# * past_90d
|
29
|
+
|
30
|
+
# note: In order to use this gem you will need at least a
|
31
|
+
# valid "basic plan" Coinmarket API key.
|
15
32
|
|
16
33
|
=begin
|
17
34
|
|
@@ -47,7 +64,7 @@ module Colour
|
|
47
64
|
|
48
65
|
return x if x.to_s.strip.empty? or @colored == false
|
49
66
|
|
50
|
-
s3 = (x.to_s.sub(/[\d\.\-]+/) {|s2| "%.2f" % s2})
|
67
|
+
s3 = (x.to_s.sub(/[\d\.\-]+/) {|s2| "%.2f" % s2.to_f})
|
51
68
|
s = s3.length == x.to_s.length ? s3 : s3.sub(/ /,'')
|
52
69
|
|
53
70
|
s[/^ *-/] ? s.red : s.green
|
@@ -59,27 +76,44 @@ end
|
|
59
76
|
|
60
77
|
class CryptocoinFanboi
|
61
78
|
include Colour
|
79
|
+
using ColouredText
|
62
80
|
|
63
81
|
attr_reader :coins, :all_coins
|
64
82
|
attr_accessor :colored
|
65
83
|
|
66
|
-
def initialize(watch: [], ignore: [], colored: true,
|
67
|
-
|
84
|
+
def initialize(watch: [], ignore: [], colored: true, debug: false,
|
85
|
+
filepath: '.', exchangerate_key: nil, cmc_apikey: nil)
|
68
86
|
|
69
|
-
@colored, @debug, @filepath
|
70
|
-
|
87
|
+
@colored, @debug, @filepath = colored, debug, filepath
|
88
|
+
@exchangerate_key, @cmc_apikey = exchangerate_key, cmc_apikey
|
89
|
+
|
90
|
+
@cq = CoinQuery.new(dym: false, timeout: 7, debug: debug)
|
71
91
|
|
72
92
|
@watch= watch.map(&:upcase)
|
73
93
|
@ignore = ignore.map(&:upcase)
|
74
94
|
|
75
|
-
@fields = %w(rank name price_usd price_btc percent_change_1h
|
76
|
-
percent_change_24h percent_change_7d percent_change_year)
|
77
|
-
|
78
|
-
@year = Time.now.year
|
79
|
-
@labels = %w(Rank Name USD BTC) + ['% 1hr:', '% 24hr:',
|
80
|
-
'% 1 week:', '% ' + @year.to_s + ':']
|
81
|
-
coins = fetch_coinlist()
|
82
95
|
|
96
|
+
#@fields = %w(rank name price_usd price_btc percent_change_1h
|
97
|
+
# percent_change_24h percent_change_7d percent_change_year)
|
98
|
+
|
99
|
+
pct_fields = %w(1h 24h 7d 30d 60d 90d).map {|x| 'percent_change_' + x}
|
100
|
+
@fields = %w(price) + pct_fields
|
101
|
+
|
102
|
+
@year = Time.now.year
|
103
|
+
#@labels = %w(Rank Name USD BTC) + ['% 1hr:', '% 24hr:',
|
104
|
+
# '% 1 week:', '% ' + @year.to_s + ':']
|
105
|
+
@labels = %w(Rank Name USD) + ['% 1hr:', '% 24hr:',
|
106
|
+
'% 7d:','% 30d:','% 60d:','% 90d:']
|
107
|
+
|
108
|
+
puts 'about to fetch coinlist'.info if @debug
|
109
|
+
@coins = coins = fetch_coinlist()
|
110
|
+
puts 'coinlist fetched'.info if @debug
|
111
|
+
|
112
|
+
# The following code is commented out because it's non-essential to
|
113
|
+
# returning the current coin prices. It was intended to show yearly
|
114
|
+
# percentage returns
|
115
|
+
|
116
|
+
=begin
|
83
117
|
# check for the local cache file containing a record of currency
|
84
118
|
# prices from the start of the year
|
85
119
|
|
@@ -118,7 +152,7 @@ class CryptocoinFanboi
|
|
118
152
|
puts '@growth: ' + @growth.inspect if @debug
|
119
153
|
|
120
154
|
@coins = add_year_growth coins
|
121
|
-
|
155
|
+
=end
|
122
156
|
|
123
157
|
end
|
124
158
|
|
@@ -203,7 +237,8 @@ class CryptocoinFanboi
|
|
203
237
|
puts 'inside find: name: ' + name.inspect
|
204
238
|
puts 'coins: ' + @coins.inspect
|
205
239
|
end
|
206
|
-
|
240
|
+
|
241
|
+
coins.find {|coin| coin.name =~ /#{name}/i or coin.symbol =~ /#{name}/i}
|
207
242
|
|
208
243
|
end
|
209
244
|
|
@@ -225,21 +260,21 @@ class CryptocoinFanboi
|
|
225
260
|
|
226
261
|
coin = raw_coin.downcase.split.map(&:capitalize).join(' ')
|
227
262
|
|
228
|
-
return self.coin(coin).
|
263
|
+
return self.coin(coin).quote['USD']['price'].to_f if raw_date.nil?
|
229
264
|
puts 'raw_date: ' + raw_date.inspect if @debug
|
230
265
|
|
231
266
|
date = if raw_date.is_a? Date then
|
232
267
|
raw_date.strftime("%Y%m%d")
|
233
268
|
else
|
234
|
-
Chronic.parse(raw_date.gsub('-',' ')).strftime("%
|
269
|
+
Chronic.parse(raw_date.gsub('-',' ')).strftime("%d%m%Y")
|
235
270
|
end
|
236
271
|
puts 'date: ' + date.inspect if @debug
|
237
272
|
|
238
273
|
# if date is today then return today's price
|
239
274
|
|
240
|
-
if date == Date.today.strftime("%
|
275
|
+
if date == Date.today.strftime("%d%m%Y")
|
241
276
|
puts 'same day' if @debug
|
242
|
-
return self.coin(coin).
|
277
|
+
return self.coin(coin).quote['USD']['price'].to_f
|
243
278
|
end
|
244
279
|
|
245
280
|
|
@@ -253,11 +288,12 @@ class CryptocoinFanboi
|
|
253
288
|
puts 'date: ' + date.inspect
|
254
289
|
end
|
255
290
|
|
256
|
-
a = Coinmarketcap.get_historical_price(coin.gsub(/ /,'-'), date, date)
|
257
|
-
puts 'a: ' + a.inspect if @debug
|
258
|
-
|
259
|
-
r = a.any? ? a.first[:close] : self.coin(coin).price_usd.to_f
|
291
|
+
#a = Coinmarketcap.get_historical_price(coin.gsub(/ /,'-'), date, date)
|
292
|
+
#puts 'a: ' + a.inspect if @debug
|
260
293
|
|
294
|
+
#r = a.any? ? a.first[:close] : self.coin(coin).quote['USD']['price'].to_f
|
295
|
+
price = @cq.historical_price coin, date
|
296
|
+
r = price ? price.to_f : self.coin(coin).quote['USD']['price'].to_f
|
261
297
|
@history_prices[coin] ||= {}
|
262
298
|
@history_prices[coin][date] = r
|
263
299
|
File.write @historic_prices_file, @history_prices.to_yaml
|
@@ -271,6 +307,21 @@ class CryptocoinFanboi
|
|
271
307
|
|
272
308
|
end
|
273
309
|
|
310
|
+
def past_60d(limit: 5, markdown: false, rank: :top)
|
311
|
+
|
312
|
+
coins = sort_coins('60d', limit: limit, rank: rank)
|
313
|
+
build_table coins, markdown: markdown
|
314
|
+
|
315
|
+
end
|
316
|
+
|
317
|
+
def past_90d(limit: 5, markdown: false, rank: :top)
|
318
|
+
|
319
|
+
coins = sort_coins('90d', limit: limit, rank: rank)
|
320
|
+
build_table coins, markdown: markdown
|
321
|
+
|
322
|
+
end
|
323
|
+
|
324
|
+
|
274
325
|
def prices_this_year(coin)
|
275
326
|
|
276
327
|
(Date.parse('1 Jan')..Date.today).map do |date|
|
@@ -297,13 +348,26 @@ class CryptocoinFanboi
|
|
297
348
|
#
|
298
349
|
def this_week(limit: 5, markdown: false, rank: :top)
|
299
350
|
|
300
|
-
coins = sort_coins(limit: limit, rank: rank)
|
351
|
+
coins = sort_coins('7d', limit: limit, rank: rank)
|
301
352
|
build_table coins, markdown: markdown
|
302
353
|
|
303
354
|
end
|
304
355
|
|
305
356
|
alias week this_week
|
306
357
|
|
358
|
+
# View the coins with the largest gains this week (past 7 days)
|
359
|
+
#
|
360
|
+
def this_month(limit: 5, markdown: false, rank: :top)
|
361
|
+
|
362
|
+
puts 'inside this_mponth'.info if @debug
|
363
|
+
coins = sort_coins('30d', limit: limit, rank: rank)
|
364
|
+
build_table coins, markdown: markdown
|
365
|
+
|
366
|
+
end
|
367
|
+
|
368
|
+
alias month this_month
|
369
|
+
|
370
|
+
|
307
371
|
# View the coins with the largest gains this
|
308
372
|
# year (since the start of the year)
|
309
373
|
#
|
@@ -326,6 +390,13 @@ class CryptocoinFanboi
|
|
326
390
|
alias last_day today
|
327
391
|
alias day today
|
328
392
|
|
393
|
+
def total_market_cap()
|
394
|
+
|
395
|
+
'$' + Coin360Api21::Global.new.latest.total_market_cap.round.to_s\
|
396
|
+
.reverse.gsub(/...(?=.)/,'\&,').reverse
|
397
|
+
|
398
|
+
end
|
399
|
+
|
329
400
|
def to_html()
|
330
401
|
|
331
402
|
xpath = (5..8).map {|x| 'tbody/tr/td[' + x.to_s + ']' }.join(' | ')
|
@@ -346,16 +417,19 @@ class CryptocoinFanboi
|
|
346
417
|
|
347
418
|
coins2 = add_year_growth(coins)
|
348
419
|
|
349
|
-
puts 'coins2: ' + coins2.inspect
|
420
|
+
puts ('coins2: ' + coins2.inspect).debug if @debg
|
350
421
|
|
351
422
|
coins3 = coins2.map do |coin|
|
352
423
|
|
353
|
-
puts 'coin: ' + coin.inspect if @debug
|
354
|
-
|
355
|
-
|
424
|
+
puts ('coin: ' + coin.inspect).debug if @debug
|
425
|
+
a2 = %w(cmc_rank name).map {|x| coin[x]}
|
426
|
+
puts 'a2: ' + a2.inspect
|
427
|
+
a3 = @fields.map {|x| coin['quote']['USD'][x].to_f.round(2) }
|
428
|
+
puts 'a3: ' + a3.inspect
|
429
|
+
a2 + a3
|
356
430
|
end
|
357
431
|
|
358
|
-
puts 'coins3: ' + coins3.inspect if @debug
|
432
|
+
puts ('coins3: ' + coins3.inspect).debug if @debug
|
359
433
|
|
360
434
|
|
361
435
|
build_table coins3, markdown: markdown
|
@@ -401,8 +475,8 @@ class CryptocoinFanboi
|
|
401
475
|
puts 'labels: ' + labels.inspect
|
402
476
|
end
|
403
477
|
|
404
|
-
s = TableFormatter.new(source: source, labels: labels,
|
405
|
-
|
478
|
+
s = TableFormatter.new(source: source, labels: labels, divider: '|',
|
479
|
+
markdown: markdown).display
|
406
480
|
|
407
481
|
return s if @colored == false or markdown
|
408
482
|
|
@@ -412,8 +486,9 @@ class CryptocoinFanboi
|
|
412
486
|
|
413
487
|
fields = line.split('|')
|
414
488
|
|
415
|
-
a2 = fields[
|
416
|
-
|
489
|
+
a2 = fields[4..-2].map {|x| c(x) }
|
490
|
+
puts 'at: ' + a2.inspect if @debug
|
491
|
+
(fields[0..3] + a2 + ["\n"]).join('|')
|
417
492
|
|
418
493
|
end
|
419
494
|
|
@@ -422,7 +497,8 @@ class CryptocoinFanboi
|
|
422
497
|
|
423
498
|
def fetch_coinlist(limit: nil)
|
424
499
|
|
425
|
-
|
500
|
+
body = CoinmarketcapLite.new(apikey: @cmc_apikey).coins.body
|
501
|
+
@all_coins = JSON.parse(body)['data']\
|
426
502
|
.map {|x| OpenStruct.new x}
|
427
503
|
|
428
504
|
if @watch.any? then
|
@@ -443,20 +519,22 @@ class CryptocoinFanboi
|
|
443
519
|
|
444
520
|
coins.inject({}) do |r, coin|
|
445
521
|
|
446
|
-
day1 = @year.to_s
|
522
|
+
day1 = '01-01-' + @year.to_s
|
447
523
|
puts 'coin: ' + coin.name.inspect if @debug
|
448
524
|
|
449
525
|
begin
|
450
526
|
|
451
|
-
a = Coinmarketcap.get_historical_price(coin.name.gsub(/ /,'-'),
|
452
|
-
|
527
|
+
#a = Coinmarketcap.get_historical_price(coin.name.gsub(/ /,'-'),
|
528
|
+
# day1, day1)
|
529
|
+
price = @cq.historical_price coin.symbol, day1
|
530
|
+
|
453
531
|
rescue
|
454
532
|
puts 'warning : ' + coin.name.inspect + ' ' + ($!).inspect
|
455
533
|
end
|
456
534
|
|
457
|
-
if
|
535
|
+
if price then
|
458
536
|
|
459
|
-
r.merge({coin.name =>
|
537
|
+
r.merge({coin.name => price.to_f})
|
460
538
|
else
|
461
539
|
r
|
462
540
|
end
|
@@ -481,7 +559,7 @@ class CryptocoinFanboi
|
|
481
559
|
|
482
560
|
if year_start_price then
|
483
561
|
|
484
|
-
latest_day = coin.
|
562
|
+
latest_day = coin.quote['USD']['price'].to_f
|
485
563
|
puts "latest_day: %s year_start: %s" % \
|
486
564
|
[latest_day, year_start_price] if @debug
|
487
565
|
r.merge({coin.name => (100.0 / (year_start_price /
|
@@ -496,9 +574,14 @@ class CryptocoinFanboi
|
|
496
574
|
|
497
575
|
def sort_coins(period='7d', limit: 5, rank: :top)
|
498
576
|
|
499
|
-
|
577
|
+
puts 'sorting coins ...'.info if @debug
|
578
|
+
puts '@coins[0]: ' + @coins[0].inspect
|
579
|
+
|
580
|
+
a = @coins.sort_by {|x| -x.quote['USD']['percent_change_' + period].to_f}
|
500
581
|
a.reverse! if rank == :bottom
|
501
|
-
a.take(limit).map
|
582
|
+
a.take(limit).map do |coin|
|
583
|
+
[coin.cmc_rank, coin.name] + @fields.map {|key| coin.quote['USD'][key].round(2) }
|
584
|
+
end
|
502
585
|
|
503
586
|
end
|
504
587
|
|
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.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,170 +10,195 @@ 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-04 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.
|
66
|
+
version: 0.1.0
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.1'
|
65
70
|
type: :runtime
|
66
71
|
prerelease: false
|
67
72
|
version_requirements: !ruby/object:Gem::Requirement
|
68
73
|
requirements:
|
69
|
-
- - "~>"
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: '0.10'
|
72
74
|
- - ">="
|
73
75
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.
|
76
|
+
version: 0.1.0
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.1'
|
75
80
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
81
|
+
name: table-formatter
|
77
82
|
requirement: !ruby/object:Gem::Requirement
|
78
83
|
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0.2'
|
82
84
|
- - ">="
|
83
85
|
- !ruby/object:Gem::Version
|
84
|
-
version: 0.
|
86
|
+
version: 0.7.0
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.7'
|
85
90
|
type: :runtime
|
86
91
|
prerelease: false
|
87
92
|
version_requirements: !ruby/object:Gem::Requirement
|
88
93
|
requirements:
|
89
|
-
- - "~>"
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '0.2'
|
92
94
|
- - ">="
|
93
95
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.
|
96
|
+
version: 0.7.0
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0.7'
|
95
100
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
101
|
+
name: kramdown
|
97
102
|
requirement: !ruby/object:Gem::Requirement
|
98
103
|
requirements:
|
99
|
-
- - "~>"
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0.5'
|
102
104
|
- - ">="
|
103
105
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
106
|
+
version: 2.1.0
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '2.1'
|
105
110
|
type: :runtime
|
106
111
|
prerelease: false
|
107
112
|
version_requirements: !ruby/object:Gem::Requirement
|
108
113
|
requirements:
|
109
|
-
- - "~>"
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '0.5'
|
112
114
|
- - ">="
|
113
115
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
116
|
+
version: 2.1.0
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '2.1'
|
115
120
|
- !ruby/object:Gem::Dependency
|
116
|
-
name:
|
121
|
+
name: justexchangerates
|
117
122
|
requirement: !ruby/object:Gem::Requirement
|
118
123
|
requirements:
|
119
124
|
- - "~>"
|
120
125
|
- !ruby/object:Gem::Version
|
121
|
-
version: '
|
126
|
+
version: '0.3'
|
122
127
|
- - ">="
|
123
128
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
129
|
+
version: 0.3.4
|
125
130
|
type: :runtime
|
126
131
|
prerelease: false
|
127
132
|
version_requirements: !ruby/object:Gem::Requirement
|
128
133
|
requirements:
|
129
134
|
- - "~>"
|
130
135
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
136
|
+
version: '0.3'
|
132
137
|
- - ">="
|
133
138
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
139
|
+
version: 0.3.4
|
135
140
|
- !ruby/object:Gem::Dependency
|
136
|
-
name:
|
141
|
+
name: coinquery
|
137
142
|
requirement: !ruby/object:Gem::Requirement
|
138
143
|
requirements:
|
139
|
-
- - "~>"
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '1.16'
|
142
144
|
- - ">="
|
143
145
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
146
|
+
version: 0.2.0
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0.2'
|
145
150
|
type: :runtime
|
146
151
|
prerelease: false
|
147
152
|
version_requirements: !ruby/object:Gem::Requirement
|
148
153
|
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 0.2.0
|
149
157
|
- - "~>"
|
150
158
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
159
|
+
version: '0.2'
|
160
|
+
- !ruby/object:Gem::Dependency
|
161
|
+
name: coin360api21
|
162
|
+
requirement: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.2.0
|
167
|
+
- - "~>"
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0.2'
|
170
|
+
type: :runtime
|
171
|
+
prerelease: false
|
172
|
+
version_requirements: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
152
174
|
- - ">="
|
153
175
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
176
|
+
version: 0.2.0
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0.2'
|
155
180
|
- !ruby/object:Gem::Dependency
|
156
|
-
name:
|
181
|
+
name: remote_dwsregistry
|
157
182
|
requirement: !ruby/object:Gem::Requirement
|
158
183
|
requirements:
|
159
184
|
- - "~>"
|
160
185
|
- !ruby/object:Gem::Version
|
161
|
-
version: '0.
|
186
|
+
version: '0.4'
|
162
187
|
- - ">="
|
163
188
|
- !ruby/object:Gem::Version
|
164
|
-
version: 0.
|
189
|
+
version: 0.4.1
|
165
190
|
type: :runtime
|
166
191
|
prerelease: false
|
167
192
|
version_requirements: !ruby/object:Gem::Requirement
|
168
193
|
requirements:
|
169
194
|
- - "~>"
|
170
195
|
- !ruby/object:Gem::Version
|
171
|
-
version: '0.
|
196
|
+
version: '0.4'
|
172
197
|
- - ">="
|
173
198
|
- !ruby/object:Gem::Version
|
174
|
-
version: 0.
|
199
|
+
version: 0.4.1
|
175
200
|
description:
|
176
|
-
email:
|
201
|
+
email: digital.robertson@gmail.com
|
177
202
|
executables: []
|
178
203
|
extensions: []
|
179
204
|
extra_rdoc_files: []
|
@@ -199,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
224
|
version: '0'
|
200
225
|
requirements: []
|
201
226
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.
|
227
|
+
rubygems_version: 2.7.10
|
203
228
|
signing_key:
|
204
229
|
specification_version: 4
|
205
230
|
summary: A coinmarketcap wrapper which makes it convenient to display the top 5 cryptocurrencies
|
metadata.gz.sig
CHANGED
Binary file
|