numbers/
numbers.rs

1use std::io::stdin;
2use std::io::stdout;
3use std::io::BufRead;
4use std::io::Write;
5use trivet::{numbers::NumberParser, parse_from_string};
6
7pub fn main() {
8    println!("Enter a number to see how Trivet parses it.  Enter a blank line to stop.");
9    let numpar = NumberParser::new();
10    print!("> ");
11    let _ = stdout().flush();
12    for line in stdin().lock().lines() {
13        if line.is_err() {
14            break;
15        }
16        let line = line.unwrap();
17
18        // Consume any whitespace.
19        let mut parser = parse_from_string(&line);
20        parser.consume_ws();
21        if parser.is_at_eof() {
22            break;
23        }
24
25        // Try to read a number as pieces.
26        let parts = numpar.get_parts(parser.borrow_core());
27        println!("{:?}", parts);
28        if parts.is_apparent_float() {
29            let value: f64 = parts.into();
30            println!("f64: {}", value);
31        } else {
32            let value: i128 = parts.into();
33            println!("i128: {}", value);
34        }
35
36        // Go around again.
37        print!("> ");
38        let _ = stdout().flush();
39    }
40}