code: func fenBoard(boardStr string) (*Board, error) {
  	rankStrs := strings.Split(boardStr, "/")
  	if len(rankStrs) != 8 {
  		return nil, fmt.Errorf("chess: fen invalid board %s", boardStr)
  	}
  	m := map[Square]Piece{}
  	for i, rankStr := range rankStrs {
  		rank := Rank(7 - i)
  		fileMap, err := fenFormRank(rankStr)
  		if err != nil {
  			return nil, err
  		}
  		for file, piece := range fileMap {
  			m[getSquare(file, rank)] = piece
  		}
  	}
  	return newBoard(m), nil
  }
docs: // generates board from fen format: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR