Skip to main content

apdl_parser/
lib.rs

1use std::{path::Path, str::FromStr};
2mod dlist;
3use anyhow::Context;
4
5pub use self::dlist::Dlist;
6
7mod nlist;
8pub use self::nlist::Nlist;
9
10mod elist;
11pub use self::elist::Elist;
12
13mod prnsol;
14pub use self::prnsol::Prnsol;
15
16
17pub fn clear_nlist(contents: &str) -> impl Iterator<Item = &str> {
18    contents
19        .lines()
20        .filter_map(|line| {
21            let trimmed = line.trim();
22            trimmed.chars().next().and_then(|c| c.is_ascii_digit().then_some(trimmed))
23        })
24}
25
26
27pub fn get_list<T: FromStr<Err = anyhow::Error>>(path: &Path) -> anyhow::Result<Vec<T>> {
28    let binding = std::fs::read_to_string(path).with_context(|| format!("path `{}`", path.display()))?;
29    let vals = clear_nlist(&binding);
30    vals.map(FromStr::from_str).collect()
31}