5 个稳定版本
1.0.4 | 2024 年 1 月 20 日 |
---|---|
1.0.1 | 2024 年 1 月 19 日 |
#956 在 解析器实现
36 每月下载次数
38KB
821 行
SGF-TOOL
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