pgn

package module
v0.0.0-...-2bd5402 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 27, 2014 License: MIT Imports: 7 Imported by: 0

README

pgn

a pgn parser for golang (still in development; attempting to stabilize API soon--feedback welcome)

Build Status Coverage Status

Normal go install... go get github.com/wfreeman/pgn

minimum viable snippet

package main

import (
	"fmt"
	"log"
	"os"

	"github.com/wfreeman/pgn"
)

func main() {
	f, err := os.Open("polgar.pgn")
	if err != nil {
		log.Fatal(err)
	}
	ps := pgn.NewPGNScanner(f)
	// while there's more to read in the file
	for ps.Next() {
		// scan the next game
		game, err := ps.Scan()
		if err != nil {
			log.Fatal(err)
		}

		// print out tags
		fmt.Println(game.Tags)

		// make a new board so we can get FEN positions
		b := pgn.NewBoard()
		for _, move := range game.Moves {
			// make the move on the board
			b.MakeMove(move)
			// print out FEN for each move in the game
			fmt.Println(b)
		}
	}
}

produces output like this for each game in the pgn file:

map[Event:Women's Chess Cup
    Site:Dresden GER 
    Round:7.1 
    Black:Polgar,Z 
    Result:1/2-1/2 
    Date:2006.07.08 
    White:Paehtz,E 
    WhiteElo:2438 
    BlackElo:2577 
    ECO:B35]
rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq d3 0 1
rnbqkbnr/pppp1ppp/4p3/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 0 2
rnbqkbnr/pppp1ppp/4p3/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 1 2
rnbqkbnr/pppp2pp/4p3/5p2/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq f6 0 3
rnbqkbnr/pppp2pp/4p3/3P1p2/8/5N2/PPP1PPPP/RNBQKB1R b KQkq - 0 3
rnbqkb1r/pppp2pp/4pn2/3P1p2/8/5N2/PPP1PPPP/RNBQKB1R w KQkq - 1 4
rnbqkb1r/pppp2pp/4Pn2/5p2/8/5N2/PPP1PPPP/RNBQKB1R b KQkq - 0 4
rnbqkb1r/ppp3pp/4pn2/5p2/8/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 5
rnbQkb1r/ppp3pp/4pn2/5p2/8/5N2/PPP1PPPP/RNB1KB1R b KQkq - 0 5
rnbk1b1r/ppp3pp/4pn2/5p2/8/5N2/PPP1PPPP/RNB1KB1R w KQ - 0 6
rnbk1b1r/ppp3pp/4pn2/5p2/8/2N2N2/PPP1PPPP/R1B1KB1R b KQ - 1 6
rnbk3r/ppp3pp/4pn2/5p2/1b6/2N2N2/PPP1PPPP/R1B1KB1R w KQ - 2 7
rnbk3r/ppp3pp/4pn2/5p2/1b6/2N2N2/PPPBPPPP/R3KB1R b KQ - 3 7
rnb4r/ppp1k1pp/4pn2/5p2/1b6/2N2N2/PPPBPPPP/R3KB1R w KQ - 4 8
rnb4r/ppp1k1pp/4pn2/5p2/1b6/P1N2N2/1PPBPPPP/R3KB1R b KQ - 0 8
rnb4r/ppp1k1pp/4pn2/2b2p2/8/P1N2N2/1PPBPPPP/R3KB1R w KQ - 1 9
rnb4r/ppp1k1pp/4pn2/2b2p2/1P6/P1N2N2/2PBPPPP/R3KB1R b KQ b3 0 9
rnb4r/ppp1k1pp/3bpn2/5p2/1P6/P1N2N2/2PBPPPP/R3KB1R w KQ - 1 10
rnb4r/ppp1k1pp/3bpn2/1N3p2/1P6/P4N2/2PBPPPP/R3KB1R b KQ - 2 10
rnb4r/ppp1k1pp/3bp3/1N3p2/1P2n3/P4N2/2PBPPPP/R3KB1R w KQ - 3 11
rnb4r/ppp1k1pp/3bp3/1N3p2/1P2n3/P3BN2/2P1PPPP/R3KB1R b KQ - 4 11
rnb4r/1pp1k1pp/3bp3/pN3p2/1P2n3/P3BN2/2P1PPPP/R3KB1R w KQ a6 0 12
rnb4r/1pp1k1pp/3Np3/p4p2/1P2n3/P3BN2/2P1PPPP/R3KB1R b KQ - 0 12
rnb4r/1p2k1pp/3pp3/p4p2/1P2n3/P3BN2/2P1PPPP/R3KB1R w KQ - 0 13
rnb4r/1p2k1pp/3pp3/P4p2/4n3/P3BN2/2P1PPPP/R3KB1R b KQ - 0 13
1nb4r/1p2k1pp/3pp3/r4p2/4n3/P3BN2/2P1PPPP/R3KB1R w KQ - 0 14
1nb4r/1p2k1pp/3pp3/r4p2/4n3/P3B3/2PNPPPP/R3KB1R b KQ - 1 14
1nb4r/1p2k1pp/3pp3/r4p2/8/P3B3/2PnPPPP/R3KB1R w KQ - 0 15
1nb4r/1p2k1pp/3pp3/r4p2/8/P7/2PBPPPP/R3KB1R b KQ - 0 15
1nb4r/1p2k1pp/3pp3/2r2p2/8/P7/2PBPPPP/R3KB1R w KQ - 1 16
1nb4r/1p2k1pp/3pp3/2r2p2/8/P7/2PBPPPP/2KR1B1R b - - 2 16
2b4r/1p2k1pp/2npp3/2r2p2/8/P7/2PBPPPP/2KR1B1R w - - 3 17
2b4r/1p2k1pp/2npp3/2r2p2/8/P3P3/2PB1PPP/2KR1B1R b - - 0 17
7r/1p1bk1pp/2npp3/2r2p2/8/P3P3/2PB1PPP/2KR1B1R w - - 1 18
7r/1p1bk1pp/2npp3/2r2p2/5P2/P3P3/2PB2PP/2KR1B1R b - f3 0 18
2r5/1p1bk1pp/2npp3/2r2p2/5P2/P3P3/2PB2PP/2KR1B1R w - - 1 19
2r5/1p1bk1pp/2npp3/2r2p2/5P2/P2BP3/2PB2PP/2KR3R b - - 2 19
2r5/1p1bk1pp/2np4/2r1pp2/5P2/P2BP3/2PB2PP/2KR3R w - - 0 20
2r5/1p1bk1pp/2np4/2r1pp2/4PP2/P2B4/2PB2PP/2KR3R b - - 0 20
2r5/1p1bk1pp/2np4/2r1p3/4pP2/P2B4/2PB2PP/2KR3R w - - 0 21
2r5/1p1bk1pp/2np4/2r1p3/4BP2/P7/2PB2PP/2KR3R b - - 0 21
2r5/1p1bk1pp/3p4/2r1p3/3nBP2/P7/2PB2PP/2KR3R w - - 1 22
2r5/1p1bk1pp/3p4/2r1P3/3nB3/P7/2PB2PP/2KR3R b - - 0 22
2r5/1p1bk1pp/3p4/4r3/3nB3/P7/2PB2PP/2KR3R w - - 0 23
2r5/1p1bk1pp/3p4/4r1B1/3nB3/P7/2P3PP/2KR3R b - - 1 23
2r5/1p1bk1pp/3p4/6r1/3nB3/P7/2P3PP/2KR3R w - - 0 24
2r5/1p1bk1pp/3p4/6r1/3RB3/P7/2P3PP/2K4R b - - 0 24
2r5/1p1bk2p/3p2p1/6r1/3RB3/P7/2P3PP/2K4R w - - 0 25
2r5/1B1bk2p/3p2p1/6r1/3R4/P7/2P3PP/2K4R b - - 0 25
8/1B1bk2p/3p2p1/6r1/3R4/P1r5/2P3PP/2K4R w - - 1 26
8/1B1bk2p/3p2p1/6r1/3R4/P1r5/2P3PP/2K1R3 b - - 2 26
8/1B1bk2p/3p2p1/4r3/3R4/P1r5/2P3PP/2K1R3 w - - 3 27
8/1B1bk2p/3p2p1/4r3/4R3/P1r5/2P3PP/2K1R3 b - - 4 27
8/1Brbk2p/3p2p1/4r3/4R3/P7/2P3PP/2K1R3 w - - 5 28
8/2rbk2p/B2p2p1/4r3/4R3/P7/2P3PP/2K1R3 b - - 6 28
8/2rb3p/B2p1kp1/4r3/4R3/P7/2P3PP/2K1R3 w - - 7 29
8/2rb3p/B2p1kp1/4r3/4R3/P7/2P3PP/2K2R2 b - - 8 29
8/2r4p/B2p1kp1/4rb2/4R3/P7/2P3PP/2K2R2 w - - 9 30
8/2r4p/3p1kp1/4rb2/4R3/P2B4/2P3PP/2K2R2 b - - 10 30
8/2r3kp/3p2p1/4rb2/4R3/P2B4/2P3PP/2K2R2 w - - 11 31
8/2r3kp/3p2p1/4rb2/3R4/P2B4/2P3PP/2K2R2 b - - 12 31
8/2r3kp/3p2p1/4r3/3R4/P2b4/2P3PP/2K2R2 w - - 0 32
8/2r3kp/3p2p1/4r3/8/P2R4/2P3PP/2K2R2 b - - 0 32
8/2r3kp/3p2p1/8/8/P2R4/2P1r1PP/2K2R2 w - - 1 33
8/2r3kp/3p2p1/8/8/P7/2PRr1PP/2K2R2 b - - 2 33
8/2r3kp/3p2p1/8/8/P3r3/2PR2PP/2K2R2 w - - 3 34
8/2r3kp/3R2p1/8/8/P3r3/2P3PP/2K2R2 b - - 0 34
8/2r3kp/3R2p1/8/8/r7/2P3PP/2K2R2 w - - 0 35
8/2r3kp/3R2p1/8/8/r7/2P3PP/2KR4 b - - 1 35
8/r1r3kp/3R2p1/8/8/8/2P3PP/2KR4 w - - 2 36
8/r1r3kp/6p1/8/8/3R4/2P3PP/2KR4 b - - 3 36
8/1rr3kp/6p1/8/8/3R4/2P3PP/2KR4 w - - 4 37
8/1rr3kp/6p1/8/8/2PR4/6PP/2KR4 b - - 0 37
8/r1r3kp/6p1/8/8/2PR4/6PP/2KR4 w - - 1 38
8/r1r3kp/6p1/8/8/2PR4/3R2PP/2K5 b - - 2 38
8/r1r4p/6pk/8/8/2PR4/3R2PP/2K5 w - - 3 39
8/r1r4p/6pk/8/8/2PR4/2KR2PP/8 b - - 4 39
8/2r4p/6pk/8/8/r1PR4/2KR2PP/8 w - - 5 40
8/2r4p/6pk/8/8/r1PR4/1K1R2PP/8 b - - 6 40
8/2r4p/6pk/r7/8/2PR4/1K1R2PP/8 w - - 7 41
8/2r4p/6pk/r7/3R4/2P5/1K1R2PP/8 b - - 8 41
8/1r5p/6pk/r7/3R4/2P5/1K1R2PP/8 w - - 9 42
8/1r5p/6pk/r7/1R6/2P5/1K1R2PP/8 b - - 10 42
8/r6p/6pk/r7/1R6/2P5/1K1R2PP/8 w - - 11 43
8/r6p/6pk/r7/7R/2P5/1K1R2PP/8 b - - 12 43
8/r5kp/6p1/r7/7R/2P5/1K1R2PP/8 w - - 13 44
8/r5kp/6p1/r7/3R4/2P5/1K1R2PP/8 b - - 14 44
8/r5kp/6p1/8/3R4/2P5/rK1R2PP/8 w - - 15 45
8/r5kp/6p1/8/3R4/1KP5/r2R2PP/8 b - - 16 45
8/r5kp/6p1/8/3R4/rKP5/3R2PP/8 w - - 17 46
8/r5kp/6p1/8/3R4/r1P5/2KR2PP/8 b - - 18 46
8/r5kp/6p1/8/3R4/2P5/r1KR2PP/8 w - - 19 47
8/r5kp/6p1/8/3R4/2P5/r2R2PP/3K4 b - - 20 47
8/r5kp/6p1/8/3R4/2P5/3R2PP/r2K4 w - - 21 48
8/r5kp/6p1/8/3R4/2P5/3RK1PP/r7 b - - 22 48
8/r6p/6pk/8/3R4/2P5/3RK1PP/r7 w - - 23 49
8/r2R3p/6pk/8/8/2P5/3RK1PP/r7 b - - 24 49
8/3R3p/6pk/r7/8/2P5/3RK1PP/r7 w - - 25 50
8/7p/6pk/r2R4/8/2P5/3RK1PP/r7 b - - 26 50
8/7p/r5pk/3R4/8/2P5/3RK1PP/r7 w - - 27 51
8/7p/r5pk/3R4/8/2PK4/3R2PP/r7 b - - 28 51
8/7p/r5pk/3R4/8/2PK4/3R2PP/2r5 w - - 29 52
8/7p/r5pk/8/3R4/2PK4/3R2PP/2r5 b - - 30 52
8/7p/6pk/8/3R4/r1PK4/3R2PP/2r5 w - - 31 53
8/7p/6pk/8/2R5/r1PK4/3R2PP/2r5 b - - 32 53
8/r6p/6pk/8/2R5/2PK4/3R2PP/2r5 w - - 33 54
8/r6p/6pk/8/2R5/2PK4/4R1PP/2r5 b - - 34 54
8/r6p/6pk/8/2R5/2PK4/4R1PP/3r4 w - - 35 55
8/r6p/6pk/8/2R5/2P5/2K1R1PP/3r4 b - - 36 55
8/r6p/6pk/8/2R5/2P5/2K1R1PP/r7 w - - 37 56
8/r6p/6pk/8/7R/2P5/2K1R1PP/r7 b - - 38 56
8/r5kp/6p1/8/7R/2P5/2K1R1PP/r7 w - - 39 57
8/r5kp/6p1/8/4R3/2P5/2K1R1PP/r7 b - - 40 57
8/r6p/6pk/8/4R3/2P5/2K1R1PP/r7 w - - 41 58
8/r6p/6pk/8/4R3/2P4P/2K1R1P1/r7 b - - 0 58
8/r6p/6pk/8/4R3/2P4P/r1K1R1P1/8 w - - 1 59
8/r6p/6pk/8/4R3/2PK3P/r3R1P1/8 b - - 2 59
8/r6p/6pk/8/4R3/r1PK3P/4R1P1/8 w - - 3 60
8/r3R2p/6pk/8/8/r1PK3P/4R1P1/8 b - - 4 60
8/4R2p/r5pk/8/8/r1PK3P/4R1P1/8 w - - 5 61
8/4R2p/r5pk/8/4R3/r1PK3P/6P1/8 b - - 6 61
8/4R2p/2r3pk/8/4R3/r1PK3P/6P1/8 w - - 7 62
8/4R2p/2r3pk/8/2R5/r1PK3P/6P1/8 b - - 8 62
8/4R2p/3r2pk/8/2R5/r1PK3P/6P1/8 w - - 9 63
8/4R2p/3r2pk/8/3R4/r1PK3P/6P1/8 b - - 10 63
8/4R2p/2r3pk/8/3R4/r1PK3P/6P1/8 w - - 11 64
8/4R2p/2r3pk/8/7R/r1PK3P/6P1/8 b - - 12 64
8/4R2p/2r3p1/6k1/7R/r1PK3P/6P1/8 w - - 13 65
8/4R2p/2r3p1/6k1/2R5/r1PK3P/6P1/8 b - - 14 65
8/4R2p/3r2p1/6k1/2R5/r1PK3P/6P1/8 w - - 15 66
8/4R2p/3r2p1/6k1/2R5/r1P1K2P/6P1/8 b - - 16 66
8/4R3/3r2p1/6kp/2R5/r1P1K2P/6P1/8 w - h6 0 67
8/4R3/3r2p1/6kp/2R4P/r1P1K3/6P1/8 b - - 0 67
8/4R3/3r1kp1/7p/2R4P/r1P1K3/6P1/8 w - - 1 68
8/2R5/3r1kp1/7p/2R4P/r1P1K3/6P1/8 b - - 2 68
8/2R5/4rkp1/7p/2R4P/r1P1K3/6P1/8 w - - 3 69
8/2R5/4rkp1/7p/4R2P/r1P1K3/6P1/8 b - - 4 69
8/2R5/3r1kp1/7p/4R2P/r1P1K3/6P1/8 w - - 5 70
8/8/3r1kp1/2R4p/4R2P/r1P1K3/6P1/8 b - - 6 70
8/8/3r1kp1/2R4p/4R2P/2P1K3/r5P1/8 w - - 7 71
8/8/3r1kp1/2R4p/5R1P/2P1K3/r5P1/8 b - - 8 71
8/8/3rk1p1/2R4p/5R1P/2P1K3/r5P1/8 w - - 9 72
8/8/3rk1p1/6Rp/5R1P/2P1K3/r5P1/8 b - - 10 72
8/3k4/3r2p1/6Rp/5R1P/2P1K3/r5P1/8 w - - 11 73
8/3k4/3r2p1/6Rp/3R3P/2P1K3/r5P1/8 b - - 12 73
8/3k4/r2r2p1/6Rp/3R3P/2P1K3/6P1/8 w - - 13 74
8/3k4/r2r2R1/7p/3R3P/2P1K3/6P1/8 b - - 0 74
8/3k4/r5R1/7p/3r3P/2P1K3/6P1/8 w - - 0 75
8/3k2R1/r7/7p/3r3P/2P1K3/6P1/8 b - - 1 75
8/6R1/r3k3/7p/3r3P/2P1K3/6P1/8 w - - 2 76
8/6R1/r3k3/7p/3P3P/4K3/6P1/8 b - - 0 76

license

MIT License, see LICENSE file.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrAmbiguousMove       error = errors.New("pgn: ambiguous algebraic move")
	ErrUnknownMove         error = errors.New("pgn: unknown move")
	ErrAttackerNotFound    error = errors.New("pgn: attacker not found")
	ErrMoveFromEmptySquare error = errors.New("pgn: move from empty square")
	ErrMoveWrongColor      error = errors.New("pgn: move from wrong color")
	ErrMoveThroughPiece    error = errors.New("pgn: move through piece")
	ErrMoveThroughCheck    error = errors.New("pgn: move through check")
	ErrMoveIntoCheck       error = errors.New("pgn: move into check")
	ErrMoveInvalidCastle   error = errors.New("pgn: move invalid castle")
)

Functions

func FORFromBoard

func FORFromBoard(b *Board) string

func ParseMoves

func ParseMoves(s *scanner.Scanner, g *Game) error

func ParseTags

func ParseTags(s *scanner.Scanner, g *Game) error

Types

type Board

type Board struct {
	// contains filtered or unexported fields
}

func NewBoard

func NewBoard() *Board

func NewBoardFEN

func NewBoardFEN(fen string) (*Board, error)

func (Board) FindKing

func (b Board) FindKing(color Color) Position

func (Board) GetPiece

func (b Board) GetPiece(p Position) Piece

func (*Board) MakeAlgebraicMove

func (b *Board) MakeAlgebraicMove(str string, color Color) error

func (*Board) MakeCoordMove

func (b *Board) MakeCoordMove(str string) error

func (*Board) MakeMove

func (b *Board) MakeMove(m Move) error

func (*Board) MoveFromAlgebraic

func (b *Board) MoveFromAlgebraic(str string, color Color) (Move, error)

func (*Board) RemovePiece

func (b *Board) RemovePiece(pos Position, p Piece)

func (*Board) SetPiece

func (b *Board) SetPiece(pos Position, p Piece)

func (*Board) String

func (b *Board) String() string

type CastleStatus

type CastleStatus int8
const (
	Both CastleStatus = iota
	None
	Kingside
	Queenside
)

func (CastleStatus) String

func (cs CastleStatus) String(c Color) string

type Color

type Color int8
const (
	NoColor Color = iota
	Black
	White
)

func (Color) String

func (c Color) String() string

type FEN

type FEN struct {
	FOR                 string
	ToMove              Color
	WhiteCastleStatus   CastleStatus
	BlackCastleStatus   CastleStatus
	EnPassantVulnerable Position
	HalfmoveClock       int
	Fullmove            int
}

func FENFromBoard

func FENFromBoard(b *Board) FEN

func ParseFEN

func ParseFEN(fenstr string) (*FEN, error)

func (FEN) String

func (fen FEN) String() string

type File

type File byte
const (
	NoFile File = ' '
	FileA  File = 'a'
	FileB  File = 'b'
	FileC  File = 'c'
	FileD  File = 'd'
	FileE  File = 'e'
	FileF  File = 'f'
	FileG  File = 'g'
	FileH  File = 'h'
)

type Game

type Game struct {
	Moves []Move
	Tags  map[string]string
}

func ParseGame

func ParseGame(s *scanner.Scanner) (*Game, error)

type Move

type Move struct {
	From    Position
	To      Position
	Promote Piece
}
var (
	NilMove Move = Move{From: NoPosition, To: NoPosition}
)

func MoveFromCoord

func MoveFromCoord(str string) (Move, error)

func (Move) String

func (m Move) String() string

type PGNScanner

type PGNScanner struct {
	// contains filtered or unexported fields
}

func NewPGNScanner

func NewPGNScanner(r io.Reader) *PGNScanner

func (*PGNScanner) Next

func (ps *PGNScanner) Next() bool

func (*PGNScanner) Scan

func (ps *PGNScanner) Scan() (*Game, error)

type Piece

type Piece byte
const (
	NoPiece     Piece = ' '
	BlackPawn   Piece = 'p'
	BlackKnight Piece = 'n'
	BlackBishop Piece = 'b'
	BlackRook   Piece = 'r'
	BlackQueen  Piece = 'q'
	BlackKing   Piece = 'k'
	WhitePawn   Piece = 'P'
	WhiteKnight Piece = 'N'
	WhiteBishop Piece = 'B'
	WhiteRook   Piece = 'R'
	WhiteQueen  Piece = 'Q'
	WhiteKing   Piece = 'K'
)

func (Piece) Color

func (p Piece) Color() Color

func (*Piece) Normalize

func (p *Piece) Normalize()

type Position

type Position uint64
const (
	A1 Position = 1 << iota
	B1 Position = 1 << iota
	C1 Position = 1 << iota
	D1 Position = 1 << iota
	E1 Position = 1 << iota
	F1 Position = 1 << iota
	G1 Position = 1 << iota
	H1 Position = 1 << iota
	A2 Position = 1 << iota
	B2 Position = 1 << iota
	C2 Position = 1 << iota
	D2 Position = 1 << iota
	E2 Position = 1 << iota
	F2 Position = 1 << iota
	G2 Position = 1 << iota
	H2 Position = 1 << iota
	A3 Position = 1 << iota
	B3 Position = 1 << iota
	C3 Position = 1 << iota
	D3 Position = 1 << iota
	E3 Position = 1 << iota
	F3 Position = 1 << iota
	G3 Position = 1 << iota
	H3 Position = 1 << iota
	A4 Position = 1 << iota
	B4 Position = 1 << iota
	C4 Position = 1 << iota
	D4 Position = 1 << iota
	E4 Position = 1 << iota
	F4 Position = 1 << iota
	G4 Position = 1 << iota
	H4 Position = 1 << iota
	A5 Position = 1 << iota
	B5 Position = 1 << iota
	C5 Position = 1 << iota
	D5 Position = 1 << iota
	E5 Position = 1 << iota
	F5 Position = 1 << iota
	G5 Position = 1 << iota
	H5 Position = 1 << iota
	A6 Position = 1 << iota
	B6 Position = 1 << iota
	C6 Position = 1 << iota
	D6 Position = 1 << iota
	E6 Position = 1 << iota
	F6 Position = 1 << iota
	G6 Position = 1 << iota
	H6 Position = 1 << iota
	A7 Position = 1 << iota
	B7 Position = 1 << iota
	C7 Position = 1 << iota
	D7 Position = 1 << iota
	E7 Position = 1 << iota
	F7 Position = 1 << iota
	G7 Position = 1 << iota
	H7 Position = 1 << iota
	A8 Position = 1 << iota
	B8 Position = 1 << iota
	C8 Position = 1 << iota
	D8 Position = 1 << iota
	E8 Position = 1 << iota
	F8 Position = 1 << iota
	G8 Position = 1 << iota
	H8 Position = 1 << iota
)
const NoPosition Position = 0

func ParsePosition

func ParsePosition(pstr string) (Position, error)

func PositionFromFileRank

func PositionFromFileRank(f File, r Rank) (p Position)

func (Position) GetFile

func (p Position) GetFile() File

func (Position) GetRank

func (p Position) GetRank() Rank

func (Position) String

func (p Position) String() string

type Rank

type Rank byte
const (
	NoRank Rank = '0'
	Rank1  Rank = '1'
	Rank2  Rank = '2'
	Rank3  Rank = '3'
	Rank4  Rank = '4'
	Rank5  Rank = '5'
	Rank6  Rank = '6'
	Rank7  Rank = '7'
	Rank8  Rank = '8'
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL