icodebreaker_gem 0.3.0 → 0.3.1

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: 77686e016570a9a327c2588bdfc2d36d0a09b418b58081e827b2dd671058fe6a
4
- data.tar.gz: 41071cc2d0f4fba6a345b0f9bab8cab982d45c7b91817514e1cfd3828d7865aa
3
+ metadata.gz: 7ec00c184eee22be479150d458bd2e837d1389a781e329871b602a7fae6d372a
4
+ data.tar.gz: b2e5a88f71f41108dbd41eb57cedc617c8da2c1b477968ca53583db505737632
5
5
  SHA512:
6
- metadata.gz: 9ac145ebb5fb673c36f6bf801d4e638d6fbc24550ccc5ee5442e65576ece7ce4332ec8fa74cc721cba6fdef4c8c1e878aacdddb4cebda5f63b03b192ae964eae
7
- data.tar.gz: d9c6fcf607a08a56433888bec900a0af213a6f3adb6cb176a5737fe34623ae1fe3e5f0ae5148dbc00d45c6d267829e47fb6af452c74f8fcf30fe57816d2095e3
6
+ metadata.gz: ee4e2181cfe8dce5f2a084c85e7830631c3e9c34983af65ce1fd6302f356454c11fb61a6f03e42b77247c819206073df3b4092699cc5cc1696eb0f7865539105
7
+ data.tar.gz: cb30f180e4f4d41031f6b5849f57c63291481fc36623302971d0fbb2a194f835c2fbd49abb7c6d47df141cf8e7f4662bac607a2a6b2aecc8d2d64f2a47023c3a
data/.rspec_status CHANGED
@@ -1,30 +1,30 @@
1
1
  example_id | status | run_time |
2
2
  ------------------------------------ | ------ | --------------- |
3
3
  ./spec/game_core_spec.rb[1:1] | passed | 0.00023 seconds |
4
- ./spec/game_core_spec.rb[1:2] | passed | 0.00066 seconds |
5
- ./spec/game_core_spec.rb[1:3:1] | passed | 0.00034 seconds |
6
- ./spec/game_core_spec.rb[1:4:1] | passed | 0.00053 seconds |
7
- ./spec/game_core_spec.rb[1:5:1:1] | passed | 0.00011 seconds |
8
- ./spec/game_core_spec.rb[1:5:1:2] | passed | 0.00006 seconds |
9
- ./spec/game_core_spec.rb[1:5:1:3] | passed | 0.00006 seconds |
4
+ ./spec/game_core_spec.rb[1:2] | passed | 0.00074 seconds |
5
+ ./spec/game_core_spec.rb[1:3:1] | passed | 0.00038 seconds |
6
+ ./spec/game_core_spec.rb[1:4:1] | passed | 0.00054 seconds |
7
+ ./spec/game_core_spec.rb[1:5:1:1] | passed | 0.00006 seconds |
8
+ ./spec/game_core_spec.rb[1:5:1:2] | passed | 0.00007 seconds |
9
+ ./spec/game_core_spec.rb[1:5:1:3] | passed | 0.0001 seconds |
10
10
  ./spec/game_core_spec.rb[1:5:1:4] | passed | 0.00006 seconds |
11
- ./spec/game_core_spec.rb[1:5:1:5] | passed | 0.00008 seconds |
11
+ ./spec/game_core_spec.rb[1:5:1:5] | passed | 0.00006 seconds |
12
12
  ./spec/game_core_spec.rb[1:5:1:6] | passed | 0.00006 seconds |
13
- ./spec/game_core_spec.rb[1:5:1:7] | passed | 0.00004 seconds |
13
+ ./spec/game_core_spec.rb[1:5:1:7] | passed | 0.00008 seconds |
14
14
  ./spec/game_core_spec.rb[1:5:2:1] | passed | 0.00005 seconds |
15
- ./spec/game_core_spec.rb[1:5:2:2] | passed | 0.00006 seconds |
16
- ./spec/game_core_spec.rb[1:5:3:1] | passed | 0.00005 seconds |
17
- ./spec/game_core_spec.rb[1:5:3:2] | passed | 0.00004 seconds |
15
+ ./spec/game_core_spec.rb[1:5:2:2] | passed | 0.00005 seconds |
16
+ ./spec/game_core_spec.rb[1:5:3:1] | passed | 0.00007 seconds |
17
+ ./spec/game_core_spec.rb[1:5:3:2] | passed | 0.00005 seconds |
18
18
  ./spec/game_core_spec.rb[1:5:3:3] | passed | 0.00004 seconds |
19
- ./spec/game_spec.rb[1:1:1] | passed | 0.0001 seconds |
20
- ./spec/game_spec.rb[1:2:1] | passed | 0.0002 seconds |
19
+ ./spec/game_spec.rb[1:1:1] | passed | 0.00012 seconds |
20
+ ./spec/game_spec.rb[1:2:1] | passed | 0.00019 seconds |
21
21
  ./spec/game_spec.rb[1:2:2] | passed | 0.00008 seconds |
22
22
  ./spec/game_spec.rb[1:2:3] | passed | 0.00007 seconds |
23
- ./spec/game_spec.rb[1:2:4] | passed | 0.00008 seconds |
23
+ ./spec/game_spec.rb[1:2:4] | passed | 0.00009 seconds |
24
24
  ./spec/game_spec.rb[1:2:5] | passed | 0.00005 seconds |
25
- ./spec/game_spec.rb[1:3:1] | passed | 0.00034 seconds |
26
- ./spec/game_spec.rb[1:3:2] | passed | 0.00017 seconds |
27
- ./spec/game_spec.rb[1:3:3] | passed | 0.00014 seconds |
28
- ./spec/game_spec.rb[1:4:1] | passed | 0.00014 seconds |
29
- ./spec/game_spec.rb[1:5:1] | passed | 0.00104 seconds |
30
- ./spec/icodebreaker_gem_spec.rb[1:1] | passed | 0.00007 seconds |
25
+ ./spec/game_spec.rb[1:3:1] | passed | 0.00039 seconds |
26
+ ./spec/game_spec.rb[1:3:2] | passed | 0.00015 seconds |
27
+ ./spec/game_spec.rb[1:3:3] | passed | 0.00015 seconds |
28
+ ./spec/game_spec.rb[1:4:1] | passed | 0.00268 seconds |
29
+ ./spec/game_spec.rb[1:5:1] | passed | 0.0009 seconds |
30
+ ./spec/icodebreaker_gem_spec.rb[1:1] | passed | 0.00014 seconds |
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- icodebreaker_gem (0.3.0)
4
+ icodebreaker_gem (0.3.1)
5
5
  rake (~> 13.0)
6
6
 
7
7
  GEM
@@ -10,11 +10,14 @@ GEM
10
10
  ast (2.4.2)
11
11
  coderay (1.1.3)
12
12
  colorize (0.8.1)
13
+ concurrent-ruby (1.1.9)
13
14
  diff-lcs (1.4.4)
14
15
  docile (1.4.0)
15
16
  fasterer (0.9.0)
16
17
  colorize (~> 0.7)
17
18
  ruby_parser (>= 3.14.1)
19
+ i18n (1.8.10)
20
+ concurrent-ruby (~> 1.0)
18
21
  method_source (1.0.0)
19
22
  parallel (1.21.0)
20
23
  parser (3.0.2.0)
@@ -66,12 +69,13 @@ PLATFORMS
66
69
  x86_64-linux
67
70
 
68
71
  DEPENDENCIES
69
- fasterer
72
+ fasterer (>= 0.9.0)
73
+ i18n
70
74
  icodebreaker_gem!
71
- pry
75
+ pry (>= 0.14.1)
72
76
  rspec (~> 3.0)
73
77
  rubocop (~> 1.7)
74
- simplecov
78
+ simplecov (>= 0.21.2)
75
79
 
76
80
  BUNDLED WITH
77
81
  2.2.26
@@ -0,0 +1,4 @@
1
+ en:
2
+ message:
3
+ lose: "The game is over."
4
+ no_hints: "No hints left."
data/lib/config.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'yaml'
4
-
4
+ require 'i18n'
5
+ require 'psych'
5
6
  require_relative 'modules/validation'
6
7
  require_relative 'modules/storage'
7
8
 
@@ -9,4 +10,5 @@ require_relative 'game_core'
9
10
  require_relative 'game'
10
11
  require_relative 'icodebreaker_gem/version'
11
12
  require_relative 'icodebreaker_gem'
12
- require_relative 'constants'
13
+
14
+ I18n.load_path << Dir[['config', 'locales', '**', '*.yml'].join('/')]
data/lib/game.rb CHANGED
@@ -5,6 +5,23 @@ module IcodebreakerGem
5
5
  include Validation
6
6
  include Storage
7
7
 
8
+ STATUS = %i[go_on over].freeze
9
+ RESULT = %i[win lose].freeze
10
+ DIFFICULTIES = {
11
+ easy: {
12
+ attempts_total: 15,
13
+ hints_total: 2
14
+ },
15
+ medium: {
16
+ attempts_total: 10,
17
+ hints_total: 1
18
+ },
19
+ hell: {
20
+ attempts_total: 5,
21
+ hints_total: 1
22
+ }
23
+ }.freeze
24
+
8
25
  attr_reader :name, :difficulty, :attempts_used, :hints_used, :status, :result
9
26
 
10
27
  def initialize(name = 'User1', difficulty = :easy, secret = GameCore.random)
@@ -40,19 +57,19 @@ module IcodebreakerGem
40
57
  check_lose
41
58
  answer
42
59
  when :over
43
- 'The game is over.'
60
+ I18n.t('message.lose')
44
61
  end
45
62
  end
46
63
 
47
64
  def hint
48
65
  case @status
49
66
  when :go_on
50
- return 'No hints left.' if @hints_used >= hints_total
67
+ return I18n.t('message.no_hints') if @hints_used >= hints_total
51
68
 
52
69
  @hints_used += 1
53
70
  @code.hint
54
71
  when :over
55
- 'The game is over.'
72
+ I18n.t('message.lose')
56
73
  end
57
74
  end
58
75
 
data/lib/game_core.rb CHANGED
@@ -13,7 +13,7 @@ module IcodebreakerGem
13
13
 
14
14
  def compare(guess)
15
15
  return '++++' if @secret == guess
16
- return '' if (@secret.chars & guess.chars).blank?
16
+ return '' if (@secret.chars & guess.chars).empty?
17
17
 
18
18
  pluses1, minuses1 = pluses_and_minuses(@secret, guess)
19
19
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IcodebreakerGem
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
@@ -15,7 +15,7 @@ module IcodebreakerGem
15
15
  class << self
16
16
  def load_storage
17
17
  create_storage
18
- YAML.load(File.read(data_path)) || []
18
+ YAML.safe_load(File.read(data_path)) || []
19
19
  end
20
20
 
21
21
  def sort_codebreakers
@@ -2,12 +2,15 @@
2
2
 
3
3
  module IcodebreakerGem
4
4
  module Validation
5
+ USERNAME = /^[0-9a-zA-Z]{3,20}$/.freeze
6
+ CODE = /^[1-6]{4}$/.freeze
7
+
5
8
  def validate_name(name)
6
- raise ArgumentError, 'Incorrect username' unless name.to_s.match?(/^[0-9a-zA-Z]{3,20}$/)
9
+ raise ArgumentError, 'Incorrect username' unless name.to_s.match?(USERNAME)
7
10
  end
8
11
 
9
12
  def validate_code(code)
10
- raise ArgumentError, 'Incorrect code' unless code.to_s.match?(/^[1-6]{4}$/)
13
+ raise ArgumentError, 'Incorrect code' unless code.to_s.match?(CODE)
11
14
  end
12
15
 
13
16
  def validate_difficulty(difficulty)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icodebreaker_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - JohnnyGsy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-29 00:00:00.000000000 Z
11
+ date: 2021-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -26,6 +26,20 @@ dependencies:
26
26
  version: '13.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fasterer
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: i18n
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
@@ -44,14 +58,14 @@ dependencies:
44
58
  requirements:
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '0'
61
+ version: 0.14.1
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '0'
68
+ version: 0.14.1
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +100,14 @@ dependencies:
86
100
  requirements:
87
101
  - - ">="
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: 0.21.2
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: 0.21.2
97
111
  description: Guess the secret code
98
112
  email:
99
113
  - vanstrelok@gmail.com
@@ -115,8 +129,8 @@ files:
115
129
  - Rakefile
116
130
  - bin/console
117
131
  - bin/setup
132
+ - config/locales/en.yml
118
133
  - lib/config.rb
119
- - lib/constants.rb
120
134
  - lib/game.rb
121
135
  - lib/game_core.rb
122
136
  - lib/icodebreaker_gem.rb
data/lib/constants.rb DELETED
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module IcodebreakerGem
4
- STATUS = %i[go_on over].freeze
5
- RESULT = %i[win lose].freeze
6
- DIFFICULTIES = {
7
- easy: {
8
- attempts_total: 15,
9
- hints_total: 2
10
- },
11
- medium: {
12
- attempts_total: 10,
13
- hints_total: 1
14
- },
15
- hell: {
16
- attempts_total: 5,
17
- hints_total: 1
18
- }
19
- }.freeze
20
- end