bchess 0.1.3 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00fd66fa6baaf3b55a29625cd3df6edfecad327ba01cb5c226aaf4b68745ca4a
4
- data.tar.gz: 640fb109178dd4e040593010ca26a04b5fa4528246822196f8f49ae277bfe36e
3
+ metadata.gz: 6ee977b4ad266d30e964e008cce9ac2004295ffe1af8dea97d8f8c2b9810219f
4
+ data.tar.gz: 61ba542136ff29506701d5e1dc4b2048d5b7648192235c5cd6374260ae08839d
5
5
  SHA512:
6
- metadata.gz: f7b808150824a292823ac9736dfdb8d5cfc6efbb7d73008ae630d4c8ff72ccade6514a6b34af9e5d23da8a4452ff04eecf6a94c023f67a8bf43aaba62c351f7b
7
- data.tar.gz: 9042118b10556c81dbdb19076e0d46cd2a78930f5d4b21eb381e7e6f7a1292996189d51f3532c75ad8c0dcba9da87caded1eb843b9805cba76bcb538aedcc182
6
+ metadata.gz: 5542959193b43cdd80623440f293082c42fe0a1434ad74db240c1c371fdf10cf9b2338a508ebb1e560d0cef4d22994ef1bc7b0ff0a03d7274e861ccd2280c529
7
+ data.tar.gz: ac2616bae4d854b15c003f4938d7a48c66caf4a7c63a37fcad76bf1c52e4bc36ca9c024fb5c7b84b7d0647feb8a717ea26dcf3439c83bac103c0c64dd0099a83
@@ -0,0 +1,35 @@
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
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ test:
21
+
22
+ runs-on: ubuntu-latest
23
+ strategy:
24
+ matrix:
25
+ ruby-version: ['2.6', '2.7', '3.0', '3.1']
26
+
27
+ steps:
28
+ - uses: actions/checkout@v3
29
+ - name: Set up Ruby
30
+ uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - name: Run tests
35
+ run: bundle exec rake spec
data/.gitignore CHANGED
@@ -9,3 +9,6 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ JetBrains iDeA config files
14
+ /.idea/
data/Gemfile.lock CHANGED
@@ -1,33 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bchess (0.1.2)
4
+ bchess (0.1.4)
5
+ treetop (~> 1.6, >= 1.6.11)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
- coderay (1.1.2)
10
- diff-lcs (1.3)
11
- method_source (0.9.0)
10
+ coderay (1.1.3)
11
+ diff-lcs (1.5.0)
12
+ method_source (1.0.0)
12
13
  polyglot (0.3.5)
13
- pry (0.11.3)
14
- coderay (~> 1.1.0)
15
- method_source (~> 0.9.0)
16
- rake (13.0.1)
17
- rspec (3.7.0)
18
- rspec-core (~> 3.7.0)
19
- rspec-expectations (~> 3.7.0)
20
- rspec-mocks (~> 3.7.0)
21
- rspec-core (3.7.1)
22
- rspec-support (~> 3.7.0)
23
- rspec-expectations (3.7.0)
14
+ pry (0.14.1)
15
+ coderay (~> 1.1)
16
+ method_source (~> 1.0)
17
+ rake (13.0.6)
18
+ rspec (3.11.0)
19
+ rspec-core (~> 3.11.0)
20
+ rspec-expectations (~> 3.11.0)
21
+ rspec-mocks (~> 3.11.0)
22
+ rspec-core (3.11.0)
23
+ rspec-support (~> 3.11.0)
24
+ rspec-expectations (3.11.0)
24
25
  diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.7.0)
26
- rspec-mocks (3.7.0)
26
+ rspec-support (~> 3.11.0)
27
+ rspec-mocks (3.11.1)
27
28
  diff-lcs (>= 1.2.0, < 2.0)
28
- rspec-support (~> 3.7.0)
29
- rspec-support (3.7.1)
30
- treetop (1.6.10)
29
+ rspec-support (~> 3.11.0)
30
+ rspec-support (3.11.0)
31
+ treetop (1.6.11)
31
32
  polyglot (~> 0.3)
32
33
 
33
34
  PLATFORMS
@@ -42,4 +43,4 @@ DEPENDENCIES
42
43
  treetop (~> 1.6)
43
44
 
44
45
  BUNDLED WITH
45
- 1.17.2
46
+ 1.17.3
data/bchess.gemspec CHANGED
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
+ spec.add_dependency 'treetop', '~> 1.6', '>= 1.6.11'
24
+
23
25
  spec.add_development_dependency 'bundler', '~> 1.16'
24
26
  spec.add_development_dependency 'pry'
25
27
  spec.add_development_dependency 'rake', '~> 13.0'
@@ -1,9 +1,5 @@
1
1
  module Bchess
2
2
  module BoardHelpers
3
- def field(column, row)
4
- (column + 97).chr + (row + 1).to_s
5
- end
6
-
7
3
  def invalid_data?(piece, column, row)
8
4
  piece.nil? || !(0..7).cover?(column) || !(0..7).cover?(row)
9
5
  end
@@ -1,3 +1,3 @@
1
1
  module Bchess
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.5'.freeze
3
3
  end
data/lib/bchess.rb CHANGED
@@ -1,28 +1,28 @@
1
- require 'bchess/helpers/board_helpers'
2
- require 'bchess/helpers/fen_helpers'
3
- require 'bchess/helpers/board_helpers'
4
- require 'bchess/helpers/castle_helpers'
5
- require 'bchess/helpers/validations'
6
- require 'bchess/helpers/en_passant_helpers'
7
- require 'bchess/helpers/field_between_helpers'
1
+ require_relative 'bchess/helpers/board_helpers'
2
+ require_relative 'bchess/helpers/fen_helpers'
3
+ require_relative 'bchess/helpers/board_helpers'
4
+ require_relative 'bchess/helpers/castle_helpers'
5
+ require_relative 'bchess/helpers/validations'
6
+ require_relative 'bchess/helpers/en_passant_helpers'
7
+ require_relative 'bchess/helpers/field_between_helpers'
8
8
 
9
- require 'bchess/version'
10
- require 'bchess/piece'
11
- require 'bchess/king'
12
- require 'bchess/rook'
13
- require 'bchess/bishop'
14
- require 'bchess/queen'
15
- require 'bchess/knight'
16
- require 'bchess/pawn'
17
- require 'bchess/board'
9
+ require_relative 'bchess/version'
10
+ require_relative 'bchess/piece'
11
+ require_relative 'bchess/king'
12
+ require_relative 'bchess/rook'
13
+ require_relative 'bchess/bishop'
14
+ require_relative 'bchess/queen'
15
+ require_relative 'bchess/knight'
16
+ require_relative 'bchess/pawn'
17
+ require_relative 'bchess/board'
18
18
 
19
- require 'pgn/parser'
20
- require 'pgn/pgn_file'
21
- require 'pgn/pgn_nodes'
22
- require 'pgn/game'
23
- require 'pgn/game_header'
24
- require 'pgn/game_body'
25
- require 'pgn/move_info_parser'
19
+ require_relative 'pgn/parser'
20
+ require_relative 'pgn/pgn_file'
21
+ require_relative 'pgn/pgn_nodes'
22
+ require_relative 'pgn/game'
23
+ require_relative 'pgn/game_header'
24
+ require_relative 'pgn/game_body'
25
+ require_relative 'pgn/move_info_parser'
26
26
 
27
27
  module Bchess
28
28
  class InvalidMoveException < StandardError; end
data/lib/pgn/game_body.rb CHANGED
@@ -29,8 +29,10 @@ module Bchess
29
29
  next
30
30
  end
31
31
 
32
+ piece = move_info.fetch(:piece)
33
+ column, row = piece.column, piece.row
32
34
  board.move(*move_info.values)
33
- @moves << move_info
35
+ @moves << move_info.merge( { piece: piece.class.new(piece.color, column, row) })
34
36
  end
35
37
  end
36
38
 
@@ -1,7 +1,7 @@
1
1
  module Bchess
2
2
  module PGN
3
3
  class GameHeader
4
- attr_reader :header, :player_white, :player_black
4
+ attr_reader :header
5
5
 
6
6
  def initialize(header)
7
7
  @header = header
@@ -40,13 +40,25 @@ module Bchess
40
40
  end
41
41
 
42
42
  def eco
43
- @eco ||= values['Eco']
43
+ @eco ||= values['ECO']
44
44
  end
45
45
 
46
46
  def result
47
47
  @result ||= values['Result']
48
48
  end
49
49
 
50
+ def opening
51
+ @opening ||= values['Opening']
52
+ end
53
+
54
+ def variation
55
+ @variation ||= values['Variation']
56
+ end
57
+
58
+ def plycount
59
+ @plycount ||= values['PlyCount']
60
+ end
61
+
50
62
  def values
51
63
  @values ||= header.create_value_hash
52
64
  end
data/lib/pgn/parser.rb CHANGED
@@ -7,22 +7,22 @@ module Bchess
7
7
  class Parser
8
8
  attr_reader :input, :output, :error, :tree
9
9
 
10
- Treetop.load('./lib/pgn/pgn_rules.treetop')
11
- @@parser = SexpParser.new
10
+ Treetop.load(File.expand_path('pgn_rules.treetop', __dir__))
12
11
 
13
12
  def initialize(input)
13
+ @parser = SexpParser.new
14
14
  @input = input
15
15
  end
16
16
 
17
17
  def parse
18
18
  if input.is_a?(String)
19
- @tree = @@parser.parse(input)
19
+ @tree = @parser.parse(input)
20
20
  elsif input.is_a?(Bchess::PGN::PGNFile)
21
- @tree = @@parser.parse(input.load_games)
21
+ @tree = @parser.parse(input.load_games)
22
22
  end
23
23
 
24
24
  unless tree
25
- raise PGN::ParserException, "Parse error at offset: #{@@parser.index}"
25
+ raise PGN::ParserException, "Parse error: #{@parser.failure_reason}"
26
26
  end
27
27
 
28
28
  sanitize_tree(tree)
data/lib/pgn/pgn_nodes.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'treetop'
2
+
1
3
  module Sexp
2
4
  class PAllGames < Treetop::Runtime::SyntaxNode
3
5
  end
metadata CHANGED
@@ -1,15 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bchess
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Staszek Zawadzki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-19 00:00:00.000000000 Z
11
+ date: 2023-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: treetop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.6.11
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.6'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.6.11
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: bundler
15
35
  requirement: !ruby/object:Gem::Requirement
@@ -87,6 +107,7 @@ executables: []
87
107
  extensions: []
88
108
  extra_rdoc_files: []
89
109
  files:
110
+ - ".github/workflows/ruby.yml"
90
111
  - ".gitignore"
91
112
  - ".rspec"
92
113
  - ".travis.yml"
@@ -145,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
166
  - !ruby/object:Gem::Version
146
167
  version: '0'
147
168
  requirements: []
148
- rubygems_version: 3.0.6
169
+ rubygems_version: 3.3.7
149
170
  signing_key:
150
171
  specification_version: 4
151
172
  summary: Parsing chess PGN games.