chess 0.3.0 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +12 -0
  3. data/.github/workflows/ruby.yml +58 -0
  4. data/.gitignore +3 -2
  5. data/.rubocop.yml +10 -142
  6. data/Gemfile.lock +74 -0
  7. data/README.md +26 -22
  8. data/Rakefile +2 -1
  9. data/chess.gemspec +11 -7
  10. data/docs/Chess/BadNotationError.html +237 -0
  11. data/docs/Chess/Board.html +1759 -0
  12. data/docs/Chess/CGame.html +2296 -0
  13. data/docs/Chess/Game.html +1277 -0
  14. data/docs/Chess/Gnuchess.html +366 -0
  15. data/docs/Chess/IllegalMoveError.html +137 -0
  16. data/docs/Chess/InvalidFenFormatError.html +237 -0
  17. data/docs/Chess/InvalidPgnFormatError.html +217 -0
  18. data/docs/Chess/Pgn.html +1477 -0
  19. data/docs/Chess/UTF8Notation.html +270 -0
  20. data/docs/Chess.html +157 -0
  21. data/docs/_index.html +217 -0
  22. data/docs/class_list.html +51 -0
  23. data/docs/css/common.css +1 -0
  24. data/docs/css/full_list.css +58 -0
  25. data/docs/css/style.css +497 -0
  26. data/docs/file.README.html +116 -0
  27. data/docs/file_list.html +56 -0
  28. data/docs/frames.html +17 -0
  29. data/docs/index.html +116 -0
  30. data/docs/js/app.js +314 -0
  31. data/docs/js/full_list.js +216 -0
  32. data/docs/js/jquery.js +4 -0
  33. data/docs/method_list.html +531 -0
  34. data/docs/top-level-namespace.html +110 -0
  35. data/ext/chess.c +1 -1
  36. data/ext/common.h +7 -3
  37. data/ext/extconf.rb +1 -1
  38. data/lib/chess/game.rb +68 -66
  39. data/lib/chess/gnuchess.rb +49 -53
  40. data/lib/chess/pgn.rb +13 -15
  41. data/lib/chess/version.rb +1 -1
  42. data/test/test_big_pgn_collection.rb +1 -1
  43. data/test/test_checkmate.rb +4 -4
  44. data/test/test_errors.rb +22 -0
  45. data/test/test_fifty_rule_move.rb +2 -2
  46. data/test/test_game.rb +82 -0
  47. data/test/test_helper.rb +15 -0
  48. data/test/test_insufficient_material.rb +4 -4
  49. data/test/test_move_generator.rb +3 -2
  50. data/test/test_pgn.rb +35 -0
  51. data/test/test_pgn_collection.rb +2 -2
  52. data/test/test_stalemate.rb +1 -1
  53. data/test/test_threefold_repetition.rb +1 -1
  54. data/test/test_uci_castling.rb +34 -0
  55. metadata +118 -1236
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4cc1db854c4be0ade586baddccf252d377a4429e4ec9663ca893c02678c97113
4
- data.tar.gz: '0494c3fea2208b2d4c47c705678b6595d11578b5da6296ef8136af79b4ae95fe'
3
+ metadata.gz: 00f424b92a6c4551574198f0f90be9b15a868ff51793e78c2d203b757ad7c735
4
+ data.tar.gz: 2fe26a9a27b7a2ab68745ed8469dd3a0fe4a0222a33662e0f1a669b7ecd8c9db
5
5
  SHA512:
6
- metadata.gz: a7e2971e83ee9aa24caccbd23825df3bfc959c47ab8d68db5ae48af24fcc78044854a1339091c7c54a9f536707fe16ca512adb886c835f5ec32a9891a286623b
7
- data.tar.gz: 8008eb2294ec8b9860dd03e02fd7207cfd37b4292f6d16b5ba1a24e047bdb42e62b5a05e6ac21f126899a8a4299c45bf42310c1e2001277dcf76d86a6a2547ea
6
+ metadata.gz: 1f595f0999604ca4599c178276e54dbd0394f3c637116958c89887b452ece5d8b43fa9e3930a08577d922b35edcbbf95a86a0314dc8a5ee5aee22e522a5e2069
7
+ data.tar.gz: 151b85e0ea1605ede20d1d8615903b6ccc2a51586ab5ab309405d70c4d3af1d9b64f3745859b0df5740101168f511288c64f1eed5b41ea131e1014409671523e
@@ -0,0 +1,12 @@
1
+ # These are supported funding model platforms
2
+
3
+ # github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4
+ # patreon: # Replace with a single Patreon username
5
+ # open_collective: # Replace with a single Open Collective username
6
+ # ko_fi: # Replace with a single Ko-fi username
7
+ # tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
+ # community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
+ # liberapay: # Replace with a single Liberapay username
10
+ # issuehunt: # Replace with a single IssueHunt username
11
+ # otechie: # Replace with a single Otechie username
12
+ custom: https://www.paypal.me/epilotto
@@ -0,0 +1,58 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [master]
13
+ pull_request:
14
+ branches: [master]
15
+
16
+ jobs:
17
+ test:
18
+ runs-on: ubuntu-latest
19
+ strategy:
20
+ matrix:
21
+ ruby-version: ['2.6', '2.7', '3.0', '3.1']
22
+
23
+ steps:
24
+ - uses: actions/checkout@v2
25
+ - name: Set up Ruby
26
+ uses: ruby/setup-ruby@v1
27
+ with:
28
+ ruby-version: ${{ matrix.ruby-version }}
29
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
30
+ - name: Compile extension
31
+ working-directory: ./ext
32
+ run: |
33
+ ruby extconf.rb
34
+ make
35
+ - name: Run tests
36
+ run: bundle exec rake test
37
+ env:
38
+ CODECOV: true
39
+ # - name: Upload coverage report to Codecov
40
+ # uses: codecov/codecov-action@v1
41
+ # with:
42
+ # file: ./coverage/.resultset.json
43
+
44
+ rubocop:
45
+ runs-on: ubuntu-latest
46
+ strategy:
47
+ matrix:
48
+ ruby-version: ['2.6', '2.7', '3.0', '3.1']
49
+
50
+ steps:
51
+ - uses: actions/checkout@v2
52
+ - name: Set up Ruby
53
+ uses: ruby/setup-ruby@v1
54
+ with:
55
+ ruby-version: ${{ matrix.ruby-version }}
56
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
57
+ - name: Run Rubocop
58
+ run: bundle exec rubocop
data/.gitignore CHANGED
@@ -1,11 +1,12 @@
1
1
  *.gem
2
2
  .bundle
3
+ .byebug_history
4
+ .ruby-version
3
5
  .yardoc/
4
- doc/
6
+ coverage/
5
7
  ext/chess
6
8
  ext/Makefile
7
9
  ext/*.bundle
8
10
  ext/*.o
9
- Gemfile.lock
10
11
  main.rb
11
12
  pkg/*
data/.rubocop.yml CHANGED
@@ -1,55 +1,19 @@
1
- require: rubocop-performance
1
+ require:
2
+ - rubocop-minitest
3
+ - rubocop-performance
4
+ - rubocop-rake
2
5
 
3
6
  AllCops:
4
- Exclude:
5
- - bin/*
6
- - db/migrate/*
7
- - db/schema.rb
8
- - db/seeds.rb
9
- - lib/*/Gemfile
10
- - lib/*/Rakefile
11
- - lib/*/bin/*
12
- - lib/*/*.gemspec
13
- - node_modules/**/*
14
- - spec/**/*
15
- - tmp/**/*
16
-
17
- Gemspec/RequiredRubyVersion:
18
- Enabled: false
7
+ NewCops: enable
8
+ TargetRubyVersion: 2.5
19
9
 
20
- Layout/AlignHash:
10
+ Layout/LineLength:
21
11
  Enabled: false
22
-
23
- Layout/AlignParameters:
24
- EnforcedStyle: with_fixed_indentation
25
-
26
- Layout/EmptyLinesAroundBlockBody:
27
- EnforcedStyle: no_empty_lines
28
-
29
- Layout/EmptyLinesAroundClassBody:
30
- EnforcedStyle: no_empty_lines
31
-
32
- Layout/IndentationConsistency:
33
- EnforcedStyle: rails
34
-
35
- Layout/IndentFirstArrayElement:
36
- EnforcedStyle: consistent
37
-
38
- Layout/IndentFirstHashElement:
39
- EnforcedStyle: consistent
40
-
41
- Layout/MultilineMethodCallIndentation:
42
- EnforcedStyle: indented
43
-
44
- Layout/MultilineOperationIndentation:
45
- EnforcedStyle: indented
12
+ Max: 120
46
13
 
47
14
  Metrics/AbcSize:
48
15
  Enabled: false
49
16
 
50
- Metrics/BlockLength:
51
- Max: 100
52
-
53
17
  Metrics/BlockNesting:
54
18
  Max: 4
55
19
 
@@ -59,108 +23,24 @@ Metrics/ClassLength:
59
23
  Metrics/CyclomaticComplexity:
60
24
  Max: 15
61
25
 
62
- Metrics/LineLength:
63
- Enabled: false
64
- Max: 120
65
-
66
26
  Metrics/MethodLength:
67
27
  Max: 100
68
28
 
69
- Metrics/ModuleLength:
70
- Max: 1000
71
-
72
- Metrics/ParameterLists:
73
- Enabled: false
74
-
75
29
  Metrics/PerceivedComplexity:
76
30
  Max: 20
77
31
 
78
- Performance/Casecmp:
79
- Enabled: false
80
-
81
- Rails:
82
- Enabled: true
83
-
84
- Rails/HasAndBelongsToMany:
85
- Enabled: false
86
-
87
- Rails/HasManyOrHasOneDependent:
88
- Enabled: false
89
-
90
- Rails/InverseOf:
91
- Enabled: false
92
-
93
- Rails/OutputSafety:
94
- Enabled: false
95
-
96
- Rails/SafeNavigation:
97
- ConvertTry: true
98
-
99
- Rails/SkipsModelValidations:
100
- Enabled: false
101
-
102
- Rails/UnknownEnv:
103
- Environments:
104
- - development
105
- - test
106
- - simulation
107
- - staging
108
- - production
109
-
110
- Style/AsciiComments:
111
- Enabled: false
112
-
113
- Style/BlockDelimiters:
114
- Enabled: false
115
-
116
- Style/BracesAroundHashParameters:
117
- Enabled: false
118
-
119
- Style/ClassAndModuleChildren:
120
- Enabled: false
121
-
122
- Style/ClassVars:
32
+ Minitest/AssertPredicate:
123
33
  Enabled: false
124
34
 
125
- Style/ConditionalAssignment:
35
+ Minitest/MultipleAssertions:
126
36
  Enabled: false
127
37
 
128
- Style/Documentation:
129
- Enabled: false
130
-
131
- Style/EmptyMethod:
132
- EnforcedStyle: expanded
133
-
134
- Style/FormatStringToken:
135
- EnforcedStyle: template
136
-
137
38
  Style/FrozenStringLiteralComment:
138
39
  Enabled: false
139
40
 
140
41
  Style/GlobalVars:
141
42
  Enabled: false
142
43
 
143
- Style/GuardClause:
144
- Enabled: false
145
-
146
- Style/IfUnlessModifier:
147
- Enabled: false
148
-
149
- Style/Lambda:
150
- EnforcedStyle: literal
151
-
152
- Style/MethodDefParentheses:
153
- Enabled: false
154
-
155
- Style/NegatedIf:
156
- Enabled: false
157
-
158
- Style/Next:
159
- Enabled: false
160
-
161
- Style/NumericPredicate:
162
- Enabled: false
163
-
164
44
  Style/RaiseArgs:
165
45
  EnforcedStyle: compact
166
46
 
@@ -172,15 +52,3 @@ Style/RedundantSelf:
172
52
 
173
53
  Style/RegexpLiteral:
174
54
  AllowInnerSlashes: true
175
-
176
- Style/RescueModifier:
177
- Enabled: false
178
-
179
- Style/SafeNavigation:
180
- Enabled: true
181
-
182
- Style/SingleLineMethods:
183
- Enabled: false
184
-
185
- Style/SymbolArray:
186
- Enabled: false
data/Gemfile.lock ADDED
@@ -0,0 +1,74 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ chess (0.3.3)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ ast (2.4.2)
10
+ byebug (11.1.3)
11
+ codecov (0.6.0)
12
+ simplecov (>= 0.15, < 0.22)
13
+ docile (1.4.0)
14
+ json (2.6.2)
15
+ minitest (5.16.2)
16
+ parallel (1.22.1)
17
+ parser (3.1.2.0)
18
+ ast (~> 2.4.1)
19
+ rainbow (3.1.1)
20
+ rake (13.0.6)
21
+ regexp_parser (2.5.0)
22
+ rexml (3.2.5)
23
+ rubocop (1.31.2)
24
+ json (~> 2.3)
25
+ parallel (~> 1.10)
26
+ parser (>= 3.1.0.0)
27
+ rainbow (>= 2.2.2, < 4.0)
28
+ regexp_parser (>= 1.8, < 3.0)
29
+ rexml (>= 3.2.5, < 4.0)
30
+ rubocop-ast (>= 1.18.0, < 2.0)
31
+ ruby-progressbar (~> 1.7)
32
+ unicode-display_width (>= 1.4.0, < 3.0)
33
+ rubocop-ast (1.19.1)
34
+ parser (>= 3.1.1.0)
35
+ rubocop-minitest (0.20.1)
36
+ rubocop (>= 0.90, < 2.0)
37
+ rubocop-performance (1.14.2)
38
+ rubocop (>= 1.7.0, < 2.0)
39
+ rubocop-ast (>= 0.4.0)
40
+ rubocop-rake (0.6.0)
41
+ rubocop (~> 1.0)
42
+ ruby-progressbar (1.11.0)
43
+ simplecov (0.21.2)
44
+ docile (~> 1.1)
45
+ simplecov-html (~> 0.11)
46
+ simplecov_json_formatter (~> 0.1)
47
+ simplecov-html (0.12.3)
48
+ simplecov_json_formatter (0.1.4)
49
+ unicode-display_width (2.2.0)
50
+ webrick (1.7.0)
51
+ yard (0.9.28)
52
+ webrick (~> 1.7.0)
53
+
54
+ PLATFORMS
55
+ ruby
56
+ x86_64-darwin-18
57
+ x86_64-darwin-19
58
+
59
+ DEPENDENCIES
60
+ bundler (~> 2)
61
+ byebug (~> 11)
62
+ chess!
63
+ codecov (~> 0)
64
+ minitest (~> 5)
65
+ rake (~> 13)
66
+ rubocop (~> 1)
67
+ rubocop-minitest (~> 0)
68
+ rubocop-performance (~> 1)
69
+ rubocop-rake (~> 0)
70
+ simplecov (~> 0)
71
+ yard (>= 0.9.20)
72
+
73
+ BUNDLED WITH
74
+ 2.3.8
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
1
  # Chess
2
2
 
3
- A fast Ruby library to play chess with Ruby. This library is quite fast
4
- because rappresent the game situations with bitboards. In addition, the move
5
- generator is written in C as a Ruby extension.
3
+ ![build](https://github.com/pioz/chess/workflows/Ruby/badge.svg)
4
+ [![codecov](https://codecov.io/gh/pioz/chess/branch/master/graph/badge.svg?token=bsSUOW6wWa)](https://codecov.io/gh/pioz/chess)
5
+
6
+ A fast Ruby gem to play chess with Ruby. This library is quite fast because manage game situations with [bitboards](https://en.wikipedia.org/wiki/Bitboard). Also, the move generator is written in C as a Ruby extension.
6
7
 
7
8
  ## Requirements
8
9
 
9
- - Ruby 2.0 or higher
10
+ - Ruby 2.5 or higher
10
11
 
11
12
  ## Installation
12
13
 
@@ -14,23 +15,26 @@ generator is written in C as a Ruby extension.
14
15
 
15
16
  ## Usage
16
17
 
17
- require 'chess'
18
- g = Chess::Game.new
19
- until g.over?
20
- begin
21
- print "Give me a #{g.active_player} move: "
22
- input = gets.chop
23
- break if input == 'quit'
24
- g << input
25
- puts g
26
- puts g.moves.last
27
- rescue Chess::IllegalMoveError => e
28
- puts 'Illegal move!'
29
- end
30
- end
31
- puts g.status
32
-
33
- **Documentation** is available [here](http://pioz.github.com/chess).
18
+ ```ruby
19
+ require 'chess'
20
+
21
+ g = Chess::Game.new
22
+ until g.over?
23
+ begin
24
+ print "Give me a #{g.active_player} move: "
25
+ input = gets.chop
26
+ break if input == 'quit'
27
+ g << input
28
+ puts g
29
+ puts g.moves.last
30
+ rescue Chess::IllegalMoveError => e
31
+ puts 'Illegal move!'
32
+ end
33
+ end
34
+ puts g.status
35
+ ```
36
+
37
+ **Documentation** is available **[here](http://pioz.github.io/chess)**.
34
38
 
35
39
  ## Questions or problems?
36
40
 
@@ -40,5 +44,5 @@ pull request.
40
44
 
41
45
  ## Copyright
42
46
 
43
- Copyright (c) 2017 [Enrico Pilotto (@pioz)](https://github.com/pioz). See
47
+ Copyright (c) 2021 [Enrico Pilotto (@pioz)](https://github.com/pioz). See
44
48
  [LICENSE](https://github.com/pioz/chess/blob/master/LICENSE) for details.
data/Rakefile CHANGED
@@ -6,6 +6,7 @@ YARD::Rake::YardocTask.new do |t|
6
6
  t.options << '-rREADME.md'
7
7
  t.options << '--title=Chess'
8
8
  t.options << '-mmarkdown'
9
+ t.options << '--output-dir=docs'
9
10
  end
10
11
 
11
12
  require 'rake/testtask'
@@ -13,5 +14,5 @@ task default: :test
13
14
  Rake::TestTask.new do |test|
14
15
  test.libs << 'test'
15
16
  test.warning = true
16
- test.test_files = FileList["test/test_#{ENV['T'] || '*'}.rb"]
17
+ test.test_files = FileList["test/test_#{ENV.fetch('T', '*')}.rb"]
17
18
  end
data/chess.gemspec CHANGED
@@ -11,19 +11,23 @@ Gem::Specification.new do |s|
11
11
  s.description = 'A fast chess library that use bitboards to play chess with Ruby.'
12
12
  s.license = 'LGPLv3'
13
13
 
14
- s.rubyforge_project = 'chess'
15
-
16
14
  s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
15
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
16
  s.extensions = ['ext/extconf.rb']
20
17
  s.require_paths = ['lib']
21
18
 
22
- s.required_ruby_version = '>= 1.9'
19
+ s.metadata['rubygems_mfa_required'] = 'true'
20
+
21
+ s.required_ruby_version = '>= 2.5'
23
22
  s.add_development_dependency 'bundler', '~> 2'
23
+ s.add_development_dependency 'byebug', '~> 11'
24
+ s.add_development_dependency 'codecov', '~> 0'
24
25
  s.add_development_dependency 'minitest', '~> 5'
25
- s.add_development_dependency 'rake', '~> 12'
26
- s.add_development_dependency 'rubocop', '~> 0.71'
26
+ s.add_development_dependency 'rake', '~> 13'
27
+ s.add_development_dependency 'rubocop', '~> 1'
28
+ s.add_development_dependency 'rubocop-minitest', '~> 0'
27
29
  s.add_development_dependency 'rubocop-performance', '~> 1'
28
- s.add_development_dependency 'yard', '~> 0.9'
30
+ s.add_development_dependency 'rubocop-rake', '~> 0'
31
+ s.add_development_dependency 'simplecov', '~> 0'
32
+ s.add_development_dependency 'yard', '>= 0.9.20'
29
33
  end