shogiops 0.2.8 → 0.5.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.
Files changed (115) hide show
  1. package/attacks.js +32 -48
  2. package/attacks.js.map +1 -1
  3. package/board.d.ts +3 -0
  4. package/board.js +60 -33
  5. package/board.js.map +1 -1
  6. package/compat.d.ts +6 -24
  7. package/compat.js +20 -185
  8. package/compat.js.map +1 -1
  9. package/debug.js +37 -72
  10. package/debug.js.map +1 -1
  11. package/hand.d.ts +38 -0
  12. package/hand.js +69 -0
  13. package/hand.js.map +1 -0
  14. package/hash.d.ts +4 -3
  15. package/hash.js +12 -20
  16. package/hash.js.map +1 -1
  17. package/index.d.ts +13 -10
  18. package/index.js +22 -64
  19. package/index.js.map +1 -1
  20. package/{csa.d.ts → notation/csa/csa.d.ts} +9 -9
  21. package/notation/csa/csa.js +213 -0
  22. package/notation/csa/csa.js.map +1 -0
  23. package/notation/japanese.d.ts +3 -0
  24. package/notation/japanese.js +61 -0
  25. package/notation/japanese.js.map +1 -0
  26. package/{kif.d.ts → notation/kif/kif.d.ts} +10 -9
  27. package/notation/kif/kif.js +232 -0
  28. package/notation/kif/kif.js.map +1 -0
  29. package/{kifHandicaps.d.ts → notation/kif/kifHandicaps.d.ts} +0 -0
  30. package/{kifHandicaps.js → notation/kif/kifHandicaps.js} +7 -7
  31. package/notation/kif/kifHandicaps.js.map +1 -0
  32. package/notation/kitaoKawasaki.d.ts +3 -0
  33. package/notation/kitaoKawasaki.js +26 -0
  34. package/notation/kitaoKawasaki.js.map +1 -0
  35. package/notation/kitaokawasaki.d.ts +0 -0
  36. package/notation/kitaokawasaki.js +2 -0
  37. package/notation/kitaokawasaki.js.map +1 -0
  38. package/notation/notationUtil.d.ts +12 -0
  39. package/{kifUtil.js → notation/notationUtil.js} +39 -40
  40. package/notation/notationUtil.js.map +1 -0
  41. package/notation/western.d.ts +3 -0
  42. package/notation/western.js +23 -0
  43. package/notation/western.js.map +1 -0
  44. package/notation/westernEngine.d.ts +3 -0
  45. package/notation/westernEngine.js +23 -0
  46. package/notation/westernEngine.js.map +1 -0
  47. package/package.json +54 -37
  48. package/setup.d.ts +2 -32
  49. package/setup.js +5 -80
  50. package/setup.js.map +1 -1
  51. package/sfen.d.ts +33 -0
  52. package/sfen.js +188 -0
  53. package/sfen.js.map +1 -0
  54. package/shogi.d.ts +14 -7
  55. package/shogi.js +138 -141
  56. package/shogi.js.map +1 -1
  57. package/squareSet.d.ts +1 -5
  58. package/squareSet.js +1 -18
  59. package/squareSet.js.map +1 -1
  60. package/src/board.ts +34 -0
  61. package/src/compat.ts +18 -197
  62. package/src/debug.ts +26 -56
  63. package/src/hand.ts +94 -0
  64. package/src/hash.ts +8 -7
  65. package/src/index.ts +16 -12
  66. package/src/{csa.ts → notation/csa/csa.ts} +53 -52
  67. package/src/notation/japanese.ts +74 -0
  68. package/src/{kif.ts → notation/kif/kif.ts} +77 -78
  69. package/src/{kifHandicaps.ts → notation/kif/kifHandicaps.ts} +5 -0
  70. package/src/notation/kitaoKawasaki.ts +24 -0
  71. package/src/{kifUtil.ts → notation/notationUtil.ts} +37 -28
  72. package/src/notation/western.ts +21 -0
  73. package/src/notation/westernEngine.ts +21 -0
  74. package/src/setup.ts +4 -91
  75. package/src/sfen.ts +190 -0
  76. package/src/shogi.ts +75 -75
  77. package/src/squareSet.ts +1 -18
  78. package/src/transform.ts +3 -1
  79. package/src/types.ts +13 -16
  80. package/src/util.ts +8 -73
  81. package/src/variant.ts +44 -3
  82. package/src/variantUtil.ts +160 -0
  83. package/transform.js +18 -24
  84. package/transform.js.map +1 -1
  85. package/types.d.ts +3 -7
  86. package/types.js +18 -24
  87. package/types.js.map +1 -1
  88. package/util.d.ts +4 -7
  89. package/util.js +24 -96
  90. package/util.js.map +1 -1
  91. package/variant.d.ts +12 -1
  92. package/variant.js +42 -16
  93. package/variant.js.map +1 -1
  94. package/variantUtil.d.ts +13 -0
  95. package/variantUtil.js +147 -0
  96. package/variantUtil.js.map +1 -0
  97. package/csa.js +0 -229
  98. package/csa.js.map +0 -1
  99. package/csaUtil.d.ts +0 -3
  100. package/csaUtil.js +0 -21
  101. package/csaUtil.js.map +0 -1
  102. package/fen.d.ts +0 -32
  103. package/fen.js +0 -197
  104. package/fen.js.map +0 -1
  105. package/kif.js +0 -247
  106. package/kif.js.map +0 -1
  107. package/kifHandicaps.js.map +0 -1
  108. package/kifUtil.d.ts +0 -9
  109. package/kifUtil.js.map +0 -1
  110. package/san.d.ts +0 -6
  111. package/san.js +0 -135
  112. package/san.js.map +0 -1
  113. package/src/csaUtil.ts +0 -15
  114. package/src/fen.ts +0 -183
  115. package/src/san.ts +0 -136
package/variant.js CHANGED
@@ -1,23 +1,49 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupPosition = exports.defaultPosition = exports.Shogi = exports.IllegalSetup = exports.PositionError = exports.Position = void 0;
4
- const shogi_1 = require("./shogi");
5
- Object.defineProperty(exports, "PositionError", { enumerable: true, get: function () { return shogi_1.PositionError; } });
6
- Object.defineProperty(exports, "Position", { enumerable: true, get: function () { return shogi_1.Position; } });
7
- Object.defineProperty(exports, "IllegalSetup", { enumerable: true, get: function () { return shogi_1.IllegalSetup; } });
8
- Object.defineProperty(exports, "Shogi", { enumerable: true, get: function () { return shogi_1.Shogi; } });
9
- function defaultPosition(rules) {
1
+ import { PositionError, Position, IllegalSetup, Shogi } from './shogi';
2
+ import { SquareSet } from './squareSet';
3
+ import { Board } from './board';
4
+ import { Hands } from './hand';
5
+ export { Position, PositionError, IllegalSetup, Shogi };
6
+ export function defaultPosition(rules) {
10
7
  switch (rules) {
11
- case 'shogi':
12
- return shogi_1.Shogi.default();
8
+ case 'minishogi':
9
+ return Minishogi.default();
10
+ default:
11
+ return Shogi.default();
13
12
  }
14
13
  }
15
- exports.defaultPosition = defaultPosition;
16
- function setupPosition(rules, setup, strict = true) {
14
+ export function setupPosition(rules, setup, strict = true) {
17
15
  switch (rules) {
18
- case 'shogi':
19
- return shogi_1.Shogi.fromSetup(setup, strict);
16
+ case 'minishogi':
17
+ return Minishogi.fromSetup(setup, strict);
18
+ default:
19
+ return Shogi.fromSetup(setup, strict);
20
+ }
21
+ }
22
+ export class Minishogi extends Shogi {
23
+ constructor() {
24
+ super('minishogi');
25
+ this.numberOfRanks = 5;
26
+ this.numberOfFiles = 5;
27
+ }
28
+ static default() {
29
+ const pos = new this();
30
+ pos.board = Board.minishogi();
31
+ pos.hands = Hands.empty();
32
+ pos.turn = 'sente';
33
+ pos.fullmoves = 1;
34
+ return pos;
35
+ }
36
+ static fromSetup(setup, strict) {
37
+ return super.fromSetup(setup, strict);
38
+ }
39
+ clone() {
40
+ return super.clone();
41
+ }
42
+ dests(square, ctx) {
43
+ return super.dests(square, ctx).intersect(new SquareSet(0x0, 0x7c3e000, 0x7c3e1f0));
44
+ }
45
+ dropDests(role, ctx) {
46
+ return super.dropDests(role, ctx).intersect(new SquareSet(0x0, 0x7c3e000, 0x7c3e1f0));
20
47
  }
21
48
  }
22
- exports.setupPosition = setupPosition;
23
49
  //# sourceMappingURL=variant.js.map
package/variant.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"variant.js","sourceRoot":"","sources":["src/variant.ts"],"names":[],"mappings":";;;AAGA,mCAAgF;AAE7D,8FAFV,qBAAa,OAEU;AAAvB,yFAFe,gBAAQ,OAEf;AAAiB,6FAFA,oBAAY,OAEA;AAAW,sFAFA,aAAK,OAEA;AAE9D,SAAgB,eAAe,CAAC,KAAY;IAC1C,QAAQ,KAAK,EAAE;QACb,KAAK,OAAO;YACV,OAAO,aAAK,CAAC,OAAO,EAAE,CAAC;KAC1B;AACH,CAAC;AALD,0CAKC;AAED,SAAgB,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAM,GAAG,IAAI;IACrE,QAAQ,KAAK,EAAE;QACb,KAAK,OAAO;YACV,OAAO,aAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KACzC;AACH,CAAC;AALD,sCAKC"}
1
+ {"version":3,"file":"variant.js","sourceRoot":"","sources":["src/variant.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAW,KAAK,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAW,KAAK,EAAE,CAAC;AAEjE,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7B;YACE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;KAC1B;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAM,GAAG,IAAI;IACrE,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C;YACE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KACzC;AACH,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC;QACE,KAAK,CAAC,WAAW,CAAC,CAAC;QAGrB,kBAAa,GAAG,CAAC,CAAC;QAClB,kBAAa,GAAG,CAAC,CAAC;IAHlB,CAAC;IAKD,MAAM,CAAC,OAAO;QACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;QACnB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,MAAe;QAC5C,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAqC,CAAC;IAC5E,CAAC;IAED,KAAK;QACH,OAAO,KAAK,CAAC,KAAK,EAAe,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAa;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,SAAS,CAAC,IAAU,EAAE,GAAa;QACjC,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACxF,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { Piece, Square } from '.';
2
+ import { SquareSet } from './squareSet';
3
+ import { Color, Role, Rules } from './types';
4
+ export declare function pieceCanPromote(rules: Rules): (piece: Piece, from: Square, to: Square) => boolean;
5
+ export declare function pieceInDeadZone(rules: Rules): (piece: Piece, sq: Square) => boolean;
6
+ export declare function allRoles(rules: Rules): Role[];
7
+ export declare function handRoles(rules: Rules): Role[];
8
+ export declare function promotableRoles(rules: Rules): Role[];
9
+ export declare function promote(rules: Rules): (role: Role) => Role;
10
+ export declare function unpromote(rules: Rules): (role: Role) => Role;
11
+ export declare function promotionZone(rules: Rules): (color: Color) => SquareSet;
12
+ export declare function backrank(rules: Rules): (color: Color) => SquareSet;
13
+ export declare function secondBackrank(rules: Rules): (color: Color) => SquareSet;
package/variantUtil.js ADDED
@@ -0,0 +1,147 @@
1
+ import { SquareSet } from './squareSet';
2
+ export function pieceCanPromote(rules) {
3
+ switch (rules) {
4
+ default:
5
+ return (piece, from, to) => promotableRoles(rules).includes(piece.role) &&
6
+ (promotionZone(rules)(piece.color).has(from) || promotionZone(rules)(piece.color).has(to));
7
+ }
8
+ }
9
+ export function pieceInDeadZone(rules) {
10
+ switch (rules) {
11
+ default:
12
+ return (piece, sq) => {
13
+ if (piece.role === 'lance' || piece.role === 'pawn')
14
+ return backrank(rules)(piece.color).intersect(SquareSet.fromSquare(sq)).nonEmpty();
15
+ if (piece.role === 'knight')
16
+ return secondBackrank(rules)(piece.color)
17
+ .union(backrank(rules)(piece.color))
18
+ .intersect(SquareSet.fromSquare(sq))
19
+ .nonEmpty();
20
+ return false;
21
+ };
22
+ }
23
+ }
24
+ export function allRoles(rules) {
25
+ switch (rules) {
26
+ case 'minishogi':
27
+ return ['rook', 'bishop', 'gold', 'silver', 'pawn', 'king', 'dragon', 'horse', 'promotedsilver', 'tokin'];
28
+ default:
29
+ return [
30
+ 'rook',
31
+ 'bishop',
32
+ 'gold',
33
+ 'silver',
34
+ 'knight',
35
+ 'lance',
36
+ 'pawn',
37
+ 'dragon',
38
+ 'horse',
39
+ 'tokin',
40
+ 'promotedsilver',
41
+ 'promotedknight',
42
+ 'promotedlance',
43
+ 'king',
44
+ ];
45
+ }
46
+ }
47
+ export function handRoles(rules) {
48
+ switch (rules) {
49
+ case 'minishogi':
50
+ return ['rook', 'bishop', 'gold', 'silver', 'pawn'];
51
+ default:
52
+ return ['rook', 'bishop', 'gold', 'silver', 'knight', 'lance', 'pawn'];
53
+ }
54
+ }
55
+ export function promotableRoles(rules) {
56
+ switch (rules) {
57
+ case 'minishogi':
58
+ return ['pawn', 'silver', 'bishop', 'rook'];
59
+ default:
60
+ return ['pawn', 'lance', 'knight', 'silver', 'bishop', 'rook'];
61
+ }
62
+ }
63
+ export function promote(rules) {
64
+ switch (rules) {
65
+ case 'minishogi':
66
+ return standardPromote;
67
+ default:
68
+ return standardPromote;
69
+ }
70
+ }
71
+ export function unpromote(rules) {
72
+ switch (rules) {
73
+ case 'minishogi':
74
+ return standardUnpromote;
75
+ default:
76
+ return standardUnpromote;
77
+ }
78
+ }
79
+ export function promotionZone(rules) {
80
+ switch (rules) {
81
+ case 'minishogi':
82
+ return (color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(4));
83
+ default:
84
+ return (color) => (color === 'sente' ? new SquareSet(0, 0, 0x07ffffff) : new SquareSet(0x07ffffff, 0, 0));
85
+ }
86
+ }
87
+ export function backrank(rules) {
88
+ switch (rules) {
89
+ case 'minishogi':
90
+ return promotionZone(rules);
91
+ default:
92
+ return (color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(0));
93
+ }
94
+ }
95
+ export function secondBackrank(rules) {
96
+ switch (rules) {
97
+ case 'minishogi':
98
+ return (color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(5));
99
+ default:
100
+ return (color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(1));
101
+ }
102
+ }
103
+ function standardUnpromote(role) {
104
+ switch (role) {
105
+ case 'pawn':
106
+ case 'tokin':
107
+ return 'pawn';
108
+ case 'lance':
109
+ case 'promotedlance':
110
+ return 'lance';
111
+ case 'knight':
112
+ case 'promotedknight':
113
+ return 'knight';
114
+ case 'silver':
115
+ case 'promotedsilver':
116
+ return 'silver';
117
+ case 'gold':
118
+ return 'gold';
119
+ case 'bishop':
120
+ case 'horse':
121
+ return 'bishop';
122
+ case 'rook':
123
+ case 'dragon':
124
+ return 'rook';
125
+ default:
126
+ return role;
127
+ }
128
+ }
129
+ function standardPromote(role) {
130
+ switch (role) {
131
+ case 'pawn':
132
+ return 'tokin';
133
+ case 'lance':
134
+ return 'promotedlance';
135
+ case 'knight':
136
+ return 'promotedknight';
137
+ case 'silver':
138
+ return 'promotedsilver';
139
+ case 'bishop':
140
+ return 'horse';
141
+ case 'rook':
142
+ return 'dragon';
143
+ default:
144
+ return role;
145
+ }
146
+ }
147
+ //# sourceMappingURL=variantUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variantUtil.js","sourceRoot":"","sources":["src/variantUtil.ts"],"names":[],"mappings":"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"}
package/csa.js DELETED
@@ -1,229 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizedCsaLines = exports.makeCsaVariation = exports.makeCsaMove = exports.parseCsaMoves = exports.parseCsaMove = exports.parseTags = exports.parseCsaHandicap = exports.parseCsaHeader = exports.makeCsaPocket = exports.makeCsaBoard = exports.makeCsaHeader = exports.CsaError = exports.InvalidCsa = void 0;
4
- const result_1 = require("@badrap/result");
5
- const board_1 = require("./board");
6
- const setup_1 = require("./setup");
7
- const types_1 = require("./types");
8
- const util_1 = require("./util");
9
- const csaUtil_1 = require("./csaUtil");
10
- //
11
- // CSA HEADER
12
- //
13
- var InvalidCsa;
14
- (function (InvalidCsa) {
15
- InvalidCsa["CSA"] = "ERR_CSA";
16
- InvalidCsa["Board"] = "ERR_BOARD";
17
- InvalidCsa["Handicap"] = "ERR_HANDICAP";
18
- InvalidCsa["Pockets"] = "ERR_POCKETS";
19
- InvalidCsa["AdditionalInfo"] = "ERR_ADDITIONAL";
20
- })(InvalidCsa = exports.InvalidCsa || (exports.InvalidCsa = {}));
21
- class CsaError extends Error {
22
- }
23
- exports.CsaError = CsaError;
24
- // exporting handicaps differently is prob not worth it, so let's always go with the whole board
25
- function makeCsaHeader(setup) {
26
- return [
27
- makeCsaBoard(setup.board),
28
- makeCsaPocket(setup.pockets.sente, 'P+'),
29
- makeCsaPocket(setup.pockets.gote, 'P-'),
30
- setup.turn === 'gote' ? '-' : '+',
31
- ].join('\n');
32
- }
33
- exports.makeCsaHeader = makeCsaHeader;
34
- function makeCsaBoard(board) {
35
- let csaBoard = '';
36
- for (let rank = 8; rank >= 0; rank--) {
37
- csaBoard += 'P' + (9 - rank);
38
- for (let file = 0; file < 9; file++) {
39
- const square = file + rank * 9;
40
- const piece = board.get(square);
41
- if (!piece)
42
- csaBoard += ' * ';
43
- else {
44
- const colorSign = piece.color === 'gote' ? '-' : '+';
45
- csaBoard += colorSign + util_1.roleToCsa(piece.role);
46
- }
47
- if (file === 8 && rank > 0)
48
- csaBoard += '\n';
49
- }
50
- }
51
- return csaBoard;
52
- }
53
- exports.makeCsaBoard = makeCsaBoard;
54
- function makeCsaPocket(material, prefix) {
55
- if (material.isEmpty())
56
- return '';
57
- return (prefix +
58
- types_1.POCKET_ROLES.map(role => {
59
- const r = util_1.roleToCsa(role);
60
- const n = material[role];
61
- return ('00' + r).repeat(Math.min(n, 18));
62
- })
63
- .filter(p => p.length > 0)
64
- .join(''));
65
- }
66
- exports.makeCsaPocket = makeCsaPocket;
67
- // Import
68
- function parseCsaHeader(csa) {
69
- const lines = normalizedCsaLines(csa);
70
- const handicap = lines.find(l => l.startsWith('PI'));
71
- const isWholeBoard = lines.some(l => l.startsWith('P1'));
72
- const baseBoard = util_1.defined(handicap) && !isWholeBoard ? parseCsaHandicap(handicap) : parseCsaBoard(lines.filter(l => /^P\d/.test(l)));
73
- const turn = lines.some(l => l === '-') ? 'gote' : 'sente';
74
- return baseBoard.chain(board => {
75
- const setup = {
76
- board: board,
77
- pockets: setup_1.Material.empty(),
78
- turn: turn,
79
- fullmoves: 1,
80
- };
81
- return parseAdditions(setup, lines.filter(l => /P[\+|-]/.test(l)));
82
- });
83
- }
84
- exports.parseCsaHeader = parseCsaHeader;
85
- function parseCsaHandicap(handicap) {
86
- const splitted = handicap.substring(2).match(/.{4}/g) || [];
87
- const intitalBoard = board_1.Board.default();
88
- for (const s of splitted) {
89
- const sq = csaUtil_1.parseCsaSquare(s.substring(0, 2));
90
- if (util_1.defined(sq)) {
91
- intitalBoard.take(sq);
92
- }
93
- else {
94
- return result_1.Result.err(new CsaError(InvalidCsa.Handicap));
95
- }
96
- }
97
- return result_1.Result.ok(intitalBoard);
98
- }
99
- exports.parseCsaHandicap = parseCsaHandicap;
100
- function parseCsaBoard(csaBoard) {
101
- if (csaBoard.length !== 9)
102
- return result_1.Result.err(new CsaError(InvalidCsa.Board));
103
- const board = board_1.Board.empty();
104
- let file = 0;
105
- let rank = 9;
106
- for (const r of csaBoard.map(r => r.substring(2))) {
107
- file = 0;
108
- rank--;
109
- for (const s of r.match(/.{1,3}/g) || []) {
110
- if (s.includes('*'))
111
- file++;
112
- else {
113
- if (file >= 9 || rank < 0)
114
- return result_1.Result.err(new CsaError(InvalidCsa.Board));
115
- const role = util_1.csaToRole(s.substring(1));
116
- if (util_1.defined(role)) {
117
- const square = file + rank * 9;
118
- const piece = { role: role, color: (s.startsWith('-') ? 'gote' : 'sente') };
119
- board.set(square, piece);
120
- file++;
121
- }
122
- }
123
- }
124
- }
125
- if (rank !== 0 || file !== 9)
126
- return result_1.Result.err(new CsaError(InvalidCsa.Board));
127
- return result_1.Result.ok(board);
128
- }
129
- function parseAdditions(initialSetup, additions) {
130
- for (const line of additions) {
131
- const color = line[1] === '+' ? 'sente' : 'gote';
132
- for (const sp of line.substring(2).match(/.{4}/g) || []) {
133
- const sq = csaUtil_1.parseCsaSquare(sp.substring(0, 2));
134
- const role = util_1.csaToRole(sp.substring(2, 4));
135
- if (util_1.defined(sq) && util_1.defined(role)) {
136
- if (sq === 0) {
137
- if (!types_1.POCKET_ROLES.includes(role))
138
- return result_1.Result.err(new CsaError(InvalidCsa.Pockets));
139
- initialSetup.pockets[color][role]++;
140
- }
141
- else {
142
- initialSetup.board.set(sq, { role: role, color: color });
143
- }
144
- }
145
- else
146
- return result_1.Result.err(new CsaError(InvalidCsa.AdditionalInfo));
147
- }
148
- }
149
- return result_1.Result.ok(initialSetup);
150
- }
151
- function parseTags(csa) {
152
- return normalizedCsaLines(csa)
153
- .filter(l => l.startsWith('$'))
154
- .map(l => l.substring(1).split(/:(.*)/, 2));
155
- }
156
- exports.parseTags = parseTags;
157
- //
158
- // CSA MOVES
159
- //
160
- // Parsing CSA moves
161
- function parseCsaMove(pos, csaMove) {
162
- var _a;
163
- // Normal move
164
- const match = csaMove.match(/(?:[\+-])?([1-9][1-9])([1-9][1-9])(OU|HI|RY|KA|UM|KI|GI|NG|KE|NK|KY|NY|FU|TO)/);
165
- if (!match) {
166
- // Drop
167
- const match = csaMove.match(/(?:[\+-])?00([1-9][1-9])(HI|KA|KI|GI|KE|KY|FU)/);
168
- if (!match)
169
- return;
170
- const drop = {
171
- role: util_1.csaToRole(match[2]),
172
- to: csaUtil_1.parseCsaSquare(match[1]),
173
- };
174
- return drop;
175
- }
176
- const role = util_1.csaToRole(match[3]);
177
- const orig = csaUtil_1.parseCsaSquare(match[1]);
178
- return {
179
- from: orig,
180
- to: csaUtil_1.parseCsaSquare(match[2]),
181
- promotion: ((_a = pos.board.get(orig)) === null || _a === void 0 ? void 0 : _a.role) !== role,
182
- };
183
- }
184
- exports.parseCsaMove = parseCsaMove;
185
- function parseCsaMoves(pos, csaMoves) {
186
- pos = pos.clone();
187
- const moves = [];
188
- for (const m of csaMoves) {
189
- const move = parseCsaMove(pos, m);
190
- if (!move)
191
- return moves;
192
- pos.play(move);
193
- moves.push(move);
194
- }
195
- return moves;
196
- }
197
- exports.parseCsaMoves = parseCsaMoves;
198
- // Making CSA formatted moves
199
- function makeCsaMove(pos, move) {
200
- if (types_1.isDrop(move)) {
201
- return '00' + csaUtil_1.makeCsaSquare(move.to) + util_1.roleToCsa(move.role);
202
- }
203
- else {
204
- const role = pos.board.getRole(move.from);
205
- if (!role)
206
- return '%ERROR';
207
- return csaUtil_1.makeCsaSquare(move.from) + csaUtil_1.makeCsaSquare(move.to) + util_1.roleToCsa(move.promotion ? util_1.promote(role) : role);
208
- }
209
- }
210
- exports.makeCsaMove = makeCsaMove;
211
- function makeCsaVariation(pos, variation) {
212
- pos = pos.clone();
213
- const line = [];
214
- for (const m of variation) {
215
- line.push((pos.turn === 'sente' ? '+' : '-') + makeCsaMove(pos, m));
216
- pos.play(m);
217
- }
218
- return line.join('\n');
219
- }
220
- exports.makeCsaVariation = makeCsaVariation;
221
- function normalizedCsaLines(csa) {
222
- return csa
223
- .replace(/,/g, '\n')
224
- .split(/[\r\n]+/)
225
- .map(l => l.trim())
226
- .filter(l => l);
227
- }
228
- exports.normalizedCsaLines = normalizedCsaLines;
229
- //# sourceMappingURL=csa.js.map
package/csa.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"csa.js","sourceRoot":"","sources":["src/csa.ts"],"names":[],"mappings":"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"}
package/csaUtil.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Square } from './types';
2
- export declare function parseCsaSquare(str: string): Square | undefined;
3
- export declare function makeCsaSquare(sq: Square): string;
package/csaUtil.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeCsaSquare = exports.parseCsaSquare = void 0;
4
- const util_1 = require("./util");
5
- function parseCsaSquare(str) {
6
- if (str.length !== 2)
7
- return;
8
- if (str === '00')
9
- return 0; // for pocket
10
- const file = Math.abs(str.charCodeAt(0) - '9'.charCodeAt(0));
11
- const rank = Math.abs(str.charCodeAt(1) - '9'.charCodeAt(0));
12
- if (file < 0 || file >= 9 || rank < 0 || rank >= 9)
13
- return;
14
- return file + 9 * rank;
15
- }
16
- exports.parseCsaSquare = parseCsaSquare;
17
- function makeCsaSquare(sq) {
18
- return (9 - util_1.squareFile(sq)).toString() + (9 - util_1.squareRank(sq));
19
- }
20
- exports.makeCsaSquare = makeCsaSquare;
21
- //# sourceMappingURL=csaUtil.js.map
package/csaUtil.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"csaUtil.js","sourceRoot":"","sources":["src/csaUtil.ts"],"names":[],"mappings":";;;AACA,iCAAgD;AAEhD,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,CAAC,aAAa;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO;IAC3D,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AACzB,CAAC;AAPD,wCAOC;AAED,SAAgB,aAAa,CAAC,EAAU;IACtC,OAAO,CAAC,CAAC,GAAG,iBAAU,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,iBAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAFD,sCAEC"}
package/fen.d.ts DELETED
@@ -1,32 +0,0 @@
1
- import { Result } from '@badrap/result';
2
- import { Piece } from './types';
3
- import { Board } from './board';
4
- import { Setup, MaterialSide, Material } from './setup';
5
- export declare const INITIAL_BOARD_FEN = "lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL";
6
- export declare const INITIAL_EPD: string;
7
- export declare const INITIAL_FEN: string;
8
- export declare const EMPTY_BOARD_FEN = "9/9/9/9/9/9/9/9/9";
9
- export declare const EMPTY_EPD: string;
10
- export declare const EMPTY_FEN: string;
11
- export declare enum InvalidFen {
12
- Fen = "ERR_FEN",
13
- Board = "ERR_BOARD",
14
- Pockets = "ERR_POCKETS",
15
- Turn = "ERR_TURN",
16
- Fullmoves = "ERR_FULLMOVES"
17
- }
18
- export declare class FenError extends Error {
19
- }
20
- export declare function parseBoardFen(boardPart: string): Result<Board, FenError>;
21
- export declare function parsePockets(pocketPart: string): Result<Material, FenError>;
22
- export declare function parseFen(fen: string): Result<Setup, FenError>;
23
- interface FenOpts {
24
- epd?: boolean;
25
- }
26
- export declare function parsePiece(str: string): Piece | undefined;
27
- export declare function makePiece(piece: Piece): string;
28
- export declare function makeBoardFen(board: Board): string;
29
- export declare function makePocket(material: MaterialSide): string;
30
- export declare function makePockets(pocket: Material): string;
31
- export declare function makeFen(setup: Setup, opts?: FenOpts): string;
32
- export {};