sashite-pan 0.2.0 → 1.3.0

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
- SHA1:
3
- metadata.gz: b0df5e40949504b396898aafaa9995e22ceffcc4
4
- data.tar.gz: 21ea803ef8d8bedffe43c49f957ba953a4a906fe
2
+ SHA256:
3
+ metadata.gz: 12680869115791fc6fe8332162cbeaa71174b8ba5c5d74ebb531a805355dae1b
4
+ data.tar.gz: 1147d462de504b726ec26337bf8bfa69b28a8d3e195dbf6b2922b9b3ccaa9cf3
5
5
  SHA512:
6
- metadata.gz: c31d786fe117f64ba500d4be7768cfee0019dfd7a65b7c7412f73ba685d07be1ba823b44d82bdf16224255935ede441805eed99b450a83ed5921db7753d08809
7
- data.tar.gz: 7e74e5ddb41667b0cbfe3b54fe58fbdd556e9619012b1f3c6c988a55da1f6f96840273e0e2eabbef02c0c4e936a21eef58e8e1025dbabae8b4dca40031e69f88
6
+ metadata.gz: 8bcb5c10788c3ba49269612062c6eea16251f372a176efd8c390fbe2e7967562bb4c83a27f7f70dd4f5af4af8f3a9ee33695f5d2a1394d105dff00e65043b45d
7
+ data.tar.gz: 0afbe377cfe6b68a5748f74221ef4e6084c55e0439ae6d7234e6864d5403e65a3b2d19f1c5f6579869a795c994c1ccc3f8b1ef0c8bc5ed2df8734318817c0c9a
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Cyril Wack
1
+ Copyright (c) 2014-2021 Cyril Kato
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,63 +1,102 @@
1
- # Sashite::PAN
1
+ # Portable Action Notation
2
2
 
3
- Ruby implementation of [PAN](http://sashite.wiki/Portable_Action_Notation) parser and emitter.
3
+ [![Version](https://img.shields.io/github/v/tag/sashite/pan.rb?label=Version&logo=github)](https://github.com/sashite/pan.rb/releases)
4
+ [![Yard documentation](https://img.shields.io/badge/Yard-documentation-blue.svg?logo=github)](https://rubydoc.info/github/sashite/pan.rb/main)
5
+ [![CI](https://github.com/sashite/pan.rb/workflows/CI/badge.svg?branch=main)](https://github.com/sashite/pan.rb/actions?query=workflow%3Aci+branch%3Amain)
6
+ [![RuboCop](https://github.com/sashite/pan.rb/workflows/RuboCop/badge.svg?branch=main)](https://github.com/sashite/pan.rb/actions?query=workflow%3Arubocop+branch%3Amain)
7
+ [![License](https://img.shields.io/github/license/sashite/pan.rb?label=License&logo=github)](https://github.com/sashite/pan.rb/raw/main/LICENSE.md)
4
8
 
5
- ## Status
6
-
7
- * [![Gem Version](https://badge.fury.io/rb/sashite-pan.svg)](//badge.fury.io/rb/sashite-pan)
8
- * [![Build Status](https://secure.travis-ci.org/sashite/pan.rb.svg?branch=master)](//travis-ci.org/sashite/pan.rb?branch=master)
9
- * [![Dependency Status](https://gemnasium.com/sashite/pan.rb.svg)](//gemnasium.com/sashite/pan.rb)
9
+ A Ruby interface for data serialization in [PAN](https://developer.sashite.com/specs/portable-action-notation) format.
10
10
 
11
11
  ## Installation
12
12
 
13
13
  Add this line to your application's Gemfile:
14
14
 
15
- gem 'sashite-pan'
15
+ ```ruby
16
+ gem "sashite-pan"
17
+ ```
16
18
 
17
19
  And then execute:
18
20
 
19
- $ bundle
21
+ ```sh
22
+ bundle
23
+ ```
20
24
 
21
25
  Or install it yourself as:
22
26
 
23
- $ gem install sashite-pan
27
+ ```sh
28
+ gem install sashite-pan
29
+ ```
24
30
 
25
- ## API
31
+ ## Usage
26
32
 
27
- Module method:
33
+ Working with PAN can be very simple, for example:
28
34
 
29
35
  ```ruby
30
- Sashite::PAN.load verb, arg1, arg2
31
- ```
36
+ require "sashite/pan"
32
37
 
33
- Set actor's instance methods:
38
+ # Emit a PAN string
34
39
 
35
- * `verb`
36
- * `actor`
37
- * `square`
38
- * `to_a`
40
+ actions = [
41
+ [52, 36, "♙"]
42
+ ]
39
43
 
40
- Movement's instance methods:
44
+ Sashite::PAN.dump(*actions) # => "52,36,♙"
41
45
 
42
- * `verb`
43
- * `src_square`
44
- * `dst_square`
45
- * `to_a`
46
+ # Parse a PAN string
47
+
48
+ Sashite::PAN.parse("52,36,♙") # => [[52, 36, "♙", nil]]
49
+ ```
46
50
 
47
51
  ## Example
48
52
 
53
+ ### Promoting a chess pawn into a knight
54
+
49
55
  ```ruby
50
- require 'sashite-pan'
56
+ Sashite::PAN.dump([12, 4, "♘"]) # => "12,4,♘"
57
+ Sashite::PAN.parse("12,4,♘") # => [[12, 4, "♘", nil]]
58
+ ```
51
59
 
52
- action = Sashite::PAN.load :shift, 42, 43
53
- action.src_square # => 42
54
- action.to_a # => [ :shift, 42, 43 ]
60
+ ### Capturing a rook and promoting a shogi pawn
61
+
62
+ ```ruby
63
+ Sashite::PAN.dump([33, 24, "+P", "R"]) # => "33,24,+P,R"
64
+ Sashite::PAN.parse("33,24,+P,R") # => [[33, 24, "+P", "R"]]
55
65
  ```
56
66
 
57
- ## Contributing
67
+ ### Dropping a shogi pawn
68
+
69
+ ```ruby
70
+ Sashite::PAN.dump([nil, 42, "P"]) # => "*,42,P"
71
+ Sashite::PAN.parse("*,42,P") # => [[nil, 42, "P", nil]]
72
+ ```
73
+
74
+ ***
75
+
76
+ In the context of a game with several possible actions per turn, like in
77
+ Western chess, more than one action could be consider like a move, and joined
78
+ thanks to the [`portable_move_notation`](https://rubygems.org/gems/portable_move_notation) gem.
79
+
80
+ ### Black castles on king-side
81
+
82
+ ```ruby
83
+ Sashite::PAN.dump([60, 62, "♔"], [63, 61, "♖"]) # => "60,62,♔;63,61,♖"
84
+ Sashite::PAN.parse("60,62,♔;63,61,♖") # => [[60, 62, "♔", nil], [63, 61, "♖", nil]]
85
+ ```
86
+
87
+ ### Capturing a white chess pawn en passant
88
+
89
+ ```ruby
90
+ Sashite::PAN.dump([33, 32, "♟"], [32, 40, "♟"]) # => "33,32,♟;32,40,♟"
91
+ Sashite::PAN.parse("33,32,♟;32,40,♟") # => [[33, 32, "♟", nil], [32, 40, "♟", nil]]
92
+ ```
93
+
94
+ ## License
95
+
96
+ The code is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
97
+
98
+ ## About Sashite
99
+
100
+ This [gem](https://rubygems.org/gems/sashite-pan) is maintained by [Sashite](https://sashite.com/).
58
101
 
59
- 1. Fork it
60
- 2. Create your feature branch (`git checkout -b my-new-feature`)
61
- 3. Commit your changes (`git commit -am 'Add some feature'`)
62
- 4. Push to the branch (`git push origin my-new-feature`)
63
- 5. Create new Pull Request
102
+ With some [lines of code](https://github.com/sashite/), let's share the beauty of Chinese, Japanese and Western cultures through the game of chess!
data/lib/sashite-pan.rb CHANGED
@@ -1 +1,6 @@
1
- require 'sashite/pan'
1
+ # frozen_string_literal: true
2
+
3
+ # Sashite namespace
4
+ module Sashite; end
5
+
6
+ require_relative "sashite/pan"
data/lib/sashite/pan.rb CHANGED
@@ -1,30 +1,17 @@
1
- require_relative 'pan/error/not_implemented_verb_error'
2
- require_relative 'pan/error/same_square_error'
3
- require_relative 'pan/movement/capture'
4
- require_relative 'pan/movement/shift'
5
- require_relative 'pan/set_actor/drop'
6
- require_relative 'pan/set_actor/promote'
1
+ # frozen_string_literal: true
7
2
 
8
3
  module Sashite
4
+ # The PAN (Portable Action Notation) module
9
5
  module PAN
10
- def self.load verb, arg1, arg2
11
- case verb
12
-
13
- when :capture
14
- Capture.new arg1, arg2
15
-
16
- when :drop
17
- Drop.new arg1, arg2
18
-
19
- when :promote
20
- Promote.new arg1, arg2
21
-
22
- when :shift
23
- Shift.new arg1, arg2
6
+ def self.dump(*actions)
7
+ Dumper.call(*actions)
8
+ end
24
9
 
25
- else
26
- raise NotImplementedVerbError
27
- end
10
+ def self.parse(string)
11
+ Parser.call(string)
28
12
  end
29
13
  end
30
14
  end
15
+
16
+ require_relative "pan/dumper"
17
+ require_relative "pan/parser"
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sashite
4
+ module PAN
5
+ # Action class
6
+ class Action
7
+ attr_reader :src_square, :dst_square, :piece_name, :piece_hand
8
+
9
+ private_class_method def self.separator
10
+ ";"
11
+ end
12
+
13
+ private
14
+
15
+ def separator
16
+ ","
17
+ end
18
+
19
+ def drop_char
20
+ "*"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "action"
4
+
5
+ module Sashite
6
+ module PAN
7
+ # Dumper class
8
+ class Dumper < Action
9
+ def self.call(*actions)
10
+ actions.map { |action_items| new(*action_items).call }
11
+ .join(separator)
12
+ end
13
+
14
+ def initialize(src_square, dst_square, piece_name, piece_hand = nil)
15
+ super()
16
+
17
+ @src_square = src_square.nil? ? drop_char : Integer(src_square)
18
+ @dst_square = Integer(dst_square)
19
+ @piece_name = piece_name.to_s
20
+ @piece_hand = piece_hand&.to_s
21
+ end
22
+
23
+ def call
24
+ action_items.join(separator)
25
+ end
26
+
27
+ private
28
+
29
+ def action_items
30
+ return [src_square, dst_square, piece_name] if piece_hand.nil?
31
+
32
+ [src_square, dst_square, piece_name, piece_hand]
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "action"
4
+
5
+ module Sashite
6
+ module PAN
7
+ # Parser class
8
+ class Parser < Action
9
+ def self.call(serialized_move)
10
+ serialized_move.split(separator)
11
+ .map { |serialized_action| new(serialized_action).call }
12
+ end
13
+
14
+ def initialize(serialized_action)
15
+ super()
16
+
17
+ action_args = serialized_action.split(separator)
18
+ src_square = action_args.fetch(0)
19
+ @src_square = src_square.eql?(drop_char) ? nil : Integer(src_square)
20
+ @dst_square = Integer(action_args.fetch(1))
21
+ @piece_name = action_args.fetch(2)
22
+ @piece_hand = action_args.fetch(3, nil)
23
+ end
24
+
25
+ def call
26
+ [src_square, dst_square, piece_name, piece_hand]
27
+ end
28
+ end
29
+ end
30
+ end
metadata CHANGED
@@ -1,95 +1,177 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sashite-pan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Cyril Wack
8
- autorequire:
7
+ - Cyril Kato
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-15 00:00:00.000000000 Z
11
+ date: 2021-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: awesome_print
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - "~>"
31
+ - - ">="
18
32
  - !ruby/object:Gem::Version
19
- version: '1.6'
33
+ version: '0'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - "~>"
38
+ - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: '1.6'
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
- name: minitest
42
+ name: byebug
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '5'
47
+ version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '5'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-md
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-performance
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-thread_safety
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: yard
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
46
144
  - !ruby/object:Gem::Version
47
- version: '10'
145
+ version: '0'
48
146
  type: :development
49
147
  prerelease: false
50
148
  version_requirements: !ruby/object:Gem::Requirement
51
149
  requirements:
52
- - - "~>"
150
+ - - ">="
53
151
  - !ruby/object:Gem::Version
54
- version: '10'
55
- description: A Portable Action Notation (PAN) parser and emitter, optimized for programmer
56
- happiness.
57
- email:
58
- - contact@cyril.io
152
+ version: '0'
153
+ description: A Ruby interface for data serialization in PAN (Portable Action Notation)
154
+ format.
155
+ email: contact@cyril.email
59
156
  executables: []
60
157
  extensions: []
61
158
  extra_rdoc_files: []
62
159
  files:
63
- - ".gitignore"
64
- - ".ruby-version"
65
- - ".travis.yml"
66
- - Gemfile
67
160
  - LICENSE.md
68
161
  - README.md
69
- - Rakefile
70
- - VERSION.semver
71
162
  - lib/sashite-pan.rb
72
163
  - lib/sashite/pan.rb
73
- - lib/sashite/pan/error/not_implemented_verb_error.rb
74
- - lib/sashite/pan/error/same_square_error.rb
75
- - lib/sashite/pan/movement.rb
76
- - lib/sashite/pan/movement/capture.rb
77
- - lib/sashite/pan/movement/shift.rb
78
- - lib/sashite/pan/set_actor.rb
79
- - lib/sashite/pan/set_actor/drop.rb
80
- - lib/sashite/pan/set_actor/promote.rb
81
- - sashite-pan.gemspec
82
- - test/_test_helper.rb
83
- - test/test_capture.rb
84
- - test/test_drop.rb
85
- - test/test_pan.rb
86
- - test/test_promote.rb
87
- - test/test_shift.rb
88
- homepage: https://github.com/sashite/pan.rb
164
+ - lib/sashite/pan/action.rb
165
+ - lib/sashite/pan/dumper.rb
166
+ - lib/sashite/pan/parser.rb
167
+ homepage: https://developer.sashite.com/specs/portable-action-notation
89
168
  licenses:
90
169
  - MIT
91
- metadata: {}
92
- post_install_message:
170
+ metadata:
171
+ bug_tracker_uri: https://github.com/sashite/pan.rb/issues
172
+ documentation_uri: https://rubydoc.info/gems/sashite-pan/index
173
+ source_code_uri: https://github.com/sashite/pan.rb
174
+ post_install_message:
93
175
  rdoc_options: []
94
176
  require_paths:
95
177
  - lib
@@ -97,22 +179,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
179
  requirements:
98
180
  - - ">="
99
181
  - !ruby/object:Gem::Version
100
- version: '0'
182
+ version: 2.7.0
101
183
  required_rubygems_version: !ruby/object:Gem::Requirement
102
184
  requirements:
103
185
  - - ">="
104
186
  - !ruby/object:Gem::Version
105
187
  version: '0'
106
188
  requirements: []
107
- rubyforge_project:
108
- rubygems_version: 2.2.2
109
- signing_key:
189
+ rubygems_version: 3.2.15
190
+ signing_key:
110
191
  specification_version: 4
111
- summary: Portable Action Notation (PAN) parser and emitter.
112
- test_files:
113
- - test/_test_helper.rb
114
- - test/test_capture.rb
115
- - test/test_drop.rb
116
- - test/test_pan.rb
117
- - test/test_promote.rb
118
- - test/test_shift.rb
192
+ summary: Data serialization in PAN format.
193
+ test_files: []
data/.gitignore DELETED
@@ -1,22 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- *.bundle
19
- *.so
20
- *.o
21
- *.a
22
- mkmf.log
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.1.2
data/.travis.yml DELETED
@@ -1,3 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1.2
data/Gemfile DELETED
@@ -1,2 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
data/Rakefile DELETED
@@ -1,7 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- require 'rake/testtask'
3
-
4
- Rake::TestTask.new do |t|
5
- end
6
-
7
- task(default: :test)
data/VERSION.semver DELETED
@@ -1 +0,0 @@
1
- 0.2.0
@@ -1,6 +0,0 @@
1
- module Sashite
2
- module PAN
3
- class NotImplementedVerbError < ::StandardError
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Sashite
2
- module PAN
3
- class SameSquareError < ::StandardError
4
- end
5
- end
6
- end
@@ -1,28 +0,0 @@
1
- module Sashite
2
- module PAN
3
- class Movement
4
- attr_reader :src_square, :dst_square
5
-
6
- def initialize src_square, dst_square
7
- raise TypeError unless src_square.is_a? Fixnum
8
- raise TypeError unless dst_square.is_a? Fixnum
9
- raise SameSquareError if src_square == dst_square
10
-
11
- @src_square = src_square
12
- @dst_square = dst_square
13
- end
14
-
15
- def to_a
16
- [
17
- verb,
18
- @src_square,
19
- @dst_square
20
- ]
21
- end
22
-
23
- def verb
24
- self.class.name.split('::').last.downcase.to_sym
25
- end
26
- end
27
- end
28
- end
@@ -1,8 +0,0 @@
1
- require_relative '../movement'
2
-
3
- module Sashite
4
- module PAN
5
- class Capture < Movement
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- require_relative '../movement'
2
-
3
- module Sashite
4
- module PAN
5
- class Shift < Movement
6
- end
7
- end
8
- end
@@ -1,27 +0,0 @@
1
- module Sashite
2
- module PAN
3
- class SetActor
4
- attr_reader :actor, :square
5
-
6
- def initialize square, actor
7
- raise TypeError unless actor.is_a? Symbol
8
- raise TypeError unless square.is_a? Fixnum
9
-
10
- @actor = actor
11
- @square = square
12
- end
13
-
14
- def to_a
15
- [
16
- verb,
17
- @square,
18
- @actor
19
- ]
20
- end
21
-
22
- def verb
23
- self.class.name.split('::').last.downcase.to_sym
24
- end
25
- end
26
- end
27
- end
@@ -1,8 +0,0 @@
1
- require_relative '../set_actor'
2
-
3
- module Sashite
4
- module PAN
5
- class Drop < SetActor
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- require_relative '../set_actor'
2
-
3
- module Sashite
4
- module PAN
5
- class Promote < SetActor
6
- end
7
- end
8
- end
data/sashite-pan.gemspec DELETED
@@ -1,19 +0,0 @@
1
- Gem::Specification.new do |spec|
2
- spec.name = 'sashite-pan'
3
- spec.version = File.read('VERSION.semver')
4
- spec.authors = ['Cyril Wack']
5
- spec.email = ['contact@cyril.io']
6
- spec.summary = %q{Portable Action Notation (PAN) parser and emitter.}
7
- spec.description = %q{A Portable Action Notation (PAN) parser and emitter, optimized for programmer happiness.}
8
- spec.homepage = 'https://github.com/sashite/pan.rb'
9
- spec.license = 'MIT'
10
-
11
- spec.files = `git ls-files -z`.split("\x0")
12
- spec.executables = spec.files.grep(%r{^bin/}) {|f| File.basename(f) }
13
- spec.test_files = spec.files.grep(%r{^test/})
14
- spec.require_paths = ['lib']
15
-
16
- spec.add_development_dependency 'bundler', '~> 1.6'
17
- spec.add_development_dependency 'minitest', '~> 5'
18
- spec.add_development_dependency 'rake', '~> 10'
19
- end
data/test/_test_helper.rb DELETED
@@ -1,2 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'sashite/pan'
data/test/test_capture.rb DELETED
@@ -1,45 +0,0 @@
1
- require_relative '_test_helper'
2
-
3
- describe Sashite::PAN do
4
- describe 'capture' do
5
- describe 'errors' do
6
- it 'raises a same square error' do
7
- -> { Sashite::PAN::Capture.new 42, 42 }.must_raise Sashite::PAN::SameSquareError
8
- end
9
-
10
- it 'raises a type error from the source square' do
11
- -> { Sashite::PAN::Capture.new '42', 43 }.must_raise TypeError
12
- end
13
-
14
- it 'raises a type error from the destination square' do
15
- -> { Sashite::PAN::Capture.new 42, '43' }.must_raise TypeError
16
- end
17
- end
18
-
19
- describe 'instances' do
20
- before do
21
- @action = Sashite::PAN.load :capture, 42, 43
22
- end
23
-
24
- it 'returns the action' do
25
- @action.to_a.must_equal [ :capture, 42, 43 ]
26
- end
27
-
28
- it 'returns the action (once again)' do
29
- @action.to_a.must_equal Sashite::PAN::Capture.new(42, 43).to_a
30
- end
31
-
32
- it 'returns the verb of the action' do
33
- @action.verb.must_equal :capture
34
- end
35
-
36
- it 'returns the src_square of the action' do
37
- @action.src_square.must_equal 42
38
- end
39
-
40
- it 'returns the dst_square of the action' do
41
- @action.dst_square.must_equal 43
42
- end
43
- end
44
- end
45
- end
data/test/test_drop.rb DELETED
@@ -1,41 +0,0 @@
1
- require_relative '_test_helper'
2
-
3
- describe Sashite::PAN do
4
- describe 'drops' do
5
- describe 'errors' do
6
- it 'raises a type error from the actor' do
7
- -> { Sashite::PAN.load :drop, 42, 'foobar' }.must_raise TypeError
8
- end
9
-
10
- it 'raises a type error from the destination square' do
11
- -> { Sashite::PAN.load :drop, '42', :foobar }.must_raise TypeError
12
- end
13
- end
14
-
15
- describe 'instances' do
16
- before do
17
- @action = Sashite::PAN.load :drop, 42, :foobar
18
- end
19
-
20
- it 'returns the action' do
21
- @action.to_a.must_equal [ :drop, 42, :foobar ]
22
- end
23
-
24
- it 'returns the action (once again)' do
25
- @action.to_a.must_equal Sashite::PAN::Drop.new(42, :foobar).to_a
26
- end
27
-
28
- it 'returns the verb of the action' do
29
- @action.verb.must_equal :drop
30
- end
31
-
32
- it 'returns the actor of the action' do
33
- @action.actor.must_equal :foobar
34
- end
35
-
36
- it 'returns the square of the action' do
37
- @action.square.must_equal 42
38
- end
39
- end
40
- end
41
- end
data/test/test_pan.rb DELETED
@@ -1,9 +0,0 @@
1
- require_relative '_test_helper'
2
-
3
- describe Sashite::PAN do
4
- describe 'errors' do
5
- it 'raises a not implemented method error' do
6
- -> { Sashite::PAN.load :foobar, 42, 43 }.must_raise Sashite::PAN::NotImplementedVerbError
7
- end
8
- end
9
- end
data/test/test_promote.rb DELETED
@@ -1,41 +0,0 @@
1
- require_relative '_test_helper'
2
-
3
- describe Sashite::PAN do
4
- describe 'promotion' do
5
- describe 'errors' do
6
- it 'raises a type error from the source square' do
7
- -> { Sashite::PAN.load :promote, '42', :foobar }.must_raise TypeError
8
- end
9
-
10
- it 'raises a type error from the actor' do
11
- -> { Sashite::PAN.load :promote, 42, 'foobar' }.must_raise TypeError
12
- end
13
- end
14
-
15
- describe 'instances' do
16
- before do
17
- @action = Sashite::PAN.load :promote, 42, :foobar
18
- end
19
-
20
- it 'returns the action' do
21
- @action.to_a.must_equal [ :promote, 42, :foobar ]
22
- end
23
-
24
- it 'returns the action (once again)' do
25
- @action.to_a.must_equal Sashite::PAN::Promote.new(42, :foobar).to_a
26
- end
27
-
28
- it 'returns the verb of the action' do
29
- @action.verb.must_equal :promote
30
- end
31
-
32
- it 'returns the square of the action' do
33
- @action.square.must_equal 42
34
- end
35
-
36
- it 'returns the actor of the action' do
37
- @action.actor.must_equal :foobar
38
- end
39
- end
40
- end
41
- end
data/test/test_shift.rb DELETED
@@ -1,45 +0,0 @@
1
- require_relative '_test_helper'
2
-
3
- describe Sashite::PAN do
4
- describe 'shift' do
5
- describe 'errors' do
6
- it 'raises a same square error' do
7
- -> { Sashite::PAN::Shift.new 42, 42 }.must_raise Sashite::PAN::SameSquareError
8
- end
9
-
10
- it 'raises a type error from the source square' do
11
- -> { Sashite::PAN::Shift.new '42', 43 }.must_raise TypeError
12
- end
13
-
14
- it 'raises a type error from the destination square' do
15
- -> { Sashite::PAN::Shift.new 42, '43' }.must_raise TypeError
16
- end
17
- end
18
-
19
- describe 'instances' do
20
- before do
21
- @action = Sashite::PAN.load :shift, 42, 43
22
- end
23
-
24
- it 'returns the action' do
25
- @action.to_a.must_equal [ :shift, 42, 43 ]
26
- end
27
-
28
- it 'returns the action (once again)' do
29
- @action.to_a.must_equal Sashite::PAN::Shift.new(42, 43).to_a
30
- end
31
-
32
- it 'returns the verb of the action' do
33
- @action.verb.must_equal :shift
34
- end
35
-
36
- it 'returns the src_square of the action' do
37
- @action.src_square.must_equal 42
38
- end
39
-
40
- it 'returns the dst_square of the action' do
41
- @action.dst_square.must_equal 43
42
- end
43
- end
44
- end
45
- end