5 stable releases
1.0.4 | Jan 20, 2024 |
---|---|
1.0.1 | Jan 19, 2024 |
#1375 in Parser implementations
38KB
821 lines
SGF-TOOL
SGF file format parser and builder.
Reference: https://red-bean.com/sgf/sgf4.html
Examples
use std::borrow::Cow;
use sgf_tool::*;
fn main() -> Result<(), SgfToolError> {
// Parse sgf
let source = "(;FF[4];C[root];SZ[19];B[aa];W[ab])";
let base = parse(&source)?;
for token in base.tokens.iter() {
println!("Token: {:?}", token);
}
// Or
assert_eq!(base.get(TokenType::FileFormat), Some(Cow::Owned(Token::FileFormat(4))).as_ref());
/* Rebuild sgf and validage */
let mut buffer = String::new();
base.build(&mut buffer)?;
assert_eq!(buffer, source);
// Build sgf
let mut base = sgf_tool::Base::default();
base.add_token(Token::Application("sgf-tool"));
base.add_token(Token::BlackMove(Move::Move(Point("ab"))));
base.add_token(Token::WhiteMove(Move::Move(Point("bc"))));
base.add_token(Token::BlackMove(Move::Pass));
assert_eq!("(;AP[sgf-tool];B[ab];W[bc];B[])", &build(base)?);
Ok(())
}
Dependencies
~2.2–3MB
~61K SLoC