portable_move_notation 0.2.0 → 1.0.0

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: 6b589b978146bc86d24e4190c46e89c055d22ad75c3ae50605b64159e8e6908c
4
- data.tar.gz: 9b7391b895988cf11771ccd79e6827f09e26215ca2393a0cd45b50c2c7ae2385
3
+ metadata.gz: 1ea18bccd3175b8aa44c30320449202c692edd0e62f5024b0f1a35a912124f52
4
+ data.tar.gz: 0d57d166480c1c823b8ef6a6d6d4333947c467eebe3fc8f3386e72a217faaf19
5
5
  SHA512:
6
- metadata.gz: 8db07cc1f4b394860a4b169ea8c66dfe3a49b9dc386c4d822a9b581d30b9bc9c42893f857e82cb88a2323f0bd6e9314356bb48da41192cea81e8c0b48a768e70
7
- data.tar.gz: 41fe5971834d95f244d62daaa26a53fb57b34f6f1ab6730c76fd1696b3ce5a8d70daa9c783222d13e5c874624716cb30c5dcc07dd01432331e4ba57842cb4894
6
+ metadata.gz: cfd09a1595d388851a9e9e286f83abf130005c2a883938a369bee3111fce52631e8b22b79f7f21d3cb9415dc3e09a9b7e9ea8c36724a7eb28072eb76b9af0110
7
+ data.tar.gz: 6f2be96f2952714b6977d6c2e811a67ef0c4d07fa4b324b5c98b754d8e8572961f74ce6a2c2b27336b57fb7a3145daf54b078d798d737845bacbcc039bc458ee
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Portable Move Notation
2
2
 
3
- A Ruby interface for data serialization in PMN format.
3
+ A Ruby interface for data serialization in [PMN](https://developer.sashite.com/specs/portable-move-notation) format.
4
4
 
5
5
  ## Installation
6
6
 
@@ -27,14 +27,14 @@ require 'portable_move_notation'
27
27
 
28
28
  # Parse a PMN string
29
29
 
30
- PortableMoveNotation.load('52,36,C:P.12,28,c:p.53,37,C:P') # => [[[52, 36, 'C:P', nil]], [[12, 28, 'c:p', nil]], [[53, 37, 'C:P', nil]]]
30
+ PortableMoveNotation.parse('52,36,C:P.12,28,c:p.53,37,C:P') # => [[52, 36, 'C:P', nil], [12, 28, 'c:p', nil], [53, 37, 'C:P', nil]]
31
31
 
32
32
  # Emit some PMN
33
33
 
34
34
  some_moves = [
35
- [[52, 36, 'C:P', nil]],
36
- [[12, 28, 'c:p', nil]],
37
- [[53, 37, 'C:P', nil]]
35
+ [52, 36, 'C:P', nil],
36
+ [12, 28, 'c:p', nil],
37
+ [53, 37, 'C:P', nil]
38
38
  ]
39
39
 
40
40
  PortableMoveNotation.dump(*some_moves) # => '52,36,C:P.12,28,c:p.53,37,C:P'
@@ -45,50 +45,42 @@ PortableMoveNotation.dump(*some_moves) # => '52,36,C:P.12,28,c:p.53,37,C:P'
45
45
  #### Castling on kingside
46
46
 
47
47
  ```ruby
48
- PortableMoveNotation.load('60,62,C:-K;63,61,C:R') # => [[[60, 62, 'C:-K', nil], [63, 61, 'C:R', nil]]]
48
+ PortableMoveNotation.parse('60,62,C:-K;63,61,C:R') # => [[60, 62, 'C:-K', nil, 63, 61, 'C:R', nil]]
49
49
  PortableMoveNotation.dump(*[[[60, 62, 'C:-K', nil], [63, 61, 'C:R', nil]]]) # => '60,62,C:-K;63,61,C:R'
50
50
  ```
51
51
 
52
52
  #### Promoting a chess pawn into a knight
53
53
 
54
54
  ```ruby
55
- PortableMoveNotation.load('12,4,C:P,C:N') # => [[[12, 4, 'C:P', 'C:N']]]
55
+ PortableMoveNotation.parse('12,4,C:P,C:N') # => [[12, 4, 'C:P', 'C:N']]
56
56
  PortableMoveNotation.dump(*[[[12, 4, 'C:P', 'C:N']]]) # => '12,4,C:P,C:N'
57
57
  ```
58
58
 
59
59
  #### Promoting a shogi pawn
60
60
 
61
61
  ```ruby
62
- PortableMoveNotation.load('33,24,S:P,S:+P') # => [[[33, 24, 'S:P', 'S:+P']]]
62
+ PortableMoveNotation.parse('33,24,S:P,S:+P') # => [[33, 24, 'S:P', 'S:+P']]
63
63
  PortableMoveNotation.dump(*[[[33, 24, 'S:P', 'S:+P']]]) # => '33,24,S:P,S:+P'
64
64
  ```
65
65
 
66
66
  #### Dropping a shogi pawn
67
67
 
68
68
  ```ruby
69
- PortableMoveNotation.load('*,42,S:P') # => [[[nil, 42, 'S:P', nil]]]
69
+ PortableMoveNotation.parse('*,42,S:P') # => [[nil, 42, 'S:P', nil]]
70
70
  PortableMoveNotation.dump(*[[[nil, 42, 'S:P', nil]]]) # => '*,42,S:P'
71
71
  ```
72
72
 
73
73
  #### Capturing a white chess pawn en passant
74
74
 
75
75
  ```ruby
76
- PortableMoveNotation.load('48,32,C:P.33,32,c:p;32,40,c:p') # => [[[48, 32, 'C:P', nil]], [[33, 32, 'c:p', nil], [32, 40, 'c:p', nil]]]
76
+ PortableMoveNotation.parse('48,32,C:P.33,32,c:p;32,40,c:p') # => [[48, 32, 'C:P', nil], [33, 32, 'c:p', nil, 32, 40, 'c:p', nil]]
77
77
  PortableMoveNotation.dump(*[[[48, 32, 'C:P', nil]], [[33, 32, 'c:p', nil], [32, 40, 'c:p', nil]]]) # => '48,32,C:P.33,32,c:p;32,40,c:p'
78
78
  ```
79
79
 
80
- ## Contributing
81
-
82
- Bug reports and pull requests are welcome on GitHub at https://github.com/sashite/portable_move_notation.rb. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
83
-
84
80
  ## License
85
81
 
86
82
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
87
83
 
88
- ## Code of Conduct
89
-
90
- Everyone interacting in the PortableMoveNotation project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/sashite/portable_move_notation.rb/blob/master/CODE_OF_CONDUCT.md).
91
-
92
84
  ## About Sashite
93
85
 
94
86
  The `portable_move_notation` gem is maintained by [Sashite](https://sashite.com/).
@@ -3,13 +3,13 @@
3
3
  # Portable Move Notation module
4
4
  module PortableMoveNotation
5
5
  def self.dump(*moves)
6
- Dump.call(*moves)
6
+ Dumper.call(*moves)
7
7
  end
8
8
 
9
- def self.load(pmn_string)
10
- Load.call(pmn_string)
9
+ def self.parse(pmn_string)
10
+ Parser.call(pmn_string)
11
11
  end
12
12
  end
13
13
 
14
- require_relative 'portable_move_notation/dump'
15
- require_relative 'portable_move_notation/load'
14
+ require_relative 'portable_move_notation/dumper'
15
+ require_relative 'portable_move_notation/parser'
@@ -2,7 +2,7 @@
2
2
 
3
3
  module PortableMoveNotation
4
4
  module Action
5
- class Dump
5
+ class Dumper
6
6
  def self.call(*unserialized_actions)
7
7
  unserialized_actions.map { |params| new(*params).call }.join(';')
8
8
  end
@@ -28,13 +28,15 @@ module PortableMoveNotation
28
28
  end
29
29
 
30
30
  def call
31
- arr = if piece_hand.nil?
32
- [src_square, dst_square, piece_name]
33
- else
34
- [src_square, dst_square, piece_name, piece_hand]
35
- end
31
+ action_items.join(',')
32
+ end
33
+
34
+ private
35
+
36
+ def action_items
37
+ return [src_square, dst_square, piece_name] if piece_hand.nil?
36
38
 
37
- arr.join(',')
39
+ [src_square, dst_square, piece_name, piece_hand]
38
40
  end
39
41
  end
40
42
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  module PortableMoveNotation
4
4
  module Action
5
- class Load
5
+ class Parser
6
6
  def self.call(serialized_actions)
7
- serialized_actions.split(';').map do |serialized_action|
7
+ serialized_actions.split(';').flat_map do |serialized_action|
8
8
  new(serialized_action).call
9
9
  end
10
10
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PortableMoveNotation
4
+ class Dumper
5
+ def self.call(*unserialized_moves)
6
+ unserialized_moves.map do |move|
7
+ actions = move.each_slice(4)
8
+ Action::Dumper.call(*actions)
9
+ end.join('.')
10
+ end
11
+ end
12
+ end
13
+
14
+ require_relative 'action/dumper'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PortableMoveNotation
4
+ class Parser
5
+ def self.call(serialized_moves_string)
6
+ serialized_moves_string.split('.').map do |serialized_actions|
7
+ Action::Parser.call(serialized_actions)
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ require_relative 'action/parser'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: portable_move_notation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-14 00:00:00.000000000 Z
11
+ date: 2020-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -122,7 +122,8 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
- description: A Ruby interface for data serialization in PMN format.
125
+ description: A Ruby interface for data serialization in PMN (Portable Move Notation)
126
+ format.
126
127
  email: contact@cyril.email
127
128
  executables: []
128
129
  extensions: []
@@ -131,10 +132,10 @@ files:
131
132
  - LICENSE.md
132
133
  - README.md
133
134
  - lib/portable_move_notation.rb
134
- - lib/portable_move_notation/action/dump.rb
135
- - lib/portable_move_notation/action/load.rb
136
- - lib/portable_move_notation/dump.rb
137
- - lib/portable_move_notation/load.rb
135
+ - lib/portable_move_notation/action/dumper.rb
136
+ - lib/portable_move_notation/action/parser.rb
137
+ - lib/portable_move_notation/dumper.rb
138
+ - lib/portable_move_notation/parser.rb
138
139
  homepage: https://developer.sashite.com/specs/portable-move-notation
139
140
  licenses:
140
141
  - MIT
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module PortableMoveNotation
4
- class Dump
5
- def self.call(*unserialized_moves)
6
- unserialized_moves.map { |actions| Action::Dump.call(*actions) }.join('.')
7
- end
8
- end
9
- end
10
-
11
- require_relative 'action/dump'
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module PortableMoveNotation
4
- class Load
5
- def self.call(serialized_moves)
6
- serialized_moves.split('.').map do |serialized_actions|
7
- Action::Load.call(serialized_actions)
8
- end
9
- end
10
- end
11
- end
12
-
13
- require_relative 'action/load'