chess-notation-parser-0.1.0 has been yanked.
                    
                Chess notation parser
Crate transforms algebraic chess notation into software readable structs and
vice versa. Parsed chess notation for each turn is stored within Turn
struct.
To parse a certain chess turn, such as d2xe3, send it in form of &str as
an argument into Turn::try_from() function.
Turn is an enum with two elements:
- Castling- a struct which describes castling turn
- Move- a struct which describes every other possible turn
Example for Castling turn
0-0 will be translated to:
# use ;
# use ;
# let turn =
Castling;
# assert_eq!;
Examples for Move turns
d6 will be translated to:
# use ;
# let turn =
Move ;
# assert_eq!
d7xe8=B+? will be translated to:
# use ;
# let turn =
Move ;
# assert_eq!
Nab3# will be translated to:
# use ;
# let turn =
Move ;
# assert_eq!
Chess notation parser rules
- 
Square notation should use lowercase alphabetic characters - Valid: a1,a2...h7,h8.
 
- Valid: 
- 
Castling notation can be written with both 0andO- Valid example: 0-0-0orO-O
- When Castlingturn is printed out, it will be printed with0notation
 
- Valid example: 
- 
Notation for pieces: - K: King
- Q: Queen
- R: Rook
- B: Bishop
- N: Knight
- Pawns are indicated by the absence of the letter
 
- 
Capture is annotated with a lowercase xcharacter- Valid example: Qxd3
 
- Valid example: 
- 
Check is annotated with a +character- Valid example: Qd3+
 
- Valid example: 
- 
Checkmate is annotated with a #character- Valid example: Qd3#
 
- Valid example: 
- 
Pawn promotion is annoted with =symbol followed by a piece to which pawn is promoted to- Pawn promotion is valid only for ranks 8and1
- Valid example: g8=Q
 
- Pawn promotion is valid only for ranks 
- 
Comments ??,!!,?,!,!?,?!are allowed only at the end of the turn- Valid example: a1=B??
- Invalid example: ??a1=B
 
- Valid example: