unc-units-core 0.1.0

Core Rust library for parsing and displaying UNC units.
Documentation
use regex::Regex;
use std::num::ParseIntError;

fn parse_str(from: &str) -> Option<String> {
    let gas = Regex::new(r"(?i:gas)\s*")
        .unwrap()
        .replace_all(from, "")
        .to_string();
    crate::util::parse(&gas, 0)
}

pub fn parse(input: &str) -> Result<u128, ParseIntError> {
    parse_str(input)
        .expect("Cannot parse string")
        .parse::<u128>()
}

pub fn to_human(input: u128) -> String {
    crate::util::to_human(input, "gas", 12, 12)
}

#[cfg(test)]
mod tests {
    use super::*;
    const DATA: [[&str; 3]; 7] = [
        ["1", "1", "1 gas"],
        ["1,000", "1000", "1 kgas"],
        ["1,000,000", "1000000", "1 Mgas"],
        ["1,000,000,000", "1000000000", "1 Ggas"],
        ["1,000,000,000,000", "1000000000000", "1 Tgas"],
        ["1Tgas", "1000000000000", "1 Tgas"],
        ["1Ggas", "1000000000", "1 Ggas"],
    ];

    #[test]
    fn it_works() {
        for line in &DATA {
            let parsed = parse(line[0]).unwrap();
            let expected = line[1];
            assert_eq!(parsed.to_string(), expected);
            assert_eq!(to_human(parsed), line[2]);
        }
    }
}