Expand description
§SGF Parser for Rust
A sgf parser for rust. Supports all SGF properties, and tree branching.
Using pest for the actual parsing part.
NOTE: when converting a GameTree to a string we convert all charset tokens to be UTF-8, since
that is the encoding for all strings in Rust.
§Example usage
use sgf_parser::*;
let sgf_source = "(;C[comment]EV[event]PB[black]PW[white];B[aa])";
let tree: Result<GameTree, SgfError> = parse(sgf_source);
let tree = tree.unwrap();
let unknown_nodes = tree.get_unknown_nodes();
assert_eq!(unknown_nodes.len(), 0);
let invalid_nodes = tree.get_invalid_nodes();
assert_eq!(invalid_nodes.len(), 0);
tree.iter().for_each(|node| {
  assert!(!node.tokens.is_empty());
});
let sgf_string: String = tree.into();
assert_eq!(sgf_source, sgf_string);Structs§
- Game
Node  - A game node, containing a vector of tokens
 - Game
Tree  - A game tree, containing it’s nodes and possible variations following the last node
 - SgfError
 - SGF parsing, or traversal, related errors
 
Enums§
- Action
 - Color
 - Indicates what color the token is related to
 - Display
Nodes  - Encoding
 - Game
 - Outcome
 - RuleSet
 - Provides the used rules for this game. Because there are many different rules, SGF requires mandatory names only for a small set of well known rule sets. Note: it’s beyond the scope of this specification to give an exact specification of these rule sets. Mandatory names for Go (GM[1]): “AGA” (rules of the American Go Association) “GOE” (the Ing rules of Goe) “Japanese” (the Nihon-Kiin rule set) “NZ” (New Zealand rules)
 - SgfError
Kind  - Describes what kind of error we’re dealing with
 - SgfToken
 - Enum describing all possible SGF Properties
 
Functions§
- parse
 - Main entry point to the library. Parses an SGF string, and returns a 
GameTree.