dapt 0.1.9

serializing and unseralizing unstructured data
Documentation
use std::{
    env,
    io::{self, BufRead},
    process,
};

use dapt::{query::Query, Dapt};

fn main() {
    let args: Vec<String> = env::args().collect();
    if args.len() != 2 {
        eprintln!("Usage: {} query", args[0]);
        process::exit(1);
    }

    let mut q = match Query::new(&args[1]) {
        Ok(q) => q,
        Err(e) => {
            eprintln!("Error: {}", e);
            process::exit(1);
        }
    };

    let stdin = io::stdin();
    let lines = stdin.lock().lines();

    for line in lines {
        let d: Dapt = match serde_json::from_str(line.unwrap().as_str()) {
            Ok(d) => d,
            Err(_) => continue,
        };

        let res = match q.process_and_collect(&d) {
            Ok(res) => res,
            Err(_) => continue,
        };

        for r in res.iter().flatten() {
            println!("{}", serde_json::to_string(&r).unwrap());
        }
    }

    let res = match q.collect() {
        Ok(res) => res,
        Err(_) => return,
    };

    for r in res.iter() {
        println!("{}", serde_json::to_string(&r).unwrap());
    }
}