Class: CryptoQuote::CLI
- Inherits:
-
Object
- Object
- CryptoQuote::CLI
- Defined in:
- lib/crypto_quote/cli.rb
Constant Summary collapse
- @@ticker =
CryptoQuote::Ticker.new.data
Instance Method Summary collapse
- #call ⇒ Object
- #crypto_detail(input) ⇒ Object
- #currency_format(number) ⇒ Object
- #detailed_instructions ⇒ Object
- #get_detailed_input ⇒ Object
- #get_selection_input ⇒ Object
- #goodbye ⇒ Object
- #list_crypto_currencies ⇒ Object
- #selection_instructions ⇒ Object
- #ticker ⇒ Object
- #ticker_count ⇒ Object
- #valid_input?(input) ⇒ Boolean
- #welcome ⇒ Object
Instance Method Details
#call ⇒ Object
4 5 6 7 8 |
# File 'lib/crypto_quote/cli.rb', line 4 def call welcome list_crypto_currencies get_selection_input end |
#crypto_detail(input) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/crypto_quote/cli.rb', line 77 def crypto_detail(input) c = ticker[input.to_i - 1] price = currency_format(c['price_usd']) market_cap = currency_format(c['market_cap_usd']).gsub(".0", "") daily_vol = currency_format(c['24h_volume_usd']).gsub(".0", "") available_supply = currency_format(c['available_supply']).gsub(".0", "").gsub("$", "") max_supply = c['max_supply']!=nil ? currency_format(c['max_supply']).gsub(".0", "").gsub("$", "") : "N/A" available_percent = max_supply=="N/A" ? "N/A" : ((c['available_supply'].to_f / c['max_supply'].to_f)*100).round(2) one_hour = (c['percent_change_1h'][0] == '-' ? c['percent_change_1h'].red : c['percent_change_1h'].green) twenty_four_hour = (c['percent_change_24h'][0] == '-' ? c['percent_change_24h'].red : c['percent_change_24h'].green) seven_days = (c['percent_change_7d'][0] == '-' ? c['percent_change_7d'].red : c['percent_change_7d'].green) row1 = [] row1 << [ c['symbol'], price, one_hour+'%', twenty_four_hour+'%', seven_days+'%' ] table1 = Terminal::Table.new :title => "#{c['name']} Details", :headings => ['Symbol', 'Price', '1 Hr %', '24 Hr %', '7 Day %'], :rows => row1 row2 = [] row2 << [ market_cap, daily_vol, available_supply, max_supply, "#{available_percent}%"] table2 = Terminal::Table.new :title => "#{c['name']} Market Information", :headings => ['Market Cap', '24 Hr Volume', 'Avaiable Supply', 'Total Supply', 'Available %'], :rows => row2 puts table1, table2 end |
#currency_format(number) ⇒ Object
101 102 103 |
# File 'lib/crypto_quote/cli.rb', line 101 def currency_format(number) number != nil ? number.gsub('.00','').reverse.scan(/(\d*\.\d{1,3}|\d{1,3})/).join(',').reverse.insert(0, "$") : 0 end |
#detailed_instructions ⇒ Object
49 50 51 52 53 |
# File 'lib/crypto_quote/cli.rb', line 49 def detailed_instructions puts "Type l or list to go back to the main list." puts "Type exit to exit." get_detailed_input end |
#get_detailed_input ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/crypto_quote/cli.rb', line 55 def get_detailed_input input = gets.strip if input == "exit" goodbye exit elsif input == "l" || input == "list" list_crypto_currencies end end |
#get_selection_input ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/crypto_quote/cli.rb', line 35 def get_selection_input input = gets.strip if input == "exit" goodbye exit elsif input == "l" || input == "list" list_crypto_currencies get_selection_input elsif valid_input?(input) crypto_detail(input) end detailed_instructions end |
#goodbye ⇒ Object
105 106 107 |
# File 'lib/crypto_quote/cli.rb', line 105 def goodbye puts "Thank you for using Crypto Quote!" end |
#list_crypto_currencies ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/crypto_quote/cli.rb', line 15 def list_crypto_currencies rows = [] puts "" self.ticker.each do |c| one_hour = (c['percent_change_1h'][0] == '-' ? c['percent_change_1h'].red : c['percent_change_1h'].green) twenty_four_hour = (c['percent_change_24h'][0] == '-' ? c['percent_change_24h'].red : c['percent_change_24h'].green) rows << [c['rank'], c["symbol"], c["name"], currency_format(c['price_usd']), one_hour+"%", twenty_four_hour+"%"] end table = Terminal::Table.new :title => "Crypto Quotes", :headings => ['Rank', 'Ticker', 'Name', 'Price', '1 Hr %', '24 Hr %'], :rows => rows puts table puts "" selection_instructions end |
#selection_instructions ⇒ Object
29 30 31 32 33 |
# File 'lib/crypto_quote/cli.rb', line 29 def selection_instructions puts "Type the number of a crypto currency to see its details." puts "Type exit to exit." get_selection_input end |
#ticker ⇒ Object
65 66 67 |
# File 'lib/crypto_quote/cli.rb', line 65 def ticker @@ticker end |
#ticker_count ⇒ Object
69 70 71 |
# File 'lib/crypto_quote/cli.rb', line 69 def ticker_count @@ticker.count end |
#valid_input?(input) ⇒ Boolean
73 74 75 |
# File 'lib/crypto_quote/cli.rb', line 73 def valid_input?(input) input == "exit" || input == "l" || input == "list" || (input.to_i > 0 && input.to_i <= ticker_count) ? true : false end |
#welcome ⇒ Object
10 11 12 13 |
# File 'lib/crypto_quote/cli.rb', line 10 def welcome puts "Welcome to the Cryto Quote App." puts "The quotes are from http://coinmarketcap.com and are delayed by 5 minutes." end |