brittle 0.1.1

Simple TOML parser in Rust
Documentation
extern crate brittle;

use brittle::parser::*;

use std::fs::File;
use std::io::*;

#[test]
fn cargo_test() {
    if let Ok(code) = read_file("tests/cargo_test.toml") {
        let summary = vec![
            TOML::Title(vec!["package".to_string()]),
            TOML::Assign("name".to_string(), Value::Str("brittle".to_string())),
            TOML::Assign("version".to_string(), Value::Str("0.1.0".to_string())),
            TOML::Assign(
                "authors".to_string(),
                Value::Array(vec![Value::Str("ZippyMagician <zippymagician1@gmail.com>".to_string())]),
            ),
            TOML::Assign("edition".to_string(), Value::Str("2018".to_string())),
            TOML::Title(vec!["dependencies".to_string()]),
            TOML::Assign("regex".to_string(), Value::Str("1.3.9".to_string())),
        ];

        assert_eq!(brittle::parse(code), summary);
    } else {
        panic!("Test failed, file not found");
    }
}

#[test]
fn multiline_test() {
    if let Ok(code) = read_file("tests/multiline_test.toml") {
        let summary = vec![
            TOML::Title(vec!["main".to_string()]),
            TOML::Assign("count".to_string(), Value::Float(0.75)),
            TOML::Title(vec!["main".to_string(), "child".to_string()]),
            TOML::Assign("count".to_string(), Value::Float(0.5))
        ];

        assert_eq!(brittle::parse(code), summary);
    } else {
        panic!("Test failed, file not found");
    }
}

fn read_file(path: &str) -> std::io::Result<String> {
    let file = File::open(path)?;
    let buffer = BufReader::with_capacity(128 * 1024, file);
    let lines = buffer
        .lines()
        .map(|x| x.unwrap_or("".to_string()))
        .collect::<Vec<String>>();
    
    Ok(lines.join("\n"))
}