1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//!
//!
//! # Examples
//!
//!
//! ## Usage
//!
//!```
//!extern crate env_logger;
//!
//!use pgnparse::parser::*;
//!
//!use log::{info};
//!
//!fn main(){
//!	env_logger::init();
//!
//!	let pgn = r#"[FEN "8/8/8/8/8/7k/8/7K w - - 0 1"]
//![White "White"]
//![Black "Black"]
//![Variant "Atomic"]
//!
//!1. Kh2 Kg2
//!"#;
//!
//!	info!("parsing pgn");
//!	
//!	let result = parse_pgn_to_rust_struct(pgn);
//!	
//!	println!("rust struct = {:?}", result);
//!	
//!	let result = parse_pgn_to_json_string(pgn);
//!	
//!	println!("json = {}", result);
//!}
//!```
//!
//!
//! ## Advanced
//!
//!```
//!extern crate env_logger;
//!
//!use pgnparse::parser::*;
//!
//!fn main(){
//!	env_logger::init();
//!
//!	let mut book = Book::new().me("chesshyperbot");
//!
//!	book.parse("test.pgn");
//!
//!	let pos = book.positions.get("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -");
//!
//!	println!("pos for epd = {:?}", pos);
//!
//!	if let Some(pos) = pos {
//!		let m = pos.get_random_weighted_by_plays();
//!
//!		println!("random weighted by plays = {:?} , plays = {}", m, m.unwrap().plays());
//!
//!		let m = pos.get_random_weighted_by_perf();
//!
//!		println!("random weighted by perf = {:?} , perf = {}", m, m.unwrap().perf());
//!
//!		let m = pos.get_random_mixed(50);
//!
//!		println!("random mixed = {:?}", m);
//!	}
//!}
//!```
//!


// lib

pub mod parser;