Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
b8b6ed6
change setup
Mechetel Feb 23, 2021
4f8c835
add entities like player, game, difficulty
Mechetel Feb 25, 2021
a2ad60a
refactor by rubocop
Mechetel Feb 25, 2021
4f5f9bb
add validations in class
Mechetel Mar 4, 2021
d7aa03b
end gem with no specs
Mechetel Mar 5, 2021
8aec67f
add libs to require
Mechetel Mar 5, 2021
2cf9d87
fix naming error
Mechetel Mar 5, 2021
136d1f5
refactor naming difficulty to level
Mechetel Mar 5, 2021
623636a
fix
Mechetel Mar 5, 2021
67da80b
delete useless validations
Mechetel Mar 5, 2021
a5f7790
fix
Mechetel Mar 5, 2021
7e9cab4
add errors to difficulty
Mechetel Mar 6, 2021
7c6fde5
fix naming
Mechetel Mar 6, 2021
d27973d
remove useless join method
Mechetel Mar 6, 2021
375af5a
add validations to guess
Mechetel Mar 6, 2021
5d926e2
fix naming
Mechetel Mar 6, 2021
6e7d1f8
fix generating method
Mechetel Mar 6, 2021
a53d67f
fix getters
Mechetel Mar 6, 2021
65020e7
fix getters
Mechetel Mar 6, 2021
5b0e429
add exceptiond to require
Mechetel Mar 6, 2021
7ff7849
fix check method
Mechetel Mar 6, 2021
0a6bb27
refactor getters to instance vars
Mechetel Mar 6, 2021
5caddb8
refactor line priority
Mechetel Mar 6, 2021
b9ddd53
add pry debuger
Mechetel Mar 10, 2021
78d1b60
change naming
Mechetel Mar 10, 2021
c17ba79
remove unnecessary errors
Mechetel Mar 10, 2021
a41c043
fix check method
Mechetel Mar 10, 2021
c2fc996
remove validations
Mechetel Mar 10, 2021
662500a
refactor
Mechetel Mar 10, 2021
c5e57b8
add new error class
Mechetel Mar 10, 2021
292664b
add specs
Mechetel Mar 10, 2021
a309b9e
corrected with rubocop
Mechetel Mar 10, 2021
957597d
almost done rafactoring specs
Mechetel Mar 10, 2021
9921bf5
change sort by difficulty
Mechetel Mar 11, 2021
341e01f
fix naming in module
Mechetel Mar 11, 2021
3ffb9d1
move validations to module
Mechetel Mar 11, 2021
906b04d
refactor many validation classes to one
Mechetel Mar 11, 2021
544b496
change logic of validation class
Mechetel Mar 11, 2021
50e022e
undo last commit
Mechetel Mar 11, 2021
978e4a0
test sorting by attempts
Mechetel Mar 12, 2021
ad97b17
undo test sorting
Mechetel Mar 12, 2021
766d9ab
change .split(NOTHING_SYMBOL) to .chars
Mechetel Mar 18, 2021
02853e4
change all about hints
Mechetel Mar 18, 2021
05ec41e
delete new_game method
Mechetel Mar 18, 2021
3c8cd5c
change store method + remove nothing symbol
Mechetel Mar 18, 2021
ee73ec0
refactor
Mechetel Mar 18, 2021
d297ba6
add new method
Mechetel Mar 19, 2021
694a349
hints total fix
Mechetel Mar 19, 2021
9e92f43
refactor to fix lintering
Mechetel Mar 19, 2021
f4c115c
refactor
Mechetel Mar 20, 2021
5a3284f
refactor by rubocop
Mechetel Mar 20, 2021
c54ffbe
refactor check method
Mechetel Mar 20, 2021
36d06d7
some more refactor check method
Mechetel Mar 20, 2021
a093280
spec vars to consts
Mechetel Mar 20, 2021
c6f2084
refactor after review
Mechetel Apr 15, 2021
648d18a
refactor: change lines up
Mechetel Aug 1, 2021
428f906
fix cops
Mechetel Aug 23, 2021
a7f7a8d
refactor: something
Mechetel Dec 5, 2022
df5c5c2
refactor: something
Mechetel Dec 5, 2022
0d9752b
refactor: something
Mechetel Dec 5, 2022
3afb733
refactor: something
Mechetel Dec 5, 2022
27228a4
refactor: something
Mechetel Dec 5, 2022
127a5c9
refactor: something
Mechetel Dec 5, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 63 additions & 7 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,69 @@
version: 2.1
jobs:
build:

executors:
default:
working_directory: ~/repo
description: The official CircleCI Ruby Docker image
docker:
- image: ruby:2.4.2
- image: circleci/ruby:2.7.2

caches:
- &bundle_cache_full v2-repo-{{ checksum "Gemfile.lock" }}
- &bundle_cache v2-repo-

commands:
defaults:
steps:
- checkout
- restore_cache:
keys:
- *bundle_cache_full
- *bundle_cache
- run: bundle install --path vendor/bundle
- save_cache:
key: *bundle_cache_full
paths:
- vendor/bundle
run_linters:
description: command to start linters
steps:
- run:
name: rubocop
command: bundle exec rubocop
- run:
name: fasterer
command: bundle exec fasterer
run_specs:
steps:
- run:
name: Run the default task
name: run specs
command: |
gem install bundler -v 2.2.4
bundle install
bundle exec rake
mkdir /tmp/test-results
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
bundle exec rspec --format progress \
--out /tmp/test-results/rspec.xml \
$TEST_FILES
- store_artifacts:
path: ~/repo/coverage
destination: coverage

jobs:
lintering:
executor: default
steps:
- defaults
- run_linters
run_specs:
executor: default
steps:
- defaults
- run_specs

workflows:
version: 2.1
build:
jobs:
- lintering
- run_specs:
requires:
- lintering
22 changes: 22 additions & 0 deletions .fasterer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
speedups:
rescue_vs_respond_to: true
module_eval: true
shuffle_first_vs_sample: true
for_loop_vs_each: true
each_with_index_vs_while: false
map_flatten_vs_flat_map: true
reverse_each_vs_reverse_each: true
select_first_vs_detect: true
sort_vs_sort_by: true
fetch_with_argument_vs_block: true
keys_each_vs_each_key: true
hash_merge_bang_vs_hash_brackets: true
block_vs_symbol_to_proc: true
proc_call_vs_yield: true
gsub_vs_tr: true
select_last_vs_reverse_detect: true
getter_vs_attr_reader: true
setter_vs_attr_writer: true

exclude_paths:
- 'vendor/**/*.rb'
24 changes: 18 additions & 6 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
Style/StringLiterals:
Enabled: true
EnforcedStyle: double_quotes
require:
- rubocop-performance
- rubocop-rspec

Style/StringLiteralsInInterpolation:
Enabled: true
EnforcedStyle: double_quotes
AllCops:
NewCops: enable
Exclude:
- "codebreaker.gemspec"
- "vendor/bundle/**/*"

Metrics/BlockLength:
Exclude:
- "spec/codebreaker/**/*"

Style/FrozenStringLiteralComment:
Enabled: false

Style/Documentation:
Enabled: false

Layout/LineLength:
Max: 120
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ruby-2.7.2
10 changes: 1 addition & 9 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
# frozen_string_literal: true

source "https://rubygems.org"
source 'https://rubygems.org'

# Specify your gem's dependencies in codebreaker.gemspec
gemspec

gem "rake", "~> 13.0"

gem "rspec", "~> 3.0"

gem "rubocop", "~> 0.80"
149 changes: 149 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
PATH
remote: .
specs:
codebreaker (0.1.0)

GEM
remote: https://rubygems.org/
specs:
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
ast (2.4.2)
axiom-types (0.1.1)
descendants_tracker (~> 0.0.4)
ice_nine (~> 0.11.0)
thread_safe (~> 0.3, >= 0.3.1)
byebug (11.1.3)
coderay (1.1.3)
coercible (1.0.0)
descendants_tracker (~> 0.0.1)
colorize (0.8.1)
concurrent-ruby (1.1.8)
descendants_tracker (0.0.4)
thread_safe (~> 0.3, >= 0.3.1)
diff-lcs (1.4.4)
docile (1.3.5)
equalizer (0.0.11)
erubis (2.7.0)
fasterer (0.9.0)
colorize (~> 0.7)
ruby_parser (>= 3.14.1)
flay (2.12.1)
erubis (~> 2.7.0)
path_expander (~> 1.0)
ruby_parser (~> 3.0)
sexp_processor (~> 4.0)
flog (4.6.4)
path_expander (~> 1.0)
ruby_parser (~> 3.1, > 3.1.0)
sexp_processor (~> 4.8)
i18n (1.8.10)
concurrent-ruby (~> 1.0)
ice_nine (0.11.2)
kwalify (0.7.2)
launchy (2.5.0)
addressable (~> 2.7)
method_source (1.0.0)
parallel (1.20.1)
parser (3.0.1.0)
ast (~> 2.4.1)
path_expander (1.1.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
pry-byebug (3.9.0)
byebug (~> 11.0)
pry (~> 0.13.0)
psych (3.3.1)
public_suffix (4.0.6)
rainbow (3.0.0)
rake (13.0.3)
reek (6.0.3)
kwalify (~> 0.7.0)
parser (~> 3.0.0)
psych (~> 3.1)
rainbow (>= 2.0, < 4.0)
regexp_parser (2.1.1)
rexml (3.2.5)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.1)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-support (3.10.2)
rubocop (1.12.1)
parallel (~> 1.10)
parser (>= 3.0.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml
rubocop-ast (>= 1.2.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.4.1)
parser (>= 2.7.1.5)
rubocop-performance (1.10.2)
rubocop (>= 0.90.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rake (0.5.1)
rubocop
rubocop-rspec (2.2.0)
rubocop (~> 1.0)
rubocop-ast (>= 1.1.0)
ruby-progressbar (1.11.0)
ruby_parser (3.15.1)
sexp_processor (~> 4.9)
rubycritic (4.6.1)
flay (~> 2.8)
flog (~> 4.4)
launchy (>= 2.0.0)
parser (>= 2.6.0)
rainbow (~> 3.0)
reek (~> 6.0, < 7.0)
ruby_parser (~> 3.8)
simplecov (>= 0.17.0)
tty-which (~> 0.4.0)
virtus (~> 1.0)
sexp_processor (4.15.2)
simplecov (0.21.2)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.2)
thread_safe (0.3.6)
tty-which (0.4.2)
unicode-display_width (2.0.0)
virtus (1.0.5)
axiom-types (~> 0.1)
coercible (~> 1.0)
descendants_tracker (~> 0.0, >= 0.0.3)
equalizer (~> 0.0, >= 0.0.9)

PLATFORMS
ruby
x86_64-darwin-20

DEPENDENCIES
codebreaker!
fasterer (~> 0.9.0)
i18n (~> 1.8.10)
pry-byebug (~> 3.9.0)
rake (~> 13.0.3)
rspec (~> 3.10.0)
rubocop (~> 1.12.1)
rubocop-performance (~> 1.10.2)
rubocop-rake (~> 0.5.1)
rubocop-rspec (~> 2.2.0)
rubycritic (~> 4.6.1)
simplecov (~> 0.21.2)

BUNDLED WITH
2.2.3
8 changes: 3 additions & 5 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
# frozen_string_literal: true

require "bundler/gem_tasks"
require "rspec/core/rake_task"
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:spec)

require "rubocop/rake_task"
require 'rubocop/rake_task'

RuboCop::RakeTask.new

Expand Down
7 changes: 3 additions & 4 deletions bin/console
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#!/usr/bin/env ruby
# frozen_string_literal: true

require "bundler/setup"
require "codebreaker"
require 'bundler/setup'
require 'codebreaker'

# You can add fixtures and/or initialization code here to make experimenting
# with your gem easier. You can also use a different console, if you like.
Expand All @@ -11,5 +10,5 @@ require "codebreaker"
# require "pry"
# Pry.start

require "irb"
require 'irb'
IRB.start(__FILE__)
39 changes: 19 additions & 20 deletions codebreaker.gemspec
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# frozen_string_literal: true

require_relative "lib/codebreaker/version"

Gem::Specification.new do |spec|
Expand All @@ -8,30 +6,31 @@ Gem::Specification.new do |spec|
spec.authors = ["mechetel"]
spec.email = ["dima.homa5@gmail.com"]

spec.summary = "TODO: Write a short summary, because RubyGems requires one."
spec.description = "TODO: Write a longer description or delete this line."
spec.homepage = "TODO: Put your gem's website or public repo URL here."
spec.summary = 'Codebreaker game'
spec.description = 'Second rubygarage task'
spec.homepage = 'https://github.com/mechetel/codebreaker'
spec.license = "MIT"
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")

spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.2")

spec.metadata["homepage_uri"] = spec.homepage
spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
spec.metadata["source_code_uri"] = "https://github.com/mechetel/codebreaker"

# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
spec.files = Dir.chdir(File.expand_path(__dir__)) do
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
end
spec.bindir = "exe"
spec.bindir = 'exe'
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]

# Uncomment to register a new dependency of your gem
# spec.add_dependency "example-gem", "~> 1.0"

# For more information and examples about making a new gem, checkout our
# guide at: https://bundler.io/guides/creating_gem.html
spec.require_paths = ['lib']

spec.add_development_dependency 'pry-byebug', '~> 3.9.0'
spec.add_development_dependency 'i18n', '~> 1.8.10'
spec.add_development_dependency 'rake', '~> 13.0.3'
spec.add_development_dependency 'fasterer', '~> 0.9.0'
spec.add_development_dependency 'rspec', '~> 3.10.0'
spec.add_development_dependency 'rubocop', '~> 1.12.1'
spec.add_development_dependency 'rubocop-performance', '~> 1.10.2'
spec.add_development_dependency 'rubocop-rspec', '~> 2.2.0'
spec.add_development_dependency 'rubocop-rake', '~> 0.5.1'
spec.add_development_dependency 'rubycritic', '~> 4.6.1'
spec.add_development_dependency 'simplecov', '~> 0.21.2'
end
Loading