pgn3 0.0.2 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/pgn/parser.rb +1 -2
- data/lib/pgn/version.rb +1 -1
- data/spec/parser_spec.rb +8 -0
- data/spec/pgn_files/doublequotes.pgn +90 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e82dc977b125a7aca585616304c07acdcb56c4a994dbe58bce1cd30ec3b8bec3
|
4
|
+
data.tar.gz: b64c749cd5d32b8a1399cb1f621c08528a69d7c88bdb7f0b3c5a8f1cbc60c90b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85be16f228444f61d7267c1312a206044830495ff34c71a99f96bb6037b0cce5125317c2a9efa5aba11aacd4d3c87dfcee2b6ba8a4e05e2b53c4fa919abf04fd
|
7
|
+
data.tar.gz: 10b3450d3da34decdbc4188f0fdffc1ff87ed9cffe9edd501d754ca26e36689337f74ed8c8f3a3c1e5f39e38c3d171c7cf66683546dca03e60d2ff589718023e
|
data/README.md
CHANGED
data/lib/pgn/parser.rb
CHANGED
@@ -11,7 +11,6 @@ module PGN
|
|
11
11
|
ending = input.length
|
12
12
|
@@pgn ||= ''
|
13
13
|
@@game_comment ||= nil
|
14
|
-
|
15
14
|
until offset == ending
|
16
15
|
next_token(input, offset, line).tap do |token|
|
17
16
|
if !token.nil?
|
@@ -131,7 +130,7 @@ module PGN
|
|
131
130
|
string: /
|
132
131
|
" # beginning of string
|
133
132
|
(
|
134
|
-
[[:print:]&&[^\\
|
133
|
+
[[:print:]&&[^\\]] | # printing characters except quote and backslash
|
135
134
|
\\\\ | # escaped backslashes
|
136
135
|
\\" # escaped quotation marks
|
137
136
|
)* # zero or more of the above
|
data/lib/pgn/version.rb
CHANGED
data/spec/parser_spec.rb
CHANGED
@@ -133,11 +133,19 @@ describe PGN do
|
|
133
133
|
expect { game.positions }.not_to raise_error
|
134
134
|
expect(game.moves).not_to be_empty
|
135
135
|
end
|
136
|
+
|
136
137
|
|
137
138
|
it 'gets game comment' do
|
138
139
|
games = PGN.parse(File.read('./spec/pgn_files/no_moves.pgn'))
|
139
140
|
game = games.last
|
140
141
|
expect(game.comment).to eq('{game comment}')
|
141
142
|
end
|
143
|
+
|
144
|
+
it 'tag_values with double quotes' do
|
145
|
+
games = PGN.parse(File.read('./spec/pgn_files/doublequotes.pgn'))
|
146
|
+
game = games.last
|
147
|
+
expect(game.tags['Event']).to eq('IRT BLITZ "Sub Zonal"')
|
148
|
+
end
|
149
|
+
|
142
150
|
end
|
143
151
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
[Event "IRT Campeonato In Memoriam MF Simon Dario Meneses Urbina"]
|
2
|
+
[Site "Liga Santandereana de Ajedrez (Calle 14 con carrera 30 Unidad Deportiva)"]
|
3
|
+
[Date "2022.07.24"]
|
4
|
+
[Round "7"]
|
5
|
+
[Board "4"]
|
6
|
+
[White "Gonzalez Bolivar, Juan Jose"]
|
7
|
+
[Black "Vargas Arteaga, Alexis"]
|
8
|
+
[Result "0-1"]
|
9
|
+
[ECO "A00"]
|
10
|
+
[WhiteElo "1424"]
|
11
|
+
[BlackElo "2254"]
|
12
|
+
[PlyCount "62"]
|
13
|
+
[EventDate "2022.07.20"]
|
14
|
+
[EventRounds "8"]
|
15
|
+
[EventCountry "COL"]
|
16
|
+
|
17
|
+
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. f3 Qb6 7. Nb3 e6 8. Bg5
|
18
|
+
Nbd7 9. Qd2 Qc7 10. O-O-O b5 11. f4 b4 12. Nb1 Nxe4 13. Qe3 Nxg5 14. fxg5 Be7
|
19
|
+
15. Be2 Bb7 16. h4 Ne5 17. Bf3 Rc8 18. c3 O-O 19. h5 Nc4 20. Qf4 bxc3 21. bxc3
|
20
|
+
Qd8 22. Qg3 Bxg5+ 23. N1d2 Nxd2 24. Nxd2 Rxc3+ 25. Kb1 Qb6+ 26. Ka1 Qd4 27. Nb1
|
21
|
+
Rd3+ 28. Nc3 Qxc3+ 29. Kb1 Be4 30. Bxe4 Rb8+ 31. Bb7 Rxb7# 0-1
|
22
|
+
|
23
|
+
[Event "IRT BLITZ "Sub Zonal""]
|
24
|
+
[Site "HOTEL CAFEIRA Calle 18 Nro. 5 - 38 Centro de Pereira Risaralda"]
|
25
|
+
[Date "2021.11.27"]
|
26
|
+
[Round "1"]
|
27
|
+
[Board "2"]
|
28
|
+
[White "Jaramillo, Carlos Orlando"]
|
29
|
+
[Black "Vargas Arteaga, Alexis"]
|
30
|
+
[Result "0-1"]
|
31
|
+
[ECO "B07"]
|
32
|
+
[WhiteElo "1785"]
|
33
|
+
[BlackElo "2343"]
|
34
|
+
[PlyCount "54"]
|
35
|
+
[EventDate "2021.11.27"]
|
36
|
+
[EventRounds "18"]
|
37
|
+
[EventCountry "COL"]
|
38
|
+
|
39
|
+
1. e4 d6 2. d4 Nf6 3. Nc3 Nbd7 4. f4 g6 5. Nf3 c5 6. e5 cxd4 7. Qxd4 dxe5 8.
|
40
|
+
fxe5 Nh5 9. e6 Bg7 10. exd7+ Bxd7 11. Qb4 O-O 12. Be3 a5 13. Qh4 Rc8 14. Bd2
|
41
|
+
Qb6 15. O-O-O Be6 16. g4 Nf6 17. Ng5 Bxg4 18. Nd5 Qxb2+ 19. Kxb2 Nxd5+ 20. c3
|
42
|
+
h5 21. Bg2 Nxc3 22. Bxc3 Rxc3 23. Kb1 Rc4 24. Rhf1 Bf5+ 25. Rxf5 Rxh4 26. Rxa5
|
43
|
+
Rc8 27. Bd5 e6 0-1
|
44
|
+
|
45
|
+
[Event "IRT BLITZ "Sub Zonal""]
|
46
|
+
[Site "HOTEL CAFEIRA Calle 18 Nro. 5 - 38 Centro de Pereira Risaralda"]
|
47
|
+
[Date "2021.11.27"]
|
48
|
+
[Round "3"]
|
49
|
+
[Board "2"]
|
50
|
+
[White "Vargas Arteaga, Alexis"]
|
51
|
+
[Black "Zambrano Linares, Ramon Alberto"]
|
52
|
+
[Result "1-0"]
|
53
|
+
[ECO "C60"]
|
54
|
+
[WhiteElo "2343"]
|
55
|
+
[BlackElo "1935"]
|
56
|
+
[PlyCount "101"]
|
57
|
+
[EventDate "2021.11.27"]
|
58
|
+
[EventRounds "18"]
|
59
|
+
[EventCountry "COL"]
|
60
|
+
|
61
|
+
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nge7 4. O-O Ng6 5. Bxc6 dxc6 6. d4 exd4 7. Qxd4 Qxd4
|
62
|
+
8. Nxd4 Bc5 9. Be3 O-O 10. Nc3 Re8 11. f3 Ne5 12. Bf2 Bb4 13. Nde2 Be6 14. a3
|
63
|
+
Bf8 15. b3 a6 16. Bg3 f6 17. Rfd1 Rad8 18. Kf1 Bc5 19. Bf2 Bxf2 20. Kxf2 b5 21.
|
64
|
+
Nf4 Bf7 22. Rxd8 Rxd8 23. Rd1 Rd6 24. Ke1 Kf8 25. Nce2 g5 26. Nh3 Be6 27. Nf2
|
65
|
+
h5 28. Nd4 Kf7 29. Nxe6 Kxe6 30. Ke2 c5 31. Nd3 Nxd3 32. Rxd3 Ke5 33. Ke3 h4
|
66
|
+
34. g3 hxg3 35. hxg3 Rc6 36. f4+ gxf4+ 37. gxf4+ Ke6 38. Rd5 c4 39. b4 Rd6 40.
|
67
|
+
Rd4 Rc6 41. c3 a5 42. Rd5 axb4 43. axb4 Rb6 44. Kd4 c6 45. Rh5 Rb8 46. Kc5 Kf7
|
68
|
+
47. Kxc6 Re8 48. e5 Re6+ 49. Kxb5 fxe5 50. Rxe5 Rf6 51. f5 1-0
|
69
|
+
|
70
|
+
[Event "IRT BLITZ "Sub Zonal""]
|
71
|
+
[Site "HOTEL CAFEIRA Calle 18 Nro. 5 - 38 Centro de Pereira Risaralda"]
|
72
|
+
[Date "2021.11.27"]
|
73
|
+
[Round "5"]
|
74
|
+
[Board "2"]
|
75
|
+
[White "Estrada Velandia, Henry Andres"]
|
76
|
+
[Black "Vargas Arteaga, Alexis"]
|
77
|
+
[Result "0-1"]
|
78
|
+
[ECO "D00"]
|
79
|
+
[WhiteElo "2055"]
|
80
|
+
[BlackElo "2343"]
|
81
|
+
[PlyCount "64"]
|
82
|
+
[EventDate "2021.11.27"]
|
83
|
+
[EventRounds "18"]
|
84
|
+
[EventCountry "COL"]
|
85
|
+
|
86
|
+
1. d4 Nf6 2. c3 d5 3. e3 c5 4. Bd3 Nc6 5. f4 e6 6. Nf3 Bd6 7. O-O O-O 8. Bd2 b6
|
87
|
+
9. Be1 Ne7 10. Ne5 Nf5 11. Bxf5 exf5 12. Bh4 Be6 13. Nd2 Rc8 14. Qf3 Be7 15.
|
88
|
+
Bxf6 Bxf6 16. Kh1 g6 17. Rg1 b5 18. g4 b4 19. gxf5 Bxf5 20. Raf1 Bg7 21. Rg5
|
89
|
+
bxc3 22. bxc3 cxd4 23. Rxf5 dxc3 24. Nxf7 Qd7 25. Rxd5 Qxf7 26. Nb3 c2 27. Rc1
|
90
|
+
Bb2 28. Rg1 c1=Q 29. Nxc1 Rxc1 30. Rxc1 Bxc1 31. h4 Bxe3 32. f5 Bh6 0-1
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pgn3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stacey Touset
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-11-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: whittle
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- spec/pgn_files/alternate_castling.pgn
|
116
116
|
- spec/pgn_files/annotations.pgn
|
117
117
|
- spec/pgn_files/comments.pgn
|
118
|
+
- spec/pgn_files/doublequotes.pgn
|
118
119
|
- spec/pgn_files/empty_variation_move.pgn
|
119
120
|
- spec/pgn_files/fen.pgn
|
120
121
|
- spec/pgn_files/multiline_comments.pgn
|
@@ -156,6 +157,7 @@ test_files:
|
|
156
157
|
- spec/pgn_files/alternate_castling.pgn
|
157
158
|
- spec/pgn_files/annotations.pgn
|
158
159
|
- spec/pgn_files/comments.pgn
|
160
|
+
- spec/pgn_files/doublequotes.pgn
|
159
161
|
- spec/pgn_files/empty_variation_move.pgn
|
160
162
|
- spec/pgn_files/fen.pgn
|
161
163
|
- spec/pgn_files/multiline_comments.pgn
|