5 个稳定版本

1.0.4 2024 年 1 月 20 日
1.0.1 2024 年 1 月 19 日

#956解析器实现

36 每月下载次数

MIT 许可证

38KB
821

SGF-TOOL

Build & Test Latest Version Rust Documentation Crates.io Crates.io

SGF 文件格式解析器和构建器。

参考: https://red-bean.com/sgf/sgf4.html

示例

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(())
}

依赖关系

~2.4–3.5MB
~66K SLoC