use super::errors::ParseErr;
use num_cpus;
pub fn parse(value: &str) -> Result<usize, ParseErr> {
if value.chars().rev().next().unwrap() == '%' {
value[0..value.chars().count()-1].parse::<usize>()
.map(|percent| (num_cpus::get() * percent) / 100)
.map_err(|_| ParseErr::JobsNaN(value.to_owned()))
} else {
value.parse::<usize>().map_err(|_| ParseErr::JobsNaN(value.to_owned()))
}
}
#[test]
fn test_parse() {
let ncores = num_cpus::get();
assert_eq!((ncores * 50) / 100, parse("50%" ).unwrap());
assert_eq!((ncores * 100) / 100, parse("100%").unwrap());
assert_eq!((ncores * 150) / 100, parse("150%").unwrap());
assert_eq!(4, parse("4" ).unwrap());
}