new_super_codebreaker_2021 0.4.5 → 0.4.6
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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/loader.rb +8 -0
- data/lib/new_super_codebreaker_2021/db_methods.rb +17 -0
- data/lib/{game.rb → new_super_codebreaker_2021/game.rb} +6 -9
- data/lib/{new_super_codebreaker_2021.rb → new_super_codebreaker_2021/new_super_codebreaker_2021.rb} +0 -3
- data/lib/new_super_codebreaker_2021/show_content.rb +10 -0
- data/lib/new_super_codebreaker_2021/user.rb +28 -0
- data/lib/new_super_codebreaker_2021/validate.rb +50 -0
- data/lib/new_super_codebreaker_2021/version.rb +1 -3
- metadata +9 -8
- data/lib/db_methods.rb +0 -15
- data/lib/show_content.rb +0 -10
- data/lib/user.rb +0 -28
- data/lib/validate.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81df7f5993ddc2b124bf20ac2632b1c6908a785076afacb407e2a3dcf14b7c11
|
4
|
+
data.tar.gz: a9246bff8d86887c221547198b93f8716297989de63ea77a5baa6e2a5c3ff87c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8c12e16606143f316f87d56e5b92fe5a76ea1fffbe4f4e7c5ea5ca07dd16905dc8d0f35347bfc81c5ad3e4eddee3f435486e1ccfe77682ccd54ca47e9642f5e
|
7
|
+
data.tar.gz: eb64b063703142840276857ebf202e97ed4c2c1e31743c7636cc0f0f0759b69ec71626b0a00b77a8afd7e0ab166940c4a3680238d96f1501bbe838919fe0bafa
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
new_super_codebreaker_2021 (0.4.
|
4
|
+
new_super_codebreaker_2021 (0.4.5)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -64,7 +64,7 @@ PLATFORMS
|
|
64
64
|
|
65
65
|
DEPENDENCIES
|
66
66
|
fasterer (~> 0.9.0)
|
67
|
-
ffaker
|
67
|
+
ffaker (~> 2.19.0)
|
68
68
|
new_super_codebreaker_2021!
|
69
69
|
rake (~> 13.0)
|
70
70
|
rspec (~> 3.10.0)
|
data/lib/loader.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require_relative 'new_super_codebreaker_2021/user'
|
3
|
+
require_relative 'new_super_codebreaker_2021/show_content'
|
4
|
+
require_relative 'new_super_codebreaker_2021/db_methods'
|
5
|
+
require_relative 'new_super_codebreaker_2021/validate'
|
6
|
+
require_relative 'new_super_codebreaker_2021/new_super_codebreaker_2021'
|
7
|
+
require_relative 'new_super_codebreaker_2021/game'
|
8
|
+
require_relative 'new_super_codebreaker_2021/version'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module NewSuperCodebreaker2021
|
2
|
+
module DBMethods
|
3
|
+
def save(user, file)
|
4
|
+
rating = load_file(file)
|
5
|
+
rating.push(user)
|
6
|
+
File.open(file, 'w') do |filename|
|
7
|
+
YAML.dump(rating, filename)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def load_file(file)
|
12
|
+
YAML.load_file(file)
|
13
|
+
rescue Errno::ENOENT
|
14
|
+
[]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,15 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative 'show_content'
|
4
|
-
require_relative 'db_methods'
|
5
|
-
require_relative 'user'
|
1
|
+
require_relative '../loader'
|
2
|
+
|
6
3
|
module NewSuperCodebreaker2021
|
7
4
|
class Game
|
8
|
-
attr_reader :code
|
9
|
-
|
10
|
-
include Validate
|
11
|
-
include ShowContent
|
12
5
|
include DBMethods
|
6
|
+
include ShowContent
|
7
|
+
include Validate
|
8
|
+
|
9
|
+
attr_reader :code
|
13
10
|
|
14
11
|
def initialize
|
15
12
|
@code = generate_code
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module NewSuperCodebreaker2021
|
2
|
+
class User
|
3
|
+
attr_reader :name, :difficulty, :hints_total, :attempts_total
|
4
|
+
attr_accessor :hints_used, :attempts_used
|
5
|
+
|
6
|
+
DIFFICULTY = {
|
7
|
+
easy: { attempts: 15, hints: 2 },
|
8
|
+
medium: { attempts: 10, hints: 1 },
|
9
|
+
hell: { attempts: 5, hints: 1 }
|
10
|
+
}.freeze
|
11
|
+
|
12
|
+
def initialize(name, difficulty)
|
13
|
+
@name = name
|
14
|
+
@difficulty = difficulty
|
15
|
+
@hints_used = 0
|
16
|
+
@attempts_used = 0
|
17
|
+
set_total_fields
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def set_total_fields
|
23
|
+
difficulty = DIFFICULTY.keys[@difficulty]
|
24
|
+
@hints_total = DIFFICULTY[difficulty][:hints]
|
25
|
+
@attempts_total = DIFFICULTY[difficulty][:attempts]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module NewSuperCodebreaker2021
|
2
|
+
module Validate
|
3
|
+
def validate_name(name)
|
4
|
+
name if valid_name?(name)
|
5
|
+
end
|
6
|
+
|
7
|
+
def validate_user_code(us_code)
|
8
|
+
arr_code = split_to_integer_array(us_code)
|
9
|
+
return unless valid_number?(arr_code)
|
10
|
+
|
11
|
+
arr_code
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_input(input, command_list)
|
15
|
+
return unless valid_input?(input, command_list)
|
16
|
+
|
17
|
+
input.to_sym
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def valid_input?(input, command_list)
|
23
|
+
input.to_i.zero? && command_list.include?(input.to_sym)
|
24
|
+
end
|
25
|
+
|
26
|
+
def valid_number?(arr_code)
|
27
|
+
arr_code && check_code_length?(arr_code) && check_numbers?(arr_code)
|
28
|
+
end
|
29
|
+
|
30
|
+
def split_to_integer_array(code)
|
31
|
+
code.chars.map!(&:to_i) if integer?(code)
|
32
|
+
end
|
33
|
+
|
34
|
+
def integer?(code)
|
35
|
+
code.to_i.to_s == code
|
36
|
+
end
|
37
|
+
|
38
|
+
def check_code_length?(code)
|
39
|
+
code.length == 4
|
40
|
+
end
|
41
|
+
|
42
|
+
def check_numbers?(code)
|
43
|
+
code.all? { |value| value.between?(1, 6) }
|
44
|
+
end
|
45
|
+
|
46
|
+
def valid_name?(name)
|
47
|
+
name.length >= 3 && name.length <= 20
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: new_super_codebreaker_2021
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nazar Dakhno
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fasterer
|
@@ -123,13 +123,14 @@ files:
|
|
123
123
|
- Rakefile
|
124
124
|
- bin/console
|
125
125
|
- bin/setup
|
126
|
-
- lib/
|
127
|
-
- lib/
|
128
|
-
- lib/new_super_codebreaker_2021.rb
|
126
|
+
- lib/loader.rb
|
127
|
+
- lib/new_super_codebreaker_2021/db_methods.rb
|
128
|
+
- lib/new_super_codebreaker_2021/game.rb
|
129
|
+
- lib/new_super_codebreaker_2021/new_super_codebreaker_2021.rb
|
130
|
+
- lib/new_super_codebreaker_2021/show_content.rb
|
131
|
+
- lib/new_super_codebreaker_2021/user.rb
|
132
|
+
- lib/new_super_codebreaker_2021/validate.rb
|
129
133
|
- lib/new_super_codebreaker_2021/version.rb
|
130
|
-
- lib/show_content.rb
|
131
|
-
- lib/user.rb
|
132
|
-
- lib/validate.rb
|
133
134
|
homepage: https://rubygems.org/gems/new_super_codebreaker_2021
|
134
135
|
licenses:
|
135
136
|
- MIT
|
data/lib/db_methods.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module DBMethods
|
2
|
-
def save(user, file)
|
3
|
-
rating = load_file(file)
|
4
|
-
rating.push(user)
|
5
|
-
File.open(file, 'w') do |filename|
|
6
|
-
YAML.dump(rating, filename)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def load_file(file)
|
11
|
-
YAML.load_file(file)
|
12
|
-
rescue Errno::ENOENT
|
13
|
-
[]
|
14
|
-
end
|
15
|
-
end
|
data/lib/show_content.rb
DELETED
data/lib/user.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require_relative 'show_content'
|
2
|
-
|
3
|
-
class User
|
4
|
-
attr_reader :name, :difficulty, :hints_total, :attempts_total
|
5
|
-
attr_accessor :hints_used, :attempts_used
|
6
|
-
|
7
|
-
DIFFICULTY = {
|
8
|
-
easy: { attempts: 15, hints: 2 },
|
9
|
-
medium: { attempts: 10, hints: 1 },
|
10
|
-
hell: { attempts: 5, hints: 1 }
|
11
|
-
}.freeze
|
12
|
-
|
13
|
-
def initialize(name, difficulty)
|
14
|
-
@name = name
|
15
|
-
@difficulty = difficulty
|
16
|
-
@hints_used = 0
|
17
|
-
@attempts_used = 0
|
18
|
-
set_total_fields
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def set_total_fields
|
24
|
-
difficulty = DIFFICULTY.keys[@difficulty]
|
25
|
-
@hints_total = DIFFICULTY[difficulty][:hints]
|
26
|
-
@attempts_total = DIFFICULTY[difficulty][:attempts]
|
27
|
-
end
|
28
|
-
end
|
data/lib/validate.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
module Validate
|
2
|
-
def validate_name(name)
|
3
|
-
name if valid_name?(name)
|
4
|
-
end
|
5
|
-
|
6
|
-
def validate_user_code(us_code)
|
7
|
-
arr_code = split_to_integer_array(us_code)
|
8
|
-
return unless valid_number?(arr_code)
|
9
|
-
|
10
|
-
arr_code
|
11
|
-
end
|
12
|
-
|
13
|
-
def check_input(input, command_list)
|
14
|
-
return unless valid_input?(input, command_list)
|
15
|
-
|
16
|
-
input.to_sym
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def valid_input?(input, command_list)
|
22
|
-
input.to_i.zero? && command_list.include?(input.to_sym)
|
23
|
-
end
|
24
|
-
|
25
|
-
def valid_number?(arr_code)
|
26
|
-
arr_code && check_code_length?(arr_code) && check_numbers?(arr_code)
|
27
|
-
end
|
28
|
-
|
29
|
-
def split_to_integer_array(code)
|
30
|
-
code.chars.map!(&:to_i) if integer?(code)
|
31
|
-
end
|
32
|
-
|
33
|
-
def integer?(code)
|
34
|
-
code.to_i.to_s == code
|
35
|
-
end
|
36
|
-
|
37
|
-
def check_code_length?(code)
|
38
|
-
code.length == 4
|
39
|
-
end
|
40
|
-
|
41
|
-
def check_numbers?(code)
|
42
|
-
code.all? { |value| value.between?(1, 6) }
|
43
|
-
end
|
44
|
-
|
45
|
-
def valid_name?(name)
|
46
|
-
name.length >= 3 && name.length <= 20
|
47
|
-
end
|
48
|
-
end
|