GemCodebreaker 0.1.9 → 0.2.0
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/.rspec +1 -0
- data/lib/gem_codebreaker/classes/game.rb +11 -5
- data/lib/gem_codebreaker/classes/user.rb +1 -1
- data/lib/gem_codebreaker/errors/{unknow_level_error.rb → inclusion_error.rb} +1 -1
- data/lib/gem_codebreaker/errors/{name_length_error.rb → length_error.rb} +3 -3
- data/lib/gem_codebreaker/gem_codebreaker.rb +2 -3
- data/lib/gem_codebreaker/modules/validator.rb +4 -4
- data/lib/gem_codebreaker/version.rb +1 -1
- metadata +4 -5
- data/lib/gem_codebreaker/errors/incorrect_length_error.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d128beb164e21cd400d768f1471fa4773bd12d298dc01e35f20aa2821e9f41b
|
4
|
+
data.tar.gz: 390ddb056e6a40e21e0303204a41e51569209a4868e534aa50db930ef72a0f07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff237177856acb512ccd3ac35c8ae5faeae3620b92975f9f150f2fc78625de14deda329bf98f816bd92909261992e3d97a6a933ac986ccc47f397092846b4468
|
7
|
+
data.tar.gz: e43687095f316b8a66019666ea56e1c195ef99789bf23ec012378fb3b804e533cdafa07af65c83b967362a39543959ccbbdf3e3ef8b781c90e2886ec0d174b71
|
data/.rspec
CHANGED
@@ -11,10 +11,7 @@ module GemCodebreaker
|
|
11
11
|
def initialize(user, level)
|
12
12
|
@config = GameConfig.new(user, level)
|
13
13
|
@statistic = []
|
14
|
-
|
15
|
-
|
16
|
-
def secrete_code
|
17
|
-
@secrete_code ||= (1..LENGTH_OF_SECRET_CODE).map { rand DIGIT_RANGE }
|
14
|
+
secrete_code
|
18
15
|
end
|
19
16
|
|
20
17
|
def guess_start(input_code)
|
@@ -36,6 +33,10 @@ module GemCodebreaker
|
|
36
33
|
@config.attempts_used? && win_game? == false
|
37
34
|
end
|
38
35
|
|
36
|
+
def show_secrete_code
|
37
|
+
@secrete_code if win_game? || game_over?
|
38
|
+
end
|
39
|
+
|
39
40
|
def hint
|
40
41
|
raise GemCodebreaker::NoHintsError if @config.hints_used?
|
41
42
|
|
@@ -45,6 +46,7 @@ module GemCodebreaker
|
|
45
46
|
|
46
47
|
def restart_game
|
47
48
|
@config.reset_user_attempts_hints
|
49
|
+
@secrete_code = false
|
48
50
|
secrete_code
|
49
51
|
end
|
50
52
|
|
@@ -56,12 +58,16 @@ module GemCodebreaker
|
|
56
58
|
|
57
59
|
def guess_valid?(user_code)
|
58
60
|
validate_class(user_code, String)
|
59
|
-
raise GemCodebreaker::
|
61
|
+
raise GemCodebreaker::LengthError, I18n.t('errors.incorrect_length') if user_code.length != LENGTH_OF_SECRET_CODE
|
60
62
|
unless user_code[/\A[#{DIGIT_RANGE.first}-#{DIGIT_RANGE.last}]{#{LENGTH_OF_SECRET_CODE}}\z/]
|
61
63
|
raise GemCodebreaker::ValueRangeError
|
62
64
|
end
|
63
65
|
|
64
66
|
true
|
65
67
|
end
|
68
|
+
|
69
|
+
def secrete_code
|
70
|
+
@secrete_code ||= (1..LENGTH_OF_SECRET_CODE).map { rand DIGIT_RANGE }
|
71
|
+
end
|
66
72
|
end
|
67
73
|
end
|
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'gem_codebreaker/config/i18n_locales'
|
4
4
|
require 'gem_codebreaker/version'
|
5
|
-
require 'gem_codebreaker/errors/
|
6
|
-
require 'gem_codebreaker/errors/name_length_error'
|
5
|
+
require 'gem_codebreaker/errors/length_error'
|
7
6
|
require 'gem_codebreaker/errors/no_attempts_error'
|
8
7
|
require 'gem_codebreaker/errors/no_hints_error'
|
9
|
-
require 'gem_codebreaker/errors/
|
8
|
+
require 'gem_codebreaker/errors/inclusion_error'
|
10
9
|
require 'gem_codebreaker/errors/value_range_error'
|
11
10
|
require 'gem_codebreaker/errors/wrong_class_error'
|
12
11
|
require 'gem_codebreaker/modules/validator'
|
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
module GemCodebreaker
|
4
4
|
module Validator
|
5
|
-
def validate_inclusion(
|
6
|
-
raise GemCodebreaker::
|
5
|
+
def validate_inclusion(valid_values, check_value)
|
6
|
+
raise GemCodebreaker::InclusionError unless valid_values.include?(check_value)
|
7
7
|
end
|
8
8
|
|
9
9
|
def validate_class(user_code, klass)
|
10
10
|
raise GemCodebreaker::WrongClassError unless user_code.is_a?(klass)
|
11
11
|
end
|
12
12
|
|
13
|
-
def validate_length(
|
14
|
-
raise GemCodebreaker::
|
13
|
+
def validate_length(check_value, valid_values, errors_message)
|
14
|
+
raise GemCodebreaker::LengthError, errors_message unless valid_values.member?(check_value.length)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: GemCodebreaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasyl
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fasterer
|
@@ -148,11 +148,10 @@ files:
|
|
148
148
|
- lib/gem_codebreaker/classes/serializer_deserializer.rb
|
149
149
|
- lib/gem_codebreaker/classes/user.rb
|
150
150
|
- lib/gem_codebreaker/config/i18n_locales.rb
|
151
|
-
- lib/gem_codebreaker/errors/
|
152
|
-
- lib/gem_codebreaker/errors/
|
151
|
+
- lib/gem_codebreaker/errors/inclusion_error.rb
|
152
|
+
- lib/gem_codebreaker/errors/length_error.rb
|
153
153
|
- lib/gem_codebreaker/errors/no_attempts_error.rb
|
154
154
|
- lib/gem_codebreaker/errors/no_hints_error.rb
|
155
|
-
- lib/gem_codebreaker/errors/unknow_level_error.rb
|
156
155
|
- lib/gem_codebreaker/errors/value_range_error.rb
|
157
156
|
- lib/gem_codebreaker/errors/wrong_class_error.rb
|
158
157
|
- lib/gem_codebreaker/gem_codebreaker.rb
|