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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 12131d83b585528d4439fce06930e09a875e97670771f8af7431a8435f92abb3
4
- data.tar.gz: 263297083f7e135928c7abaf7d6daefab5928b865269076634d8499d27cdfe50
3
+ metadata.gz: 8d128beb164e21cd400d768f1471fa4773bd12d298dc01e35f20aa2821e9f41b
4
+ data.tar.gz: 390ddb056e6a40e21e0303204a41e51569209a4868e534aa50db930ef72a0f07
5
5
  SHA512:
6
- metadata.gz: 05eb5e3cdc70ef977f3e92da9ff638bbd4e2a07a8a11fc78c74c178191c8069d9e31f99375a38e31db3a8d0f1d70c785496cd0f3eb6541494d795a034bb083fd
7
- data.tar.gz: eca18f4f867615dd5d0841c223c10b79cfe88b844ffeeaf29bc6d098ac96f77144210a5674d152332607151815b2c8e02fe48f72bbe7db33388efb6fb4eac677
6
+ metadata.gz: ff237177856acb512ccd3ac35c8ae5faeae3620b92975f9f150f2fc78625de14deda329bf98f816bd92909261992e3d97a6a933ac986ccc47f397092846b4468
7
+ data.tar.gz: e43687095f316b8a66019666ea56e1c195ef99789bf23ec012378fb3b804e533cdafa07af65c83b967362a39543959ccbbdf3e3ef8b781c90e2886ec0d174b71
data/.rspec CHANGED
@@ -1,3 +1,4 @@
1
1
  --format documentation
2
2
  --color
3
3
  --require spec_helper
4
+ --order random
@@ -11,10 +11,7 @@ module GemCodebreaker
11
11
  def initialize(user, level)
12
12
  @config = GameConfig.new(user, level)
13
13
  @statistic = []
14
- end
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::IncorrectLengthError if user_code.length != LENGTH_OF_SECRET_CODE
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
@@ -11,7 +11,7 @@ module GemCodebreaker
11
11
 
12
12
  def nickname_valid?
13
13
  validate_class(@nick_name, String)
14
- validate_length(@nick_name, (3..20))
14
+ validate_length(@nick_name, (3..20), I18n.t('errors.name_length'))
15
15
  true
16
16
  end
17
17
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module GemCodebreaker
4
4
  # Error class to check game difficulty
5
- class UnknowLevelError < StandardError
5
+ class InclusionError < StandardError
6
6
  def initialize
7
7
  super(I18n.t('errors.unknow_level'))
8
8
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  module GemCodebreaker
4
4
  # Error class to check user nickname
5
- class NameLengthError < StandardError
6
- def initialize
7
- super(I18n.t('errors.name_length'))
5
+ class LengthError < StandardError
6
+ def initialize(message)
7
+ super(message)
8
8
  end
9
9
  end
10
10
  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/incorrect_length_error'
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/unknow_level_error'
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(difficulty, game_level)
6
- raise GemCodebreaker::UnknowLevelError unless difficulty.include?(game_level)
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(nickname, ranges)
14
- raise GemCodebreaker::NameLengthError unless ranges.member?(nickname.length)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemCodebreaker
4
- VERSION = '0.1.9'
4
+ VERSION = '0.2.0'
5
5
  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.1.9
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-07-23 00:00:00.000000000 Z
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/incorrect_length_error.rb
152
- - lib/gem_codebreaker/errors/name_length_error.rb
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
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module GemCodebreaker
4
- # Error class to check the length of user code
5
- class IncorrectLengthError < StandardError
6
- def initialize
7
- super(I18n.t('errors.incorrect_length'))
8
- end
9
- end
10
- end