cryptocoin_fanboi 0.5.2 → 0.7.0

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
- SHA1:
3
- metadata.gz: 663140a8278d5197c7b5442ac4dc0bdcd75e7d1b
4
- data.tar.gz: a0a179f850ea98dba44ba691ce515e8e1a798e5a
2
+ SHA256:
3
+ metadata.gz: 1bfc95bacb5c4990d5e1c0dda661b8ce3208e300379c87b52f6e1e69e7581edb
4
+ data.tar.gz: 190711504307d779f0180a6e7122693290c6233b0ea2e652362cb262b40880c5
5
5
  SHA512:
6
- metadata.gz: 04ab6fb534cad796d482c497ef8b8e9a0f4b35ae9b14f4374bb2aa1acda8a37858b52d9130be5c5c630fa32603cf22d4759a1b92074037872a1c5de2647a5598
7
- data.tar.gz: 1968f4e191bbd100efe75e24da4f27fd55751eab2d61e29849f9700f7b56055ad9e2c703c3c4687699873baa832090a365b082ba39281b44eb82b5c606b0b5b4
6
+ metadata.gz: 4a569183a1bb366c18fae986cd2f182a9208ca51277eda22d4c6b0b5d71574ce8e51f2014d3120728b662afb2081808bb5341ff7b73062fde653031ca6c6e8b0
7
+ data.tar.gz: 41cd0bf2b9d4c883022c5d00102236cea7f3edc50f2c776f7db792a6d8d5988fae63a10fb192e3b8feccc5514239a4061987005465ccf87a6466bead4231c65e
checksums.yaml.gz.sig CHANGED
@@ -1,4 +1,3 @@
1
- ��($�腍�t =s��#�7_DI����4�š\Jp!��(�����
2
- B{'��jE
3
- ���S���b5U["'frXoҦ�F��ؽ��.H�!�=M�!q����0=t)��1���-�g���w��ݭܿ�������+ib��kEkiM�ü
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
+ sO�� 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���fX��f��җ����@ʌۈ8)�\^L���U�~䇩s_,na>D$�,.�ѥ*Mm[�򗃸[������A��oc;��� ֮��f��AGڸ
data.tar.gz.sig CHANGED
Binary file
@@ -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
- colored: true, debug: false, filepath: '.')
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 ? @coins.inspect[0..50] + '...' : @coins.inspect
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
- coins.find {|coin| coin.name =~ /#{name}/i }
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 top_coins('1h', limit: limit), markdown: markdown
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).price_usd.to_f if raw_date.nil?
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("%Y%m%d")
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("%Y%m%d")
272
+ if date == Date.today.strftime("%d%m%Y")
237
273
  puts 'same day' if @debug
238
- return self.coin(coin).price_usd.to_f
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 = top_coins(limit: limit)
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 top_coins('year', limit: limit), markdown: markdown
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 top_coins('24h', limit: limit), markdown: markdown
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
- @fields.map {|x| coin[x] }
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, markdown: markdown)\
400
- .display
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[5..-2].map {|x| c(x) }
411
- (fields[0..4] + a2 + ["\n"]).join('|')
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
- @all_coins = JSON.parse(Coinmarketcap.coins.body)\
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 + '0101'
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
- day1, day1)
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 a and a.any? then
525
+ if price then
453
526
 
454
- r.merge({coin.name => a[0][:close].to_f})
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.price_usd.to_f
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 top_coins(period='7d', limit: 5)
565
+ def sort_coins(period='7d', limit: 5, rank: :top)
493
566
 
494
- a = @coins.sort_by {|x| -x['percent_change_' + period].to_f}.take(limit)
495
- a.map {|coin| @fields.map {|key| coin[key] }}
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.5.2
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
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMTAxMTUyOTA5WhcN
15
- MTkwMTAxMTUyOTA5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpXhDL
17
- e2JxhzdO329Vgleg5uFMyOpzvGdE0DTCxEPuJI3eLHly8LlP5L5QbL52eV5nsr0h
18
- GRrhJfyFw98UzZrLy1HQGzLakcY5Bg7F9o6WSOskpr10XCbbYDhIPkghtYfXEkPW
19
- PV8p2IU9PcSuZU4hyurz0rxiiWfm+L5I4d+ic9iKg9nuoRwF7EkAPZIa2JstFNiw
20
- jNs4b3NHM5/DsCqDT4gZ9tESIxCLXYkrhEJkfcJ2hm3O3Oqp/eitz05HzrBR9P+T
21
- K1VNjNVvwgIj6jSTxFV2UycULgPEw6mn4UF9ra0KH+id6bFNOofBiyM4K/mgKniU
22
- Yk1IoDMN39bA/9kFAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFMASrCuC4tq/MTj5dOlN+6WJ4k2vMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBAEk3jmanZhBHrp4a3GAt
26
- 0xM4MwXCT1WOhOxuRPuzmS9nGY6TPajbuqZqOkPKs3DTTjlkqjI4bcVe3Mo80mNV
27
- G+5aUDLavpo3MR6yrcfzY0jkR2c5gH818JNIGsq/aQMkm36WV9fjIkroRYIAFeh6
28
- qr6d7tVVC5iZO7Kis/rHVnl+2YbRRKRGeKpRy5xc0QLf6+Vd/+12o9XRWGuokYUF
29
- 7LC3NfVXVGoVb+BtcEDRmXje7XRl4P6YXJXmXXjRffOejiQAAYAy4RepBCerTM7X
30
- NgmsFfw10oaD3PWQ7UPxWJP14au2LUL+NGHkLrGHOMPphsZhYeXKugGO8NfcKukq
31
- fps=
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: 2018-05-01 00:00:00.000000000 Z
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: chronic
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.10.2
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.10'
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.2.4
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.5.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.5.0
96
+ version: 0.7.0
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '0.7'
115
100
  - !ruby/object:Gem::Dependency
116
- name: rexle
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.4.12
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.4.12
116
+ version: 2.1.0
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '2.1'
135
120
  - !ruby/object:Gem::Dependency
136
- name: kramdown
121
+ name: justexchangerates
137
122
  requirement: !ruby/object:Gem::Requirement
138
123
  requirements:
139
124
  - - "~>"
140
125
  - !ruby/object:Gem::Version
141
- version: '1.16'
126
+ version: '0.3'
142
127
  - - ">="
143
128
  - !ruby/object:Gem::Version
144
- version: 1.16.2
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: '1.16'
136
+ version: '0.3'
152
137
  - - ">="
153
138
  - !ruby/object:Gem::Version
154
- version: 1.16.2
139
+ version: 0.3.4
155
140
  - !ruby/object:Gem::Dependency
156
- name: justexchangerates
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: james@jamesrobertson.eu
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.6.13
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