cryptocoin_fanboi 0.5.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07c9a2156681bbbee487cca2e1fffecde1640c56
4
- data.tar.gz: cc3a923a667276916cde2ea98abf5dce29879bca
3
+ metadata.gz: 3929cc439847dc1e4b71b720c45584e323c8e77e
4
+ data.tar.gz: 513769689ce54d9a4c6e9f640903bea77a81cf3e
5
5
  SHA512:
6
- metadata.gz: '001428295c50188accd277f9dfa23101d1a845e2f3477c05832ef2c88614d3782cf90d9b1305b62982960017c49a2c05b233ba8aed98342856d97c848b4c92b3'
7
- data.tar.gz: f0992ced6130d46d0764bceec720aed292d4b6144c1f2b315016e21a1daaa3c2d5e28270e50a05cb6f11784420c632d4924e88dd2cc34f0b29fa81afc45001e2
6
+ metadata.gz: 8584f6c4deb8a788f89635bc3fa491121f9d9a51a827003941f309fec4dba8f41d72bc3fd62deb8b7cbc84e7fad6ebaea140c554e27bb22fc8bfc9b36d4c06b4
7
+ data.tar.gz: 809145098b26dbcd70ba37d0a77e845ba01595442b8e0ffbd1239b99a88cc5d2c29318fe2a1ab805838b0d1490c060c5f531e652fa2fe72934403497643e2297
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- D6��Jzr���� ��^��L|n�3H��l�9f˒�v��S&�;��]��1ض�ST�����Q���w|���9����^ �€{��%�4,����|J+3/KQ�輥#��h �5m��\��d�d0S�h�&��C����y���1�7��G6���Yr��v������m2�U@�;��Q����� ��������a����5���b��Mē�T�2B-�Ҹc�^��}wt��.R+Pe
1
+ 8A�HnB]�����
2
+ ���d�[�{G�mތ����S�G�o��S�F��wՎSO*�и�|uղ��-!Xs�αdq��$���m���� ������9�����/�+�C ��ʤ��aK�8#���j��є��� �սƘ��s�ZV�K���>��O~���4�=|O�J�G��x ��OI�=�:r ��
3
+ ���nU�l$��27v�7M������n*�CH�ʉ}i{�z&uZ�,�Dו�����L���Z�w��
@@ -118,10 +118,47 @@ class CryptocoinFanboi
118
118
 
119
119
  end
120
120
 
121
+ # best coin this year so far
122
+ #
123
+ def best_coin(default_list=[])
124
+
125
+ list = if default_list.empty? then
126
+ self.coin_names(limit: 5)
127
+ else
128
+ default_list
129
+ end
130
+
131
+ a2 = list.map {|x| [x, btc_gain(x)]}
132
+ a2.max_by {|x| x[1].last}
133
+ end
134
+
135
+ def btc_gain(coin)
136
+
137
+ a = prices_this_year(coin)
138
+ r = a.min_by {|x | x[1][:btc_price]}
139
+ [r, btc_price(coin) - r[1][:btc_price]]
140
+
141
+ end
142
+
143
+
144
+ def btc_price(coin, date=nil)
145
+
146
+ usd = self.price(coin, date)
147
+ puts 'usd: ' + usd.inspect if @debug
148
+ btc = self.price('bitcoin', date)
149
+ (usd / btc)
150
+ end
151
+
121
152
  def coin_abbreviations()
122
153
  @coins.map {|x| "%s (%s)" % [x['name'], x['symbol']] }
123
154
  end
124
155
 
156
+ alias abbreviations coin_abbreviations
157
+
158
+ def coin_names(limit: 10)
159
+ @coins.take(limit).map {|x| x['name']}
160
+ end
161
+
125
162
  def coin(name)
126
163
  self.find(name)
127
164
  end
@@ -130,7 +167,21 @@ class CryptocoinFanboi
130
167
  @coins.map {|x| OpenStruct.new(x) }
131
168
  end
132
169
 
133
- alias abbreviations coin_abbreviations
170
+ def date_range(raw_d1, raw_d2)
171
+
172
+ d1, d2 = [raw_d1, raw_d2].map do |x|
173
+ if x.is_a? Date then
174
+ x
175
+ else
176
+ Chronic.parse(x.gsub('-',' '), :context => :past).to_date
177
+ end
178
+ end
179
+
180
+ (d1..d2).each do |date|
181
+ yield(self, date.strftime("%d %B %Y"))
182
+ end
183
+
184
+ end
134
185
 
135
186
  def inspect()
136
187
 
@@ -163,11 +214,18 @@ class CryptocoinFanboi
163
214
  # returns closing price in dollars
164
215
  # e.g. price('tron', '8th September 2017') #=> 0.001427
165
216
  #
166
- def price(coin, raw_date=nil)
217
+ def price(raw_coin, raw_date=nil)
167
218
 
219
+ coin = raw_coin.downcase.split.map(&:capitalize).join(' ')
220
+
168
221
  return self.coin(coin).price_usd.to_f if raw_date.nil?
169
-
170
- date = Chronic.parse(raw_date.gsub('-',' ')).strftime("%Y%m%d")
222
+ puts 'raw_date: ' + raw_date.inspect if @debug
223
+
224
+ date = if raw_date.is_a? Date then
225
+ raw_date.strftime("%Y%m%d")
226
+ else
227
+ Chronic.parse(raw_date.gsub('-',' ')).strftime("%Y%m%d")
228
+ end
171
229
  puts 'date: ' + date.inspect if @debug
172
230
 
173
231
  # if date is today then return today's price
@@ -188,7 +246,7 @@ class CryptocoinFanboi
188
246
  puts 'date: ' + date.inspect
189
247
  end
190
248
 
191
- a = Coinmarketcap.get_historical_price(coin, date, date)
249
+ a = Coinmarketcap.get_historical_price(coin.gsub(/ /,'-'), date, date)
192
250
  puts 'a: ' + a.inspect if @debug
193
251
 
194
252
  r = a.any? ? a.first[:close] : self.coin(coin).price_usd.to_f
@@ -206,6 +264,15 @@ class CryptocoinFanboi
206
264
 
207
265
  end
208
266
 
267
+ def prices_this_year(coin)
268
+
269
+ (Date.parse('1 Jan')..Date.today).map do |date|
270
+
271
+ [date, btc_price: btc_price(coin,date), usd_price: price(coin,date)]
272
+
273
+ end
274
+ end
275
+
209
276
  # returns an array of the prices of Bitcoin in various currencies
210
277
  #
211
278
  def rates(coin='Bitcoin', currencies: %w(EUR GBP))
data.tar.gz.sig CHANGED
Binary file
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.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file