codebreaker_marian 0.2.3 → 0.2.8

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: 2b3b242300e306bda729a51a8d16b0296f5137b339e257e3a002b00211fc1310
4
- data.tar.gz: 73dc8f96288d1c7e330bfd6e381b2938ba10e6d81e9d572b328e531a38157cfe
3
+ metadata.gz: d2a38eba7114655af481d79eff583e3ca6300b0a425c50c831cb6cafb5f14fc6
4
+ data.tar.gz: 6852e74687d9c98bc4770942706ff71946e8de10d055bbd51eaf1ef6635fae11
5
5
  SHA512:
6
- metadata.gz: 714a91a71b00f71e2e017fa3653d31c29dab201c54c027c6023ae084a64bb501207139460c9dc62ad5166a70f4afb10ae50e6c403a69407874996c37ec155ade
7
- data.tar.gz: be2fc1f21d70e40e4c011a5f71c2af1d3d0a4d24c53b1ac85268d3693350e59605db3a114d0719625065a6267075ab8d74ce1b7b0a7a0cbb376b7df7d2a0a968
6
+ metadata.gz: 91f2894e4755c2a58d1d8b7a8730ae61a97f801aca615ba0f5fac246874db03b7b9ddbb7f35f7f00a49549334997715f1de8014129014a80e7af2f3ebab6f4ab
7
+ data.tar.gz: b9abffff4d72c23aa4caf89c4f6e12ea0abfffd5c3661bff11a7655cd7becb0c6d2ce1a674dd0b55634301d0c50892bdfb27d034eaf3bd493cbfe638ceb08967
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  AllCops:
3
- TargetRubyVersion: 2.7
3
+ TargetRubyVersion: 2.7.1
4
4
  NewCops: enable
5
5
 
6
6
  Metrics/LineLength:
@@ -1 +1 @@
1
- 2.7
1
+ 2.7.1
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codebreaker_marian (0.2.3)
4
+ codebreaker_marian (0.2.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -2,6 +2,8 @@
2
2
 
3
3
  require 'yaml'
4
4
  require_relative 'lib/codebreaker_marian/entities/game'
5
+ require_relative 'lib/codebreaker_marian/modules/validator'
6
+ require_relative 'lib/codebreaker_marian/entities/user'
5
7
  require_relative 'lib/codebreaker_marian/entities/data_storage'
6
8
  require_relative 'lib/codebreaker_marian/entities/processor'
7
9
  require_relative 'lib/codebreaker_marian/entities/statistics'
@@ -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
@@ -17,7 +17,7 @@ module Codebreaker
17
17
  private
18
18
 
19
19
  def stats_sort(scores)
20
- scores.sort_by! { |score| [score[:attempts_used], score[:hints_used]] }.reverse
20
+ scores.sort_by! { |score| [score[:attempts_used], score[:hints_used]] }
21
21
  end
22
22
  end
23
23
  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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Codebreaker
4
- VERSION = '0.2.3'
4
+ VERSION = '0.2.8'
5
5
  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.3
4
+ version: 0.2.8
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-07-31 00:00:00.000000000 Z
11
+ date: 2020-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -178,6 +178,8 @@ files:
178
178
  - lib/codebreaker_marian/entities/game.rb
179
179
  - lib/codebreaker_marian/entities/processor.rb
180
180
  - lib/codebreaker_marian/entities/statistics.rb
181
+ - lib/codebreaker_marian/entities/user.rb
182
+ - lib/codebreaker_marian/modules/validator.rb
181
183
  - lib/codebreaker_marian/version.rb
182
184
  homepage: https://github.com/marikrebega/RubyGarage_2_Codebreaker_gem
183
185
  licenses: []
@@ -198,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
200
  - !ruby/object:Gem::Version
199
201
  version: '0'
200
202
  requirements: []
201
- rubygems_version: 3.1.4
203
+ rubygems_version: 3.1.2
202
204
  signing_key:
203
205
  specification_version: 4
204
206
  summary: CodebreakerMarian app