GemCodebreaker 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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