Crate sgf_parser

Source
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§

GameNode
A game node, containing a vector of tokens
GameTree
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
DisplayNodes
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)
SgfErrorKind
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.