| 9 | use std::path::Path; |
| 10 | |
| 11 | fn main() { |
| 12 | let in_path = Path::new("../data/labelprop/pgs_df.dms"); |
| 13 | let in_file = BufReader::new(File::open(&in_path).unwrap()); |
| 14 | |
| 15 | let edges = File::create(&Path::new("../data/labelprop/edges.pgs_df")).unwrap(); |
| 16 | let nodes = File::create(&Path::new("../data/labelprop/nodes.pgs_df")).unwrap(); |
| 17 | |
| 18 | let mut edge_writer = BufWriter::new(edges); |
| 19 | let mut node_writer = BufWriter::new(nodes); |
| 20 | |
| 21 | for readline in in_file.lines() { |
| 22 | let line = readline.expect("read error"); |
| 23 | |
| 24 | if !line.starts_with('#') && !line.is_empty() { |
| 25 | let mut elts = line[..].split_whitespace(); |
| 26 | let e = elts.next().unwrap(); |
| 27 | let v = elts.next().unwrap(); |
| 28 | let attr: &str = elts.next().unwrap(); |
| 29 | |
| 30 | let writer = match attr { |
| 31 | "e" => &mut edge_writer, |
| 32 | "n" => &mut node_writer, |
| 33 | unk => panic!("unknown type: {}", unk), |
| 34 | }; |
| 35 | |
| 36 | writer.write_all(e.as_bytes()).unwrap(); |
| 37 | writer.write_all(b" ").unwrap(); |
| 38 | writer.write_all(v.as_bytes()).unwrap(); |
| 39 | writer.write_all(b"\n").unwrap(); |
| 40 | } |
| 41 | } |
| 42 | |
| 43 | edge_writer.flush().unwrap(); |
| 44 | node_writer.flush().unwrap(); |
| 45 | } |