rubies 0.0.3 → 0.0.4

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: a9881534b5b05eabb04af7cb9bf8afe9695699d3
4
- data.tar.gz: de41ba53af8ad6d92dc4d81f440f0e7883b87b5b
3
+ metadata.gz: 644ac8ef4c90fcaa27570b9b4f5f55d01b47d4b9
4
+ data.tar.gz: 42a2230d78085fc443ecc070c73810791f37afce
5
5
  SHA512:
6
- metadata.gz: 26d52df1759521af3d71842cd11265e21f89d3a4bd762ac77ec46189d313ef54d576ea7c278fca2bf120f7251f3260220678cfc15b35ab55c772186db8501071
7
- data.tar.gz: 8ee2cb60fed967f0d854f3b23d3b738396bba61d5c707b3c32422f8c16503ba8c1b8c26ce3ec46a9593c5a33865a59bab69413b418c4c7a3938641f90375d5bc
6
+ metadata.gz: 5b0f2b142d0602ac68bea6a364f4ec82dd815609db477547fa5ac6038e2e2c70e8bdacdb05cf17d455eb552142f291d92d00b2b4df1b53daa902b379029519dc
7
+ data.tar.gz: 321d71a1a473ccd6db52e1caf39e9a5511df9455e93591725339c18b215172fa1845f6049162d29d568f2a310e637b266180c8b8fbb40e6cf96fb9668b6a1b12
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ *.gem
data/README.md CHANGED
@@ -20,7 +20,14 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- TODO: Write usage instructions here
23
+ I'm currently working on getting this to run from the command line. For now, you can install the right dependencies: 'faker', 'colorize', 'awesome_print'. Then . . .
24
+
25
+ ```
26
+ pry
27
+ [1] pry(main)> require 'rubies'
28
+ ```
29
+
30
+ Then the gem runs.
24
31
 
25
32
  ## Contributing
26
33
 
data/bin/rubies ADDED
File without changes
@@ -1,3 +1,3 @@
1
1
  module Rubies
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/rubies.rb CHANGED
@@ -6,230 +6,233 @@ require 'pp'
6
6
  require 'awesome_print'
7
7
 
8
8
  # module Rubies
9
- # end
10
-
11
- class Hash
12
- def deep_traverse(&block)
13
- stack = self.map { |k, v| [[k], v] }
14
- while not stack.empty?
15
- key, value = stack.pop
16
- yield(key, value)
17
- if value.is_a? Hash
18
- value.each { |k, v| stack.push [key.dup << k, v] }
9
+ class Hash
10
+ def deep_traverse(&block)
11
+ stack = self.map { |k, v| [[k], v] }
12
+ while not stack.empty?
13
+ key, value = stack.pop
14
+ yield(key, value)
15
+ if value.is_a? Hash
16
+ value.each { |k, v| stack.push [key.dup << k, v] }
17
+ end
19
18
  end
20
19
  end
21
20
  end
22
- end
23
-
24
- class RandomHash < Hash
25
- def initialize
26
- @ds = Hash.new
27
- end
28
21
 
29
- def children
30
- array = Array.new
31
- rand(1..3).times do
32
- array << Faker::Name.first_name
22
+ class RandomHash < Hash
23
+ def initialize
24
+ @ds = Hash.new
33
25
  end
34
- array
35
- end
36
26
 
37
- def has_kids?
38
- rand(2) == 1
39
- end
27
+ def children
28
+ array = Array.new
29
+ rand(1..3).times do
30
+ array << Faker::Name.first_name
31
+ end
32
+ array
33
+ end
40
34
 
41
- def hash_one
42
- hash = Hash.new
43
- 10.times do
44
- name = Faker::Company.name
45
- bs = Faker::Company.bs
46
- hash[name] = bs
35
+ def has_kids?
36
+ rand(2) == 1
47
37
  end
48
- hash
49
- end
50
38
 
51
- def hash_two
52
- hash = Hash.new
53
- 10.times do
54
- email = Faker::Internet.email
55
- num = rand(1..1000)
56
- hash[email] = num
39
+ def hash_one
40
+ hash = Hash.new
41
+ 10.times do
42
+ name = Faker::Company.name
43
+ bs = Faker::Company.bs
44
+ hash[name] = bs
45
+ end
46
+ hash
57
47
  end
58
- hash
59
- end
60
48
 
61
- def hash_three
62
- hash = Hash.new
63
- length = rand(1..5)
64
- count = 1
65
- while count <= length
66
- details = Hash.new
67
- name = Faker::Name.name
68
- phone = Faker::PhoneNumber.cell_phone
69
- company = Faker::Company.name
70
- details["phone"] = phone
71
- details["company"] = company
72
- details["children"] = children if has_kids?
73
- hash[name] = details
74
- count += 1
49
+ def hash_two
50
+ hash = Hash.new
51
+ 10.times do
52
+ email = Faker::Internet.email
53
+ num = rand(1..1000)
54
+ hash[email] = num
55
+ end
56
+ hash
75
57
  end
76
- hash
77
- end
78
58
 
79
- def generate
80
- pick = rand(1..3)
81
- case pick
82
- when 1
83
- @ds = hash_one
84
- when 2
85
- @ds = hash_two
86
- when 3
87
- @ds = hash_three
59
+ def hash_three
60
+ hash = Hash.new
61
+ length = rand(1..5)
62
+ count = 1
63
+ while count <= length
64
+ details = Hash.new
65
+ name = Faker::Name.name
66
+ phone = Faker::PhoneNumber.cell_phone
67
+ company = Faker::Company.name
68
+ details["phone"] = phone
69
+ details["company"] = company
70
+ details["children"] = children if has_kids?
71
+ hash[name] = details
72
+ count += 1
73
+ end
74
+ hash
88
75
  end
89
- @ds
90
- end
91
- end
92
76
 
93
- class RandomArray < Array
94
- def initialize
95
- @ds = Array.new
77
+ def generate
78
+ pick = rand(1..3)
79
+ case pick
80
+ when 1
81
+ @ds = hash_one
82
+ when 2
83
+ @ds = hash_two
84
+ when 3
85
+ @ds = hash_three
86
+ end
87
+ @ds
88
+ end
96
89
  end
97
90
 
98
- def mini_array
99
- (-1_000..1_000).sort_by { rand }.sample 3
100
- end
91
+ class RandomArray < Array
92
+ def initialize
93
+ @ds = Array.new
94
+ end
101
95
 
102
- def nesting_array
103
- rand(1..3).times do
104
- @ds << mini_array
96
+ def mini_array
97
+ (-1_000..1_000).sort_by { rand }.sample 3
105
98
  end
106
- @ds.each do |array|
107
- array << mini_array
99
+
100
+ def nesting_array
101
+ rand(1..3).times do
102
+ @ds << mini_array
103
+ end
104
+ @ds.each do |array|
105
+ array << mini_array
106
+ end
107
+ @ds
108
108
  end
109
- @ds
110
- end
111
109
 
112
- def generate
113
- depth = rand(0..3)
114
- nesting_array.flatten(depth)
110
+ def generate
111
+ depth = rand(0..3)
112
+ nesting_array.flatten(depth)
113
+ end
115
114
  end
116
- end
117
115
 
118
- def data_structure
119
- combo = Array.new
120
- rand(1..3).times do
121
- combo << RandomHash.new.hash_three
122
- end
123
- [RandomHash.new.generate, RandomArray.new.generate, combo].sample
124
- end
125
-
126
- def all_values(ds)
127
- values = Array.new
128
- if ds.is_a? Hash
129
- values = ds.values
130
- elsif ds.flatten.first.is_a? Fixnum
131
- values = ds.flatten
132
- else
133
- ds.each do |hash|
134
- hash.deep_traverse{ |path, value| values << value }
135
- end
136
- values.each do |value|
137
- if value.is_a? Array
138
- value.each { |element| values << element }
139
- values.delete(value)
116
+ class Game
117
+ def data_structure
118
+ combo = Array.new
119
+ rand(1..3).times do
120
+ combo << RandomHash.new.hash_three
140
121
  end
122
+ [RandomHash.new.generate, RandomArray.new.generate, combo].sample
141
123
  end
142
- end
143
- values
144
- end
145
-
146
- puts "\e[H\e[2J"
147
- puts "
148
- .______ __ __ .______ __ _______ _______.
149
- | _ \\ | | | | | _ \\ | | | ____| / |
150
- | |_) | | | | | | |_) | | | | |__ | (----`
151
- | / | | | | | _ < | | | __| \\ \\
152
- | |\\ \\----.| `--' | | |_) | | | | |____.----) |
153
- | _| `._____| \\______/ |______/ |__| |_______|_______/
154
-
155
- ".colorize(:light_magenta)
156
- puts "==============================".colorize(:light_magenta)
157
- puts " LEGEND ".colorize(:light_magenta)
158
- puts "NEW : get a new data structure"
159
- # puts "RUN : executes any inputted code"
160
- # puts "EXIT: exit program"
161
- puts "==============================".colorize(:light_magenta)
162
- puts "Press enter to continue . . . "
163
-
164
- gets.chomp
165
- puts "\e[H\e[2J"
166
-
167
- num_correct = 0
168
- num_wrong = 0
169
- current = data_structure
170
- playing = true
171
- while playing == true
172
- correct = false
173
- answer = all_values(current).sample
174
- while correct == false
175
- puts
176
- puts "We have some questions for you about this #{current.class.to_s.downcase}:".colorize(:light_blue)
177
- puts "current = "
178
- if current.is_a? Hash
179
- ap current, index: false
180
- elsif current.first.is_a? Array
181
- PP.pp current
182
- elsif current.first.is_a? Fixnum
183
- PP.pp current
184
- else
185
- ap current, index: false
124
+
125
+ def all_values(ds)
126
+ values = Array.new
127
+ if ds.is_a? Hash
128
+ values = ds.values
129
+ elsif ds.flatten.first.is_a? Fixnum
130
+ values = ds.flatten
131
+ else
132
+ ds.each do |hash|
133
+ hash.deep_traverse{ |path, value| values << value }
134
+ end
135
+ values.each do |value|
136
+ if value.is_a? Array
137
+ value.each { |element| values << element }
138
+ values.delete(value)
139
+ end
140
+ end
141
+ end
142
+ values
186
143
  end
187
- puts
188
- puts "Write some ruby code to find the following value (or enter NEW for a new challenge): ".colorize(:light_blue)
189
- puts answer.to_s
190
- puts
191
- print "[1] ruby_drills(main)> "
192
- input = gets.chomp
193
- input.gsub("\"", "\'")
194
- # $/ = "RUN"
195
- # input = STDIN.gets
196
- # input = input.gsub("\n", ";").gsub("RUN", "")
197
- if input == "NEW"
144
+
145
+ def game
146
+ puts "\e[H\e[2J"
147
+ puts "
148
+ .______ __ __ .______ __ _______ _______.
149
+ | _ \\ | | | | | _ \\ | | | ____| / |
150
+ | |_) | | | | | | |_) | | | | |__ | (----`
151
+ | / | | | | | _ < | | | __| \\ \\
152
+ | |\\ \\----.| `--' | | |_) | | | | |____.----) |
153
+ | _| `._____| \\______/ |______/ |__| |_______|_______/
154
+
155
+ ".colorize(:light_magenta)
156
+ puts "==============================".colorize(:light_magenta)
157
+ puts " LEGEND ".colorize(:light_magenta)
158
+ puts "NEW : get a new data structure"
159
+ # puts "RUN : executes any inputted code"
160
+ # puts "EXIT: exit program"
161
+ puts "==============================".colorize(:light_magenta)
162
+ puts "Press enter to continue . . . "
163
+
164
+ gets.chomp
198
165
  puts "\e[H\e[2J"
166
+
167
+ num_correct = 0
168
+ num_wrong = 0
199
169
  current = data_structure
200
- break
201
- else
202
- begin
203
- output = eval(input)
204
- rescue StandardError => e
205
- puts
206
- puts "Sorry, that code resulted in an error:".colorize(:light_red)
207
- puts "#{e}".colorize(:red)
208
- else
209
- if answer != output
210
- num_wrong += 1
211
- puts "=> " + output.to_s
170
+ playing = true
171
+ while playing == true
172
+ correct = false
173
+ answer = all_values(current).sample
174
+ while correct == false
212
175
  puts
213
- puts "Sorry, that code is incorrect. ".colorize(:light_red)
176
+ puts "We have some questions for you about this #{current.class.to_s.downcase}:".colorize(:light_blue)
177
+ puts "current = "
178
+ if current.is_a? Hash
179
+ ap current, index: false
180
+ elsif current.first.is_a? Array
181
+ PP.pp current
182
+ elsif current.first.is_a? Fixnum
183
+ PP.pp current
184
+ else
185
+ ap current, index: false
186
+ end
214
187
  puts
215
- puts "The right answer is . . . ".colorize(:light_red)
188
+ puts "Write some ruby code to find the following value (or enter NEW for a new challenge): ".colorize(:light_blue)
216
189
  puts answer.to_s
217
- puts "Try again!".colorize(:light_red)
218
- else
219
- num_correct += 1
220
- puts "=> " + output.to_s
221
190
  puts
222
- puts "Correct!".colorize(:green)
223
- correct = true
191
+ print "[1] ruby_drills(main)> "
192
+ input = gets.chomp
193
+ input.gsub("\"", "\'")
194
+ # $/ = "RUN"
195
+ # input = STDIN.gets
196
+ # input = input.gsub("\n", ";").gsub("RUN", "")
197
+ if input == "NEW"
198
+ puts "\e[H\e[2J"
199
+ current = data_structure
200
+ break
201
+ else
202
+ begin
203
+ output = eval(input)
204
+ rescue StandardError => e
205
+ puts
206
+ puts "Sorry, that code resulted in an error:".colorize(:light_red)
207
+ puts "#{e}".colorize(:red)
208
+ else
209
+ if answer != output
210
+ num_wrong += 1
211
+ puts "=> " + output.to_s
212
+ puts
213
+ puts "Sorry, that code is incorrect. ".colorize(:light_red)
214
+ puts
215
+ puts "The right answer is . . . ".colorize(:light_red)
216
+ puts answer.to_s
217
+ puts "Try again!".colorize(:light_red)
218
+ else
219
+ num_correct += 1
220
+ puts "=> " + output.to_s
221
+ puts
222
+ puts "Correct!".colorize(:green)
223
+ correct = true
224
+ end
225
+ end
226
+ end
227
+ puts "==============================".colorize(:light_yellow)
228
+ puts "Number correct this session: ".colorize(:green) + num_correct.to_s
229
+ puts "Number wrong this session : ".colorize(:light_red) + num_wrong.to_s
230
+ puts "==============================".colorize(:light_yellow)
231
+ puts "Press enter to continue . . . "
232
+ gets.chomp
233
+ puts "\e[H\e[2J"
224
234
  end
225
235
  end
226
236
  end
227
- puts "==============================".colorize(:light_yellow)
228
- puts "Number correct this session: ".colorize(:green) + num_correct.to_s
229
- puts "Number wrong this session : ".colorize(:light_red) + num_wrong.to_s
230
- puts "==============================".colorize(:light_yellow)
231
- puts "Press enter to continue . . . "
232
- gets.chomp
233
- puts "\e[H\e[2J"
234
237
  end
235
- end
238
+ #end
data/rubies.gemspec CHANGED
@@ -18,9 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "faker"
22
+ spec.add_dependency "colorize"
23
+ spec.add_dependency "awesome_print"
24
+
21
25
  spec.add_development_dependency "bundler", "~> 1.7"
22
26
  spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "faker"
24
- spec.add_development_dependency "colorize"
25
- spec.add_development_dependency "awesome_print"
26
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vikram Ramakrishnan
@@ -11,41 +11,41 @@ cert_chain: []
11
11
  date: 2014-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: faker
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
20
- type: :development
19
+ version: '0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: colorize
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
33
+ version: '0'
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faker
42
+ name: awesome_print
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
- type: :development
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
@@ -53,40 +53,41 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: colorize
56
+ name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.7'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '1.7'
69
69
  - !ruby/object:Gem::Dependency
70
- name: awesome_print
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '10.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '10.0'
83
83
  description: 'Newcomers to programming would benefit from practicing drills regularly
84
84
  until basic problem solving becomes second nature. This gem is a command line tool
85
85
  that allows users to solve randomly generated small problems. It currently supports
86
86
  drills surrounding complex data structures. '
87
87
  email:
88
88
  - lord.ezar@gmail.com
89
- executables: []
89
+ executables:
90
+ - rubies
90
91
  extensions: []
91
92
  extra_rdoc_files: []
92
93
  files:
@@ -95,6 +96,7 @@ files:
95
96
  - LICENSE.txt
96
97
  - README.md
97
98
  - Rakefile
99
+ - bin/rubies
98
100
  - lib/rubies.rb
99
101
  - lib/rubies/version.rb
100
102
  - rubies.gemspec