accepted 0.3.2

A text editor to be ACCEPTED.
Documentation
use std::collections::{BTreeMap, HashMap};
use std::fs;
use std::io::BufReader;
use std::path;

use serde_derive::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
pub struct SnippetSetJson(HashMap<String, SnippetJson>);

#[derive(Serialize, Deserialize, Debug)]
pub struct SnippetJson {
    prefix: String,
    body: Vec<String>,
}

pub fn load_snippet<P: AsRef<path::Path>>(path: P) -> anyhow::Result<BTreeMap<String, String>> {
    let snippet_set: SnippetSetJson =
        serde_json::from_reader(BufReader::new(fs::File::open(path)?))?;
    let mut snippets = BTreeMap::new();

    for (_, snippet) in snippet_set.0 {
        let mut buf = String::new();
        for line in &snippet.body {
            buf.push_str(line);
            buf.push('\n');
        }
        snippets.insert(snippet.prefix, buf.replace("\\$", "$"));
    }

    Ok(snippets)
}