crypto_market 0.1.9 → 0.2.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
2
  SHA1:
3
- metadata.gz: 6b32838ca463b3b218395a0bcd5d6b0d636be4c4
4
- data.tar.gz: 6ee78e2b6b9966836a61a329b80fbe85359c670f
3
+ metadata.gz: 891a2f31514ef916fec0ea21763cc5b2ebe43bd1
4
+ data.tar.gz: c32bee676d632274f86f9ecf7a797e1e34e52733
5
5
  SHA512:
6
- metadata.gz: c88354afc93d13210e70dc5b0447ac9485a77eaad02b587a69a6c77d02c819f98e6f5835f91f902933ce4eb25baef098e112c37de82b1afdd6ca6dfed8325e9e
7
- data.tar.gz: 7d1089454c5dfde1c3625d10e4329e4ed6d99e72355cd1a66f7d03ad5898390bcf12457b2d1f313fb54958c210fb0e8592c844891bc087806d489ac38b30e33d
6
+ metadata.gz: 836369fc1a69e3db413306288f3faa3a12807abf86c95185bb1448272136bd28a814253cc9cd997d4391986ca72b12a85a3c7b8c2ee02874644751bf6a4329d2
7
+ data.tar.gz: 034dc28b770e5370aaa9335c280b05593892e644b791aca6f87a7b8acb6ba6f4fb992406e5020ce68d06c580499a1ad202e60f630b263f5bf331c966b44e99b7
@@ -35,12 +35,11 @@ Enter a number to navigate
35
35
  def navigation
36
36
  table = terminal_table do |t|
37
37
  t.title = greeting
38
- t.add_row [1, 'To see the list of supported coins']
38
+ t.add_row [1, 'Get more information about a specific coin']
39
39
  t.add_row [2, 'Sort by price']
40
- t.add_row [3, 'Sort by price change']
41
- t.add_row [4, 'Get more information about a specific coin']
42
- t.add_row [5, 'To exit the program']
43
- t.style = { all_separators: true }
40
+ t.add_row [3, 'Sort by price change the last 24h']
41
+ t.add_row [4, 'To exit the program']
42
+ t.style = { all_separators: true, width: 60 }
44
43
  end
45
44
  puts table
46
45
  enter_input_msg
@@ -48,41 +47,38 @@ Enter a number to navigate
48
47
  loop do
49
48
  case input
50
49
  when 1
51
- currencies.print_coin_names
52
- nested_menu
50
+ coin_search
51
+ navigation
53
52
  when 2
54
53
  currencies.print_sorted_prices
55
- nested_menu
54
+ navigation
56
55
  when 3
57
56
  table = terminal_table do |t|
58
57
  t.title = 'Select a number'
59
- t.add_row [1, 'To see (+)positive price changes']
60
- t.add_row [2, 'To see (-)negative price changes']
61
- t.add_row [3, 'To see both negative and positive']
62
- t.style = { all_separators: true }
58
+ t.add_row [1, '(+) Changed coins the last 24h']
59
+ t.add_row [2, '(-) Changed coins the last 24h']
60
+ t.add_row [3, 'All Changed coins the last 24h']
61
+ t.style = { all_separators: true, width: 60 }
63
62
  end
64
63
  input = nil
65
64
  until input == 1 || input == 2 || input == 3
66
65
  puts table
67
66
  enter_input_msg
68
- input = gets.to_i
67
+ input = gets.strip.to_i
69
68
  if input == 1
70
69
  currencies.print_sorted_changes('positive')
71
- nested_menu
70
+ navigation
72
71
  elsif input == 2
73
72
  currencies.print_sorted_changes('negative')
74
- nested_menu
73
+ navigation
75
74
  elsif input == 3
76
75
  currencies.print_sorted_changes
77
- nested_menu
76
+ navigation
78
77
  else
79
78
  enter_valid_input_msg
80
79
  end
81
80
  end
82
81
  when 4
83
- coin_search
84
- nested_menu
85
- when 5
86
82
  puts "Goodbye you're now closing Crypto Market!"
87
83
  exit
88
84
  else
@@ -93,29 +89,6 @@ Enter a number to navigate
93
89
  end
94
90
  end
95
91
 
96
- # Nested menu that can be accessed inside the main navigation
97
- def nested_menu
98
- table = terminal_table do |t|
99
- t.title = 'Select a number'
100
- t.add_row [1, 'To get more information about a specific coin']
101
- t.add_row [2, 'To return to the menu']
102
- t.style = { all_separators: true }
103
- end
104
- puts table
105
- enter_input_msg
106
- input = gets.strip.to_i
107
- case input
108
- when 1
109
- coin_search
110
- nested_menu
111
- when 2
112
- navigation
113
- else
114
- enter_valid_input_msg
115
- nested_menu
116
- end
117
- end
118
-
119
92
  # Search for specific name for a coin and return information about it
120
93
  def coin_search
121
94
  currencies.print_coin_names
@@ -126,6 +99,7 @@ def coin_search
126
99
  coin_search
127
100
  else
128
101
  currencies.find_by_number(input).attributes
102
+ navigation
129
103
  end
130
104
  end
131
105
 
@@ -9,10 +9,10 @@ class CryptoMarket::Coin
9
9
  # Instantiate Coin with the attributes below, adds + sign for positive change numbers
10
10
  def initialize(name, price_usd, price_btc, market_cap_usd, percent_change_24h, last_updated_unix)
11
11
  @name = name
12
- @price_usd = price_usd
13
- @price_btc = price_btc
14
- @market_cap_usd = market_cap_usd
15
- @percent_change_24h = percent_change_24h
12
+ @price_usd = price_usd.to_f.round(2)
13
+ @price_btc = price_btc.to_i
14
+ @market_cap_usd = market_cap_usd.to_i
15
+ @percent_change_24h = percent_change_24h.to_i
16
16
  @last_updated_unix = last_updated_unix
17
17
  end
18
18
 
@@ -20,9 +20,9 @@ class CryptoMarket::Coin
20
20
  def attributes
21
21
  table = terminal_table do |t|
22
22
  t.title = name.upcase
23
- t.add_row ["Price USD:", "#{price_usd}%"]
24
- t.add_row ["Price BTC:", "#{price_btc}%"]
25
- t.add_row ["Market Cap USD:", "#{market_cap_usd}%"]
23
+ t.add_row ["Price USD:", "$#{price_usd}"]
24
+ t.add_row ["Price BTC:", "#{price_btc}"]
25
+ t.add_row ["Market Cap USD:", "$#{market_cap_usd}"]
26
26
  t.add_row ["Change Last 24h:", "#{percent_change_24h}%"]
27
27
  t.add_row ["Last Updated:", "#{Time.at(last_updated_unix.to_i)}"]
28
28
  t.style = { all_separators: true, width: 60 }
@@ -59,11 +59,13 @@ class CryptoMarket::Currencies
59
59
  # Prints out the price for all Coin objects with terminal-table gem
60
60
  def print_sorted_prices
61
61
  sort_by_price_usd.each do |coin|
62
- table = terminal_table do |t|
63
- t.add_row [coin.name, "$#{coin.price_usd.to_f.round(4)}"]
64
- t.style = { all_separators: true, width: 60 }
62
+ unless coin.price_usd == 0
63
+ table = terminal_table do |t|
64
+ t.add_row [coin.name, "$#{coin.price_usd}"]
65
+ t.style = { all_separators: true, width: 60 }
66
+ end
67
+ puts table
65
68
  end
66
- puts table
67
69
  end
68
70
  end
69
71
 
@@ -78,14 +80,42 @@ class CryptoMarket::Currencies
78
80
  end
79
81
  end
80
82
 
81
- # Prints out the names for all Coin objects with terminal-table gem
83
+ # Returns smaller Arrays with coin names and indexes
84
+ def coin_names_arrays
85
+ coins.map.with_index do |coin, index|
86
+ "#{index + 1} #{coin.name}"
87
+ end.each_slice(coins.size / 6)
88
+ end
89
+
90
+ # To be able to print out coin names in batches
91
+ # In order for next/break to work I need to keep interactions in this method
82
92
  def print_coin_names
83
- coins.each_with_index do |coin, index|
93
+ coin_names_arrays.each do |coin|
94
+ coin.each do |name|
95
+ index = name.slice!(/\d+\s/).strip
96
+ table = terminal_table do |t|
97
+ t.add_row [index, name]
98
+ t.style = { all_separators: true, width: 60 }
99
+ end
100
+ puts table
101
+ end
84
102
  table = terminal_table do |t|
85
- t.add_row [index + 1, coin.name]
103
+ t.title = 'Select a number'
104
+ t.add_row [1, 'To load more coins']
105
+ t.add_row [2, 'To select a coin']
86
106
  t.style = { all_separators: true, width: 60 }
87
107
  end
88
108
  puts table
109
+ input = nil
110
+ until input == 1 || input == 2
111
+ input = gets.strip.to_i
112
+ puts 'Enter a correct number from the list' unless input == 1 || input == 2
113
+ end
114
+ if input == 1
115
+ next
116
+ elsif input == 2
117
+ break
118
+ end
89
119
  end
90
120
  end
91
121
 
@@ -1,3 +1,3 @@
1
1
  module CryptoMarket
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
data/notes.md CHANGED
@@ -2,36 +2,4 @@
2
2
  Crypto-Currency Market CLI Gem
3
3
 
4
4
  *Price updated every 5 minutes*
5
-
6
5
  - New Docs: https://coinmarketcap.com/api/
7
-
8
- #### User Interface
9
- 1. List Crypto-Currencies
10
- - Welcome message
11
- - Navigation
12
- - List all currencies
13
- - Sort by pricing
14
- - Sort by changed
15
- - Get more information about specific coin
16
- - Exit
17
- 2. Pick one to get more information about
18
- - Type name of coin you want more information about
19
- - Name - name
20
- - Price - Price
21
- - Change - Past hour price change
22
- 3. Sort by pricing
23
- - Display all coins based on their price (Highest > lowest)
24
- 4. Sort by changes
25
- - Sort by positive changed
26
- - See positive changed coins
27
- - Sort by negative changed
28
- - See negative changed coins
29
- - See all
30
- - See all coins
31
- 5. Ask user to perform another action
32
- - Loop menu
33
-
34
- Object Relationship
35
-
36
- Rule of thumb:
37
- A method that acts on a single object should be an instance method. A method that acts on a group of similar objects should be a class method.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crypto_market
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ojling
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-04 00:00:00.000000000 Z
11
+ date: 2017-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler