Summary
- Added scala-parser-combinators_3:2.4.0 dependency to modules/io
- Implemented FenParserCombinators as an alternative FEN parser using RegexParsers, with the same public API as the
existing FenParser
- Parsers are built bottom-up: piece characters → rank tokens → rank → board, composed with explicit field separators
into a full FEN parser
- Added FenParserCombinatorsTest mirroring the existing FenParserTest to prove behavioural equivalence
Test plan
- All existing tests pass — FenParser and all other modules untouched
- FenParserCombinatorsTest covers all cases: valid FEN, invalid color, invalid castling, invalid board shapes, en
passant, round-trip via FenExporter
- 100% line/branch/method coverage on FenParserCombinators
Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #21
Reviewed-by: Janis <janis-e@gmx.de>
Co-authored-by: Leon Hermann <lq@blackhole.local>
Co-committed-by: Leon Hermann <lq@blackhole.local>
Summary
- Curried candidateMoves, legalMoves, and applyMove in the RuleSet trait to separate (context) as the world being
operated on from the computation parameter
- Updated DefaultRules overrides and all internal call sites
- Updated all external call sites: GameEngine, PgnParser, PgnExporter, ChessBoardView, and all affected tests
Test plan
- All existing tests pass (./gradlew build)
- No behaviour changes — pure style refactoring, existing test suite is the regression guard
Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #18
Reviewed-by: Janis <janis-e@gmx.de>
Co-authored-by: Leon Hermann <lq@blackhole.local>
Co-committed-by: Leon Hermann <lq@blackhole.local>