use toml::Value;
use libimagstore::store::Entry;
use libimagerror::errors::ErrorMsg as EM;
use toml_query::read::TomlValueReadTypeExt;
use toml_query::set::TomlValueSetExt;
use failure::Fallible as Result;
use failure::Error;
use failure::ResultExt;
pub trait Note {
fn set_name(&mut self, n: String) -> Result<()>;
fn get_name(&self) -> Result<String>;
fn set_text(&mut self, n: String);
fn get_text(&self) -> &String;
}
impl Note for Entry {
fn set_name(&mut self, n: String) -> Result<()> {
self.get_header_mut()
.set("note.name", Value::String(n))
.context(format_err!("Cannot set 'note.name' in header of {}", self.get_location()))
.map_err(Error::from)
.map(|_| ())
}
fn get_name(&self) -> Result<String> {
self.get_header()
.read_string("note.name")?
.ok_or_else(|| Error::from(EM::EntryHeaderTypeError))
}
fn set_text(&mut self, n: String) {
*self.get_content_mut() = n
}
fn get_text(&self) -> &String {
self.get_content()
}
}