battleroom 0.0.0 → 0.0.2x

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: 9fee9b871377dbb3a8b65dca7fc1b07ac3d0a40c
4
- data.tar.gz: 508d0df13ac79787d17a3bebdc4d1cda16d8842c
3
+ metadata.gz: 7b95c630774eac85f4874d405bc1a6fd8b80f5ef
4
+ data.tar.gz: bf928ca6a161a73ebc9e6f72e8c488ef727b06d9
5
5
  SHA512:
6
- metadata.gz: bf4d28869289193c2a7ed72c5967fd6fafdfbf141d7911b4627a834cea0643ee723b771cf9302f7a3aa71aab9fffacbf3b90d2e3b9aaaf52cbe02ad6e53f3484
7
- data.tar.gz: b625c24b4faedd8ad288fd843305b9d4bbf9a56fc5f744aaf99d63fda64e71952014ee3d167e7d3cecfea7aef218a5f424ab64c77ca8f296c8cf5492dae8a4b3
6
+ metadata.gz: 5477c37f8c00484bde29ac86c9cd70fb956a3111ac1e0364e474d24d0ba9ce3a2094dcfd00e13144ad452fcdd45509093805cc9cc794269a8d06d44d1723a1c3
7
+ data.tar.gz: cb1ffc7deab34ed6947cbd7600562ace7ca6546e473ce08757d164bbbd736a3ef6fb22fc0e9a91158a6d8a883a8b5c5587132726d7c67d6144a8ccd84930c59d
data/bin/battleroom CHANGED
@@ -1,85 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'battleroom'
4
-
5
- # clear_display
6
- # print "Welcome to the Battleroom.".blue
7
- # while true
8
- # print_prompt_with_options
9
- # choice = gets.chomp.downcase
10
- # clear_display
11
-
12
- # # for eval
13
- # b = binding
14
-
15
- # case choice
16
- # when "1"
17
- # 10.times do
18
- # question = VARIABLE_QUESTIONS.sample
19
- # var_name = question[:var_name].sample
20
- # var_value = question[:var_value].sample
21
- # puts "Create a variable, #{var_name}, and assign it the #{question[:value_type]} value #{var_value}".blue
22
- # answered_correctly = false
23
- # until answered_correctly
24
- # answer = gets.chomp
25
- # begin
26
- # b.eval(answer)
27
- # if b.eval("#{var_name} == #{var_value}")
28
- # answered_correctly = true
29
- # puts random_congratulation.green
30
- # else
31
- # print "You mis-assigned #{var_name}. ".red + "Try Again!\n".green
32
- # end
33
- # rescue NameError
34
- # print "Looks like you misnamed your variable. Often this will result in an error that says: \n\n".red
35
- # print "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n\n".green
36
- # puts "Try again.".red
37
- # rescue Exception => e
38
- # puts e.message
39
- # end
40
- # end
41
- # end
42
- # when "2"
43
- # 5.times do
44
- # question = DATA_STRUCTURE_QUESTIONS.sample
45
- # data_structure = question[:data_structure]
46
- # if data_structure.class == Array
47
- # answer_value = data_structure.sample
48
- # hint = "index values start at 0."
49
- # else
50
- # answer_value = data_structure[data_structure.keys.sample]
51
- # hint = "you have to use the EXACT hash key to retrieve the associated value."
52
- # end
53
- # answer_value = data_structure.class == Array ? data_structure.sample : data_structure[data_structure.keys.sample]
54
- # # data_structure_binding = binding
55
- # # provides the binding scope with the variable assignment necessary for future
56
- # b.eval("#{question[:variable_name]} = #{question[:data_structure].to_s}")
57
- # puts "Given the data structure below, how would you access '#{answer_value}'?".blue
58
- # puts "#{question[:variable_name]} = #{question[:data_structure].to_s}".green
59
- # answered_correctly = false
60
- # until answered_correctly
61
- # input = gets.chomp
62
- # begin
63
- # if b.eval(input) == answer_value
64
- # puts random_congratulation.green
65
- # answered_correctly = true
66
- # sleep 1.5
67
- # clear_display
68
- # else
69
- # puts "Wrong. Remember, #{hint} Try again.".red
70
- # end
71
- # rescue NameError
72
- # puts "You're referencing a variable that doesn't exist, probably as the result of a mispelling. This results in a common error that says: \n\n".red
73
- # puts "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n".green
74
- # puts "Get used to it and try again.".red
75
- # end
76
- # end
77
- # end
78
- # when "q"
79
- # puts "Goodbye!".green
80
- # break
81
- # else
82
- # puts "You entered a non-option. Try again.".red
83
- # end
84
- # end
85
-
@@ -1,18 +1,101 @@
1
+ require 'awesome_print'
2
+ require 'pry'
3
+ require 'colorize'
4
+
1
5
  module BattleroomMachinery
2
6
 
7
+ CONGRATULATIONS = [
8
+ 'Lovely work, my friend!',
9
+ 'Beautiful!',
10
+ 'Lovely!',
11
+ 'Splendid!',
12
+ 'Nice job! Keep it rolling!',
13
+ 'Capital work, battlestar!',
14
+ 'Exemplary work!',
15
+ 'Yeah!',
16
+ 'Roll on.',
17
+ 'Bullseye!',
18
+ 'Woo!',
19
+ 'Let it ride!',
20
+ 'Touchdown!',
21
+ "You're on your way!",
22
+ "You're making a prosperous go of this programming thing.",
23
+ ]
24
+
3
25
  def clear_display
4
26
  `reset`
5
27
  end
6
28
 
29
+ def print_menu_options
30
+ puts ' What would you like to work on?'.blue
31
+ puts '1. Variable assignment'
32
+ puts '2. Accessing values in arrays and hashes'
33
+ puts '3. Adding values to arrays and hashes'
34
+ puts '4. Accessing values from within nested data structures'
35
+ puts "Q. Quit\r\n\n"
36
+ end
37
+
7
38
  def random_congratulation
8
- ["Lovely work, my friend!\n", "Beautiful!\n", "Lovely!\n", "Splendid!\n", "Nice job! Keep it rolling!\n", "Capital work, battlestar!\n", "You're on your way!\n", "Exemplary work!\n", "Yeah!\n", "Roll on.\n", "You're making a prosperous go of this programming thing.\n", "Bullseye!\n"].sample
39
+ CONGRATULATIONS.sample
9
40
  end
10
41
 
11
- def print_prompt_with_options
12
- puts "What would you like to work on?".blue
13
- puts "1. Variable assignment"
14
- puts "2. Accessing values from arrays/hashes"
15
- puts "Q. Quit\r\n\n"
42
+ def print_congratulation
43
+ puts "#{random_congratulation}\n".green
44
+ end
45
+
46
+ def rotate_array(array)
47
+ item = array.shift
48
+ array << item
49
+ end
50
+
51
+ def print_colorized_error_prompt(error)
52
+ method_or_variable = (error.class == NoMethodError) ? "method" : "variable"
53
+ puts "\nYou're referencing a #{method_or_variable} that doesn't exist, probably as the result of a mispelling. This results in a common error that says: \n".red
54
+ puts "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n".green
55
+ puts "Get used to it and try again.\n".red
16
56
  end
17
57
 
58
+ def print_unexpected_end_of_input_explanation
59
+ puts "\nNope! You just triggered a common Ruby error that reads:\n".red
60
+ puts "\tsyntax error, unexpected end-of-input\n".green
61
+ puts "Basically, you told Ruby you were going to assign a value to a variable, but you neglected to provide a valid value. Try again.\n".red
62
+ end
63
+
64
+ def print_colorized_type_error_prompt(error)
65
+ puts "\nNope! You just triggered a common Ruby error that reads:\n".red
66
+ puts "\tin '[]', #{error.message}".green
67
+ error.message.match /conversion\sof\s(.+)\sinto\sInteger/i
68
+ puts "\nBasically, you put a #{$1} between square brackets, whereas Ruby ".red +
69
+ "was expecting an index value, i.e. an integer. This commonly arises ".red +
70
+ "when programmers think they're dealing with a hash, when in fact ".red +
71
+ "they're dealing with an array. Try again.\n".red
72
+ end
73
+
74
+ def format_value_for_stdout_and_eval(object)
75
+ case object.class.to_s
76
+ when 'String'
77
+ if object.include?("'")
78
+ '"' + object + '"'
79
+ else
80
+ "'#{object}'"
81
+ end
82
+ when 'Symbol' then return ":#{object}"
83
+ else
84
+ object.to_s
85
+ end
86
+ end
87
+
88
+ def naughty_input?(user_input)
89
+ if user_input.match(/(require|`|binding)/)
90
+ puts "No way no how! Try again.\n".red
91
+ true
92
+ else
93
+ false
94
+ end
95
+ end
96
+
97
+ def format_class_for_output(klass)
98
+ return 'Boolean' if klass.to_s.match /(TrueClass|FalseClass)/
99
+ klass.to_s
100
+ end
18
101
  end
@@ -0,0 +1,314 @@
1
+ require 'pry'
2
+ # eliminates deprecation warning
3
+ I18n.config.enforce_available_locales = false
4
+
5
+ require_relative '../data_generation_machinery'
6
+ include DataGenerationMachinery
7
+ require 'active_support/inflector'
8
+
9
+ $random_names_array = gen_random_names_array
10
+
11
+ DATA_STRUCTURE_QUESTIONS = [
12
+ {
13
+ data_structure: {
14
+ home_team: 'Green Bay Packers',
15
+ capacity: 72_928,
16
+ established: 1957,
17
+ publicly_owned: true,
18
+ real_grass: true,
19
+ price_of_beer: 5.5,
20
+ namesake: 'Curly Lambeau',
21
+ address: '1265 Lombardi',
22
+ suite_count: 168,
23
+ banners: true,
24
+ },
25
+ possible_variable_names: ['lambeau_field', 'the_frozen_tundra'],
26
+ },
27
+ {
28
+ data_structure: [
29
+ 'Foundation',
30
+ 'American Gods',
31
+ 'The Gunslinger',
32
+ 'Do Androids Dream of Electric Sheep?',
33
+ 'A Scanner Darkly',
34
+ 'We Can Build You',
35
+ 'Dune',
36
+ 'The Left Hand of Darkness',
37
+ 'Stranger in a Strange Land',
38
+ 'Sirens of Titan',
39
+ 'Brave New World',
40
+ 'Lord of the Rings',
41
+ '1984',
42
+ 'Farhenheit 451',
43
+ 'Animal Farm',
44
+ 'Watchmen',
45
+ 'The Stand',
46
+ '2001',
47
+ 'Starship Troopers',
48
+ 'The Time Machine',
49
+ "Hitchhiker's Guide to the Galaxy",
50
+ "Cat's Cradle",
51
+ "Ender's Game",
52
+ ],
53
+ possible_variable_names: [
54
+ 'sci_fi_books',
55
+ 'sci_fi_novels',
56
+ 'canonical_sci_fi_titles',
57
+ 'science_fiction_titles',
58
+ 'books',
59
+ 'paperback_titles',
60
+ ].shuffle,
61
+ },
62
+ {
63
+ data_structure: $random_names_array,
64
+ possible_variable_names: [
65
+ 'friends',
66
+ 'enemies',
67
+ 'co_workers',
68
+ 'old_pals',
69
+ 'new_friends',
70
+ 'frenemies',
71
+ 'lovers',
72
+ 'admirers',
73
+ 'haters',
74
+ 'stalker_names'
75
+ ].shuffle,
76
+ },
77
+ {
78
+ data_structure: (7..29).to_a.shuffle,
79
+ possible_variable_names: [
80
+ 'fav_nums',
81
+ 'lotto_nums',
82
+ 'ages_of_children',
83
+ 'favorite_years_of_life',
84
+ 'career_jersey_numbers',
85
+ 'lucky_numbers',
86
+ 'unlucky_numbers'
87
+ ].shuffle,
88
+ },
89
+ {
90
+ data_structure: [
91
+ rand(0.0..100.0).round(2),
92
+ rand(0.0..100.0).round(2),
93
+ rand(0.0..100.0).round(2),
94
+ rand(0.0..100.0).round(2),
95
+ rand(0.0..100.0).round(2),
96
+ rand(0.0..100.0).round(2),
97
+ rand(0.0..100.0).round(2),
98
+ rand(0.0..100.0).round(2),
99
+ rand(0.0..100.0).round(2),
100
+ rand(0.0..100.0).round(2),
101
+ rand(0.0..100.0).round(2),
102
+ rand(0.0..100.0).round(2),
103
+ rand(0.0..100.0).round(2),
104
+ rand(0.0..100.0).round(2),
105
+ rand(0.0..100.0).round(2),
106
+ rand(0.0..100.0).round(2),
107
+ rand(0.0..100.0).round(2),
108
+ rand(0.0..100.0).round(2),
109
+ rand(0.0..100.0).round(2),
110
+ rand(0.0..100.0).round(2),
111
+ rand(0.0..100.0).round(2),
112
+ rand(0.0..100.0).round(2),
113
+ rand(0.0..100.0).round(2),
114
+ rand(0.0..100.0).round(2),
115
+ rand(0.0..100.0).round(2),
116
+ ].uniq,
117
+ possible_variable_names: [
118
+ 'test_scores',
119
+ 'win_percentages',
120
+ 'yield_percentages',
121
+ 'dividends',
122
+ 'multiples',
123
+ 'sums',
124
+ 'products',
125
+ 'monthly_bill_totals'
126
+ ].shuffle,
127
+ },
128
+ {
129
+ data_structure: [
130
+ 'Patches',
131
+ 'Falstaff',
132
+ 'Whiskers',
133
+ 'Trousers',
134
+ 'Sammycat',
135
+ 'Dunbar',
136
+ 'Digsy',
137
+ 'Bubs',
138
+ 'Davy',
139
+ 'Tomcat',
140
+ 'Mr. Bigglesworth',
141
+ 'Pinot',
142
+ 'Claude',
143
+ 'Jackson',
144
+ 'Bootsniffer',
145
+ 'Frank',
146
+ 'Dogboy',
147
+ 'Kittyhawk',
148
+ 'Kitty the Cat',
149
+ 'Tiny',
150
+ ],
151
+ possible_variable_names: [
152
+ 'cat_names',
153
+ 'cats',
154
+ 'kitties',
155
+ 'felines',
156
+ 'kittie_names'
157
+ ].shuffle,
158
+ },
159
+ {
160
+ data_structure: [
161
+ 'Fixing a Hole',
162
+ 'Michelle',
163
+ 'Hey Jude',
164
+ 'In My Life',
165
+ 'A Day in the Life',
166
+ 'If I Needed Someone',
167
+ 'Nowhere Man',
168
+ 'Dear Prudence',
169
+ 'Julia',
170
+ 'Good Night',
171
+ 'Something',
172
+ 'Sun King',
173
+ 'Carry That Weight',
174
+ 'Girl',
175
+ 'What Goes On',
176
+ 'The Word',
177
+ 'Blackbird',
178
+ 'Piggies',
179
+ 'Rocky Racoon',
180
+ 'Cry Baby Cry',
181
+ 'Taxman',
182
+ 'Eleanor Rigby',
183
+ 'Yellow Submarine',
184
+ 'Only a Northern Song',
185
+ 'Mean Mr. Mustard',
186
+ 'All My Loving',
187
+ 'Norwegian Wood',
188
+ 'Yesterday',
189
+ 'Blue Jay Way',
190
+ 'Hello, Goodbye',
191
+ 'Penny Lane',
192
+ 'All You Need is Love',
193
+ 'The Fool on the Hill',
194
+ "I'm So Tired",
195
+ "I'm Only Sleeping",
196
+ "I'll Follow the Sun",
197
+ "I'm Looking Through You",
198
+ ],
199
+ possible_variable_names: [
200
+ 'beatles_songs',
201
+ 'fav_beatles_tracks',
202
+ 'fab_four_tunes',
203
+ ].shuffle,
204
+ },
205
+ {
206
+ data_structure: {
207
+ stars: ['Ryan Gosling', 'Rachel McAdams'],
208
+ released: 2004,
209
+ tearjerker: true,
210
+ director: 'Nick Cassavetes',
211
+ mtv_movie_award_count: 1,
212
+ box_office_millions: 81.5,
213
+ macho: false,
214
+ },
215
+ possible_variable_names: ['the_notebook'],
216
+ },
217
+ {
218
+ data_structure: {
219
+ stars: ['Nicholas Cage', 'Meryl Streep'],
220
+ rt_rating: 98.0,
221
+ released: 2002,
222
+ screenwriters: ['Charlie Kaufman', 'Donald Kaufman'],
223
+ },
224
+ possible_variable_names: ['adaptation'],
225
+ },
226
+ {
227
+ data_structure: [
228
+ 'When Harry Met Sally',
229
+ 'How to Lose a Guy in 10 Days',
230
+ 'Bridesmaids',
231
+ 'Knocked Up',
232
+ 'High Fidelity',
233
+ 'Chasing Amy',
234
+ 'What Women Want',
235
+ 'Four Weddings and a Funeral',
236
+ 'About a Boy',
237
+ 'Notting Hill',
238
+ 'His Girl Friday',
239
+ "America's Sweethearts",
240
+ "My Best Friend's Wedding",
241
+ "There's Something About Mary",
242
+ ],
243
+ possible_variable_names: ['rom_coms']
244
+ },
245
+ {
246
+ data_structure: [
247
+ 'The Moon and Antarctica',
248
+ 'Perfect From Now On',
249
+ 'Nighthawks at the Diner',
250
+ 'Songs From a Room',
251
+ 'Transformer',
252
+ 'Songs of Love and Hate',
253
+ 'Stereopathetic Soul Manure',
254
+ "Frank's Wild Years",
255
+ ],
256
+ possible_variable_names: [
257
+ 'lyrically_brilliant_albums',
258
+ 'seminal_indie_rock_records'
259
+ ].shuffle
260
+ },
261
+ {
262
+ data_structure: [
263
+ 'Sixteen Stone',
264
+ 'Nirvana MTV Unplugged 1994',
265
+ 'Jagged Little Pill',
266
+ 'Ten',
267
+ 'Nevermind',
268
+ 'Illmatic',
269
+ 'The Downward Spiral',
270
+ 'Odelay',
271
+ 'Mellowgold',
272
+ 'All Eyez On Me',
273
+ 'Ready 2 Die',
274
+ 'Blur',
275
+ 'Parklife',
276
+ 'Definitely Maybe',
277
+ 'Keep It Like a Secret',
278
+ '...Come Down',
279
+ 'XO',
280
+ 'Exile in Guyville',
281
+ 'The Lonesome Crowded West',
282
+ 'Crooked Rain, Crooked Rain',
283
+ 'The Blue Album',
284
+ 'Pinkerton',
285
+ 'OK Computer',
286
+ 'The Bends',
287
+ 'Slanted & Enchanted',
288
+ "What's the Story (Morning Glory)?",
289
+ ],
290
+ possible_variable_names: [
291
+ 'classics_from_the_nineties',
292
+ 'nineties_classics',
293
+ ].shuffle
294
+ },
295
+ ]
296
+
297
+ 5.times do
298
+ user = gen_user
299
+ DATA_STRUCTURE_QUESTIONS.push(user)
300
+ business = gen_business
301
+ DATA_STRUCTURE_QUESTIONS.push(business)
302
+ end
303
+
304
+ 4.times do
305
+ location = gen_location
306
+ DATA_STRUCTURE_QUESTIONS.push(location)
307
+ end
308
+
309
+ 2.times do
310
+ app = gen_app
311
+ DATA_STRUCTURE_QUESTIONS.push(app)
312
+ end
313
+
314
+ DATA_STRUCTURE_QUESTIONS.shuffle!
@@ -0,0 +1,159 @@
1
+ VARIABLE_QUESTIONS = [
2
+ # {
3
+ # possible_variable_names: [
4
+ # "sampled_key"
5
+ # ],
6
+ # possible_variable_values: [
7
+ # :username,
8
+ # :age,
9
+ # :first_name,
10
+ # :last_name,
11
+ # :email_address,
12
+ # :album_count,
13
+ # :year_of_birth
14
+ # ]
15
+ # }
16
+ {
17
+ possible_variable_names: [
18
+ 'fish_count',
19
+ 'cat_count',
20
+ 'user_count',
21
+ 'number_of_dogs',
22
+ 'num_steaks',
23
+ 'fav_number',
24
+ 'lucky_number',
25
+ 'head_count',
26
+ 'consecutive_wins',
27
+ 'consecutive_losses',
28
+ 'unlucky_number',
29
+ 'days_without_rain',
30
+ 'years_without_championship',
31
+ ].shuffle,
32
+ possible_variable_values: (1..100).to_a.shuffle,
33
+ },
34
+ {
35
+ possible_variable_names: [
36
+ 'signed_in',
37
+ 'authenticated',
38
+ 'authorized',
39
+ 'heartbroken',
40
+ 'ecstatic',
41
+ 'admin_user',
42
+ 'likes_dogs',
43
+ 'takes_baths',
44
+ 'can_swim',
45
+ 'can_ride_a_bike',
46
+ 'tells_lies',
47
+ 'is_homeowner',
48
+ 'password_verified',
49
+ 'has_drivers_license',
50
+ 'orphaned',
51
+ 'steals_candy',
52
+ 'has_cold',
53
+ 'athletic',
54
+ 'docile',
55
+ ].shuffle,
56
+ possible_variable_values: [true, false].shuffle,
57
+ },
58
+ {
59
+ possible_variable_names: [
60
+ 'time_abroad',
61
+ 'period_married',
62
+ 'waiting_period',
63
+ 'sentence_length',
64
+ 'tenure',
65
+ 'life_span',
66
+ 'term_length',
67
+ 'time_in_office',
68
+ 'incumbency',
69
+ 'stint_length',
70
+ ].shuffle,
71
+ possible_variable_values: [
72
+ 'too short',
73
+ 'much too long',
74
+ 'None, thank god.',
75
+ 'brief',
76
+ 'fleeting',
77
+ 'short-lived',
78
+ 'everlasting',
79
+ 'overlong',
80
+ 'unending',
81
+ "#{rand(2..11)} months",
82
+ "#{rand(2..11)} months",
83
+ "#{rand(2..11)} months",
84
+ "#{rand(2..20)} years",
85
+ "#{rand(2..20)} years",
86
+ "#{rand(2..20)} years",
87
+ "#{rand(2..6)} days",
88
+ "#{rand(2..6)} days",
89
+ "#{rand(2..6)} days",
90
+ ].uniq.shuffle,
91
+ },
92
+ {
93
+ possible_variable_names: [
94
+ 'pilot_name',
95
+ 'point_guard',
96
+ 'gardener',
97
+ 'cook',
98
+ 'chef',
99
+ 'boss',
100
+ 'rival',
101
+ 'opponent',
102
+ 'foe',
103
+ 'partner',
104
+ 'teammate',
105
+ 'collaborator',
106
+ 'subordinate',
107
+ 'server',
108
+ 'trooper',
109
+ 'peacekeeper',
110
+ 'best_friend',
111
+ 'worst_enemy',
112
+ 'oldest_friend',
113
+ 'nemesis',
114
+ 'comrade',
115
+ 'team_captain',
116
+ 'instructor_name',
117
+ 'friend_for_life',
118
+ 'thief',
119
+ 'dancer',
120
+ 'lead_singer',
121
+ 'drummer',
122
+ 'guitarist',
123
+ 'bassist',
124
+ ].shuffle,
125
+ possible_variable_values: $random_names_array.shuffle
126
+ },
127
+ {
128
+ possible_variable_names: [
129
+ 'percentage_gold',
130
+ 'test_score',
131
+ 'top_test_score',
132
+ 'top_score',
133
+ 'low_score',
134
+ 'divisor',
135
+ 'multiple',
136
+ 'sum',
137
+ 'dividend',
138
+ 'total',
139
+ 'share_percentage',
140
+ 'percentage_gained',
141
+ 'percentage_lost',
142
+ ].shuffle,
143
+ possible_variable_values: [
144
+ 'n/a',
145
+ rand(0.0..99.9).round([2, 3].sample),
146
+ rand(0.0..99.9).round([2, 3].sample),
147
+ rand(0.0..99.9).round([2, 3].sample),
148
+ rand(0.0..99.9).round([2, 3].sample),
149
+ rand(0.0..99.9).round([2, 3].sample),
150
+ rand(0.0..99.9).round([2, 3].sample),
151
+ rand(0.0..99.9).round([2, 3].sample),
152
+ rand(0.0..99.9).round([2, 3].sample),
153
+ rand(0.0..99.9).round([2, 3].sample),
154
+ rand(0.0..99.9).round([2, 3].sample),
155
+ rand(0.0..99.9).round([2, 3].sample),
156
+ rand(0.0..99.9).round([2, 3].sample),
157
+ ].shuffle,
158
+ },
159
+ ]
data/lib/battleroom.rb CHANGED
@@ -1,90 +1,59 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative 'battleroom/question_data/variable_assignment'
4
- require_relative 'battleroom/question_data/data_structure_access'
3
+ require 'readline'
4
+ require 'Faker'
5
+
6
+ # the below takes forever to load(?), so resorting to multiline requiring
7
+ # path = File.expand_path("./battleroom/models/*.rb", File.dirname(__FILE__))
8
+ # Dir[path].each { |file| require file }
9
+
10
+ require_relative './battleroom/models/nested_data_structure_access_question'
11
+ require_relative './battleroom/models/data_structure_assignment_question'
12
+ require_relative './battleroom/models/data_structure_access_question'
13
+ require_relative './battleroom/models/variable_question'
14
+
5
15
  require_relative 'battleroom/battleroom_machinery'
6
16
  include BattleroomMachinery
7
- require 'colorize'
8
- require 'pry'
9
17
 
10
18
  clear_display
11
- print "Welcome to the Battleroom.".blue
12
- while true
13
- print_prompt_with_options
14
- choice = gets.chomp.downcase
19
+ print 'Welcome to the Battleroom.'.blue
20
+
21
+ loop do
22
+ print_menu_options
23
+ choice = Readline.readline('> '.blue, true)
24
+ abort('Goodbye!'.green) if choice.match(/^(q|exit|!!!\s?)/i)
15
25
  clear_display
16
26
 
17
27
  # for eval
18
28
  b = binding
19
29
 
20
30
  case choice
21
- when "1"
31
+ when '1'
22
32
  10.times do
23
- question = VARIABLE_QUESTIONS.sample
24
- var_name = question[:var_name].sample
25
- var_value = question[:var_value].sample
26
- puts "Create a variable, #{var_name}, and assign it the #{question[:value_type]} value #{var_value}".blue
27
- answered_correctly = false
28
- until answered_correctly
29
- answer = gets.chomp
30
- begin
31
- b.eval(answer)
32
- if b.eval("#{var_name} == #{var_value}")
33
- answered_correctly = true
34
- puts random_congratulation.green
35
- else
36
- print "You mis-assigned #{var_name}. ".red + "Try Again!\n".green
37
- end
38
- rescue NameError
39
- print "Looks like you misnamed your variable. Often this will result in an error that says: \n\n".red
40
- print "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n\n".green
41
- puts "Try again.".red
42
- rescue Exception => e
43
- puts e.message
44
- end
45
- end
33
+ q = VariableQuestion.new(b)
34
+ q.print_variable_assignment_prompt
35
+ q.evaluate_variable_assignment_input
36
+ end
37
+ when '2'
38
+ 5.times do
39
+ q = DataStructureAccessQuestion.new(b)
40
+ q.print_data_structure_access_prompt
41
+ q.evaluate_data_structure_access_input
42
+ end
43
+ when '3'
44
+ 5.times do
45
+ q = DataStructureAssignmentQuestion.new(b)
46
+ q.print_data_structure_assignment_prompt
47
+ q.evaluate_data_structure_assignment_input
46
48
  end
47
- when "2"
49
+ when '4'
48
50
  5.times do
49
- question = DATA_STRUCTURE_QUESTIONS.sample
50
- data_structure = question[:data_structure]
51
- if data_structure.class == Array
52
- answer_value = data_structure.sample
53
- hint = "index values start at 0."
54
- else
55
- answer_value = data_structure[data_structure.keys.sample]
56
- hint = "you have to use the EXACT hash key to retrieve the associated value."
57
- end
58
- answer_value = data_structure.class == Array ? data_structure.sample : data_structure[data_structure.keys.sample]
59
- # data_structure_binding = binding
60
- # provides the binding scope with the variable assignment necessary for future
61
- b.eval("#{question[:variable_name]} = #{question[:data_structure].to_s}")
62
- puts "Given the data structure below, how would you access '#{answer_value}'?".blue
63
- puts "#{question[:variable_name]} = #{question[:data_structure].to_s}".green
64
- answered_correctly = false
65
- until answered_correctly
66
- input = gets.chomp
67
- begin
68
- if b.eval(input) == answer_value
69
- puts random_congratulation.green
70
- answered_correctly = true
71
- sleep 1.5
72
- clear_display
73
- else
74
- puts "Wrong. Remember, #{hint} Try again.".red
75
- end
76
- rescue NameError
77
- puts "You're referencing a variable that doesn't exist, probably as the result of a mispelling. This results in a common error that says: \n\n".red
78
- puts "\tundefined local variable or method \'WHATEVER_YOU_MISTYPED\'\n".green
79
- puts "Get used to it and try again.".red
80
- end
81
- end
51
+ q = NestedDataStructureAccessQuestion.new(b)
52
+ q.print_data_structure_access_prompt
53
+ q.evaluate_data_structure_access_input
82
54
  end
83
- when "q"
84
- puts "Goodbye!".green
85
- break
86
55
  else
87
- puts "You entered a non-option. Try again.".red
56
+ puts 'You entered a non-option. Try again.'.red
88
57
  end
89
58
  end
90
59
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: battleroom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.2x
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Vander Hoop
@@ -9,7 +9,47 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2010-04-28 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.7'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.7'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.7.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: faker
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.3.0
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.3.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 1.3.0
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.3.0
13
53
  description: A Battleroom
14
54
  email: vanderhoop@me.com
15
55
  executables:
@@ -20,8 +60,8 @@ files:
20
60
  - bin/battleroom
21
61
  - lib/battleroom.rb
22
62
  - lib/battleroom/battleroom_machinery.rb
23
- - lib/battleroom/question_data/data_structure_access.rb
24
- - lib/battleroom/question_data/variable_assignment.rb
63
+ - lib/battleroom/data/data_structure_questions.rb
64
+ - lib/battleroom/data/variable_assignment_questions.rb
25
65
  homepage: https://github.com/vanderhoop/battleroom
26
66
  licenses:
27
67
  - MIT
@@ -37,9 +77,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
37
77
  version: '0'
38
78
  required_rubygems_version: !ruby/object:Gem::Requirement
39
79
  requirements:
40
- - - ">="
80
+ - - ">"
41
81
  - !ruby/object:Gem::Version
42
- version: '0'
82
+ version: 1.3.1
43
83
  requirements: []
44
84
  rubyforge_project:
45
85
  rubygems_version: 2.2.2
@@ -1,82 +0,0 @@
1
- DATA_STRUCTURE_QUESTIONS = [
2
- {
3
- data_structure: ["Ender's Game", "Foundation", "Dune", "Cat's Cradle"],
4
- variable_name: "sci_fi_books"
5
- },
6
- {
7
- data_structure: ["Patches", "Falstaff", "Whiskers", "Trousers", "Sam"],
8
- variable_name: "cat_names"
9
- },
10
- {
11
- data_structure: {
12
- num_wishes: 3,
13
- location: ["Madison, WI", "Vancover, BC", "Denver, CO"].sample,
14
- },
15
- variable_name: ["genie_encounter", "meeting_with_satan_at_crossroads"].sample
16
- },
17
- {
18
- data_structure: {
19
- tiring: true,
20
- distance: "13.1 miles",
21
- },
22
- variable_name: "brooklyn_half_marathon"
23
- },
24
- {
25
- data_structure: ["When Harry Met Sally", "There's Something About Mary", "How to Lose a Guy in 10 Days"],
26
- variable_name: "rom_coms"
27
- },
28
- {
29
- data_structure: ["Tide", "Clorox", "Wisk", "Cheer"],
30
- variable_name: "name_brand_detergents"
31
- },
32
- {
33
- data_structure: ["The Moon and Antartica", "Frank's Wild Years", "Perfect From Now On"],
34
- variable_name: "lyrically_brilliant_albums"
35
- },
36
- {
37
- data_structure: ["Sixteen Stone", "Nirvana MTV Unplugged 1994", "Jagged Little Pill"],
38
- variable_name: "classics_from_the_nineties"
39
- },
40
- {
41
- data_structure: {
42
- "home_team" => "Green Bay Packers",
43
- "capacity" => 72_928,
44
- },
45
- variable_name: "lambeau_field"
46
- },
47
- {
48
- data_structure: {
49
- home_team: "Chicago Cubs",
50
- capacity: 41_159,
51
- },
52
- variable_name: "wrigley_field"
53
- },
54
- {
55
- data_structure: {
56
- home_team: "Boston Red Sox",
57
- capacity: 37_400,
58
- },
59
- variable_name: "fenway_park"
60
- },
61
- {
62
- data_structure: {
63
- stars: ["Ryan Gosling", "Rachel McAdams"],
64
- released: 2004,
65
- },
66
- variable_name: "the_notebook"
67
- },
68
- {
69
- data_structure: {
70
- "stars" => ["John Cusack", "John Malkavich", "Catherine Keener"],
71
- "released" => 1999,
72
- },
73
- variable_name: "being_john_malkavich"
74
- },
75
- {
76
- data_structure: {
77
- singles: ["Billie Jean", "Beat It", "Thriller"],
78
- released: 1982,
79
- },
80
- variable_name: "thriller"
81
- },
82
- ]
@@ -1,47 +0,0 @@
1
- VARIABLE_QUESTIONS = [
2
- {
3
- var_name: [
4
- "num_fish",
5
- "num_cats",
6
- "num_dogs",
7
- "num_steaks",
8
- "percent_of_love_maintained",
9
- "fav_number",
10
- "days_without_rain"
11
- ],
12
- var_value: (1..100).to_a,
13
- value_type: "FixNum"
14
- },
15
- {
16
- var_name: [
17
- "time_abroad",
18
- "period_married",
19
- "time_passed_since_breakup",
20
- "time_elapsed_since_last_vacay",
21
- "time_elapsed_since_last_title"
22
- ],
23
- var_value: [
24
- "'#{rand(2..11)} months'",
25
- "'#{rand(2..20)} years'",
26
- "'#{rand(2..3)} days'"
27
- ],
28
- value_type: "String" },
29
- {
30
- var_name: [
31
- "instructor_name",
32
- "friend_for_life",
33
- "super_cool_name",
34
- "masculine_name",
35
- "name_for_a_nice_fellow"
36
- ],
37
- var_value: [
38
- "'Travis'",
39
- "'Phil'",
40
- "'PJ'",
41
- "'Peter'",
42
- "'Greg'",
43
- "'Yaniv'"
44
- ],
45
- value_type: "String"
46
- },
47
- ]