From f9573cf0b5de23e258791fbdc424fd3abbc4fdc5 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 1 Dec 2021 17:00:31 -0500 Subject: simplify getting data --- src/util.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/util.rs') diff --git a/src/util.rs b/src/util.rs index 6a62708..9cc3d6a 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,6 +1,47 @@ use anyhow::Context as _; use std::io::{BufRead as _, Read as _}; +macro_rules! data { + () => {{ + let file = crate::util::src_file_to_data_file(&std::file!()); + std::fs::File::open(file.clone()) + .with_context(|| format!("couldn't find data file {}", file)) + }}; +} + +macro_rules! data_ints { + () => { + crate::util::read_ints(&crate::util::src_file_to_data_file( + &std::file!(), + )) + }; +} + +macro_rules! data_bytes { + () => { + crate::util::read_file(&crate::util::src_file_to_data_file( + &std::file!(), + )) + }; +} + +macro_rules! data_str { + () => { + crate::util::read_file_str(&crate::util::src_file_to_data_file( + &std::file!(), + )) + }; +} + +pub fn src_file_to_data_file(file: &str) -> String { + let parts: Vec<_> = file.split('/').collect(); + format!( + "data/{}/{}.txt", + parts[parts.len() - 3], + parts[parts.len() - 2] + ) +} + pub fn read_ints(filename: &str) -> anyhow::Result> { let f = std::fs::File::open(filename) .with_context(|| format!("couldn't find data file {}", filename))?; -- cgit v1.2.3-54-g00ecf