codebreaker_marian 0.2.2 → 0.2.7
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/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/Gemfile.lock +1 -1
- data/autoload.rb +3 -2
- data/lib/codebreaker_marian/entities/processor.rb +10 -1
- data/lib/codebreaker_marian/entities/statistics.rb +1 -1
- data/lib/codebreaker_marian/entities/user.rb +24 -0
- data/lib/codebreaker_marian/modules/validator.rb +13 -0
- data/lib/codebreaker_marian/version.rb +1 -1
- metadata +5 -4
- data/lib/codebreaker_marian/entities/renderer.rb +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd80c699e4242eacc5a8869ba5a996eadfa1332e0da85a695c227c2aea4ad2b2
|
4
|
+
data.tar.gz: 75ba4887c03b6634254affe970d8354f68b0474136910021757239f596cf11ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e33bc498908604579ccdc67753376362e0b757fcd6a3e06e0082fdf7fde9a11474c5fe6609db7efdbd4b39517f7f7b5e72a752e5ce563f63e6aed88460d29f0
|
7
|
+
data.tar.gz: 1bd4a84d551cbb2a7fc7b1ecc80392315b947bab3f28aa90d86a160fc19ab6befdabb5c78d45f638f9b436788606ca0ff667903db8bfbc3ac271356d975c7f60
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.7
|
1
|
+
2.7.1
|
data/Gemfile.lock
CHANGED
data/autoload.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'i18n'
|
4
3
|
require 'yaml'
|
5
4
|
require_relative 'lib/codebreaker_marian/entities/game'
|
5
|
+
require_relative 'lib/codebreaker_marian/modules/validator'
|
6
|
+
require_relative 'lib/codebreaker_marian/entities/user'
|
6
7
|
require_relative 'lib/codebreaker_marian/entities/data_storage'
|
7
8
|
require_relative 'lib/codebreaker_marian/entities/processor'
|
8
9
|
require_relative 'lib/codebreaker_marian/entities/statistics'
|
9
|
-
require_relative 'lib/codebreaker_marian/version'
|
10
|
+
require_relative 'lib/codebreaker_marian/version'
|
@@ -5,13 +5,14 @@ module Codebreaker
|
|
5
5
|
class Processor
|
6
6
|
MATCHED_DIGIT_CHAR = '+'
|
7
7
|
UNMATCHED_DIGIT_CHAR = '-'
|
8
|
+
WRONG_DIGIT_CHAR = ' '
|
8
9
|
|
9
10
|
attr_reader :guess, :code, :result
|
10
11
|
|
11
12
|
def secret_code_proc(code, guess)
|
12
13
|
@code = code.split('')
|
13
14
|
@guess = guess.split('')
|
14
|
-
handle_matched_digits.join + handle_matched_digits_with_wrong_position.join
|
15
|
+
handle_matched_digits.join + handle_matched_digits_with_wrong_position.join + handle_wrong_digits.join
|
15
16
|
end
|
16
17
|
|
17
18
|
private
|
@@ -33,6 +34,14 @@ module Codebreaker
|
|
33
34
|
UNMATCHED_DIGIT_CHAR
|
34
35
|
end
|
35
36
|
end
|
37
|
+
|
38
|
+
def handle_wrong_digits
|
39
|
+
guess.compact.map do |number|
|
40
|
+
next unless @code.include?(number)
|
41
|
+
|
42
|
+
WRONG_DIGIT_CHAR
|
43
|
+
end
|
44
|
+
end
|
36
45
|
end
|
37
46
|
end
|
38
47
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Codebreaker
|
4
|
+
module Entities
|
5
|
+
class User
|
6
|
+
include Validator
|
7
|
+
USERNAME_CONSTRAINTS = { min: 3, max: 20 }.freeze
|
8
|
+
|
9
|
+
attr_reader :name
|
10
|
+
|
11
|
+
def initialize(name)
|
12
|
+
@name = name
|
13
|
+
validate
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def validate
|
19
|
+
check_type(@name, String)
|
20
|
+
check_length(@name, USERNAME_CONSTRAINTS)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Codebreaker
|
4
|
+
module Validator
|
5
|
+
def check_type(data, check_type)
|
6
|
+
raise TypeError, 'unexpected_type' unless data.instance_of? check_type
|
7
|
+
end
|
8
|
+
|
9
|
+
def check_length(data, check)
|
10
|
+
raise ArgumentError, 'unexpected_length' unless (check[:min]..check[:max]).cover? data.length
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codebreaker_marian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marian Rebeha
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -177,8 +177,9 @@ files:
|
|
177
177
|
- lib/codebreaker_marian/entities/data_storage.rb
|
178
178
|
- lib/codebreaker_marian/entities/game.rb
|
179
179
|
- lib/codebreaker_marian/entities/processor.rb
|
180
|
-
- lib/codebreaker_marian/entities/renderer.rb
|
181
180
|
- lib/codebreaker_marian/entities/statistics.rb
|
181
|
+
- lib/codebreaker_marian/entities/user.rb
|
182
|
+
- lib/codebreaker_marian/modules/validator.rb
|
182
183
|
- lib/codebreaker_marian/version.rb
|
183
184
|
homepage: https://github.com/marikrebega/RubyGarage_2_Codebreaker_gem
|
184
185
|
licenses: []
|
@@ -199,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
200
|
- !ruby/object:Gem::Version
|
200
201
|
version: '0'
|
201
202
|
requirements: []
|
202
|
-
rubygems_version: 3.1.
|
203
|
+
rubygems_version: 3.1.2
|
203
204
|
signing_key:
|
204
205
|
specification_version: 4
|
205
206
|
summary: CodebreakerMarian app
|
@@ -1,67 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Codebreaker
|
4
|
-
module Entities
|
5
|
-
class Renderer
|
6
|
-
def message(msg_name, hashee = {})
|
7
|
-
puts I18n.t(msg_name, **hashee)
|
8
|
-
end
|
9
|
-
|
10
|
-
def start_message
|
11
|
-
message(:start_message)
|
12
|
-
end
|
13
|
-
|
14
|
-
def rules
|
15
|
-
message(:rules)
|
16
|
-
end
|
17
|
-
|
18
|
-
def goodbye_message
|
19
|
-
message(:goodbye_message)
|
20
|
-
end
|
21
|
-
|
22
|
-
def save_results_message
|
23
|
-
message(:save_results_message)
|
24
|
-
end
|
25
|
-
|
26
|
-
def win_game_message
|
27
|
-
message(:win_game_message)
|
28
|
-
end
|
29
|
-
|
30
|
-
def round_message
|
31
|
-
message(:round_message)
|
32
|
-
end
|
33
|
-
|
34
|
-
def lost_game_message(code)
|
35
|
-
message(:lost_game_message, code: code)
|
36
|
-
end
|
37
|
-
|
38
|
-
def no_hints_message?
|
39
|
-
message(:have_no_hints_message)
|
40
|
-
end
|
41
|
-
|
42
|
-
def print_hint_number(code)
|
43
|
-
message(:print_hint_number, code: code)
|
44
|
-
end
|
45
|
-
|
46
|
-
def registration_name_emptyness_error
|
47
|
-
message(:registration_name_emptyness_error)
|
48
|
-
end
|
49
|
-
|
50
|
-
def registration_name_length_error
|
51
|
-
message(:registration_name_length_error)
|
52
|
-
end
|
53
|
-
|
54
|
-
def command_error
|
55
|
-
message(:command_error)
|
56
|
-
end
|
57
|
-
|
58
|
-
def command_length_error
|
59
|
-
message(:command_length_error)
|
60
|
-
end
|
61
|
-
|
62
|
-
def command_int_error
|
63
|
-
message(:command_int_error)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|