roezio/config: Don't repeat trim().to_lowercase() on key/section
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
1dbb7b540e
commit
cc19b20469
1 changed files with 32 additions and 38 deletions
|
@ -149,12 +149,9 @@ impl<'a> Config<'a> {
|
||||||
|
|
||||||
fn parse<R: Read + BufRead>(
|
fn parse<R: Read + BufRead>(
|
||||||
mut reader: R,
|
mut reader: R,
|
||||||
key: &str,
|
key: String,
|
||||||
section: &str,
|
section: String,
|
||||||
) -> Result<ConfigParsed, Error> {
|
) -> Result<ConfigParsed, Error> {
|
||||||
let key = key.trim().to_lowercase();
|
|
||||||
let section = section.trim().to_lowercase();
|
|
||||||
|
|
||||||
let mut line = String::new();
|
let mut line = String::new();
|
||||||
let mut clear_offset: usize = 0;
|
let mut clear_offset: usize = 0;
|
||||||
let mut sections_found: Vec<usize> = Vec::new();
|
let mut sections_found: Vec<usize> = Vec::new();
|
||||||
|
@ -166,7 +163,7 @@ impl<'a> Config<'a> {
|
||||||
|
|
||||||
// EOF
|
// EOF
|
||||||
if len == 0 {
|
if len == 0 {
|
||||||
if current_section == Some(section.clone()) {
|
if current_section == Some(section) {
|
||||||
sections_found.push(clear_offset);
|
sections_found.push(clear_offset);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -212,13 +209,11 @@ impl<'a> Config<'a> {
|
||||||
reader: &mut R,
|
reader: &mut R,
|
||||||
writer: &mut W,
|
writer: &mut W,
|
||||||
parsed: ConfigParsed,
|
parsed: ConfigParsed,
|
||||||
key: &str,
|
key: String,
|
||||||
value: &str,
|
value: String,
|
||||||
section: &str,
|
section: String,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
let key = key.trim().to_lowercase();
|
|
||||||
let value = value.trim();
|
let value = value.trim();
|
||||||
let section = section.trim().to_lowercase();
|
|
||||||
|
|
||||||
// Write up to offset value
|
// Write up to offset value
|
||||||
let mut buffer: Vec<u8> = Vec::new();
|
let mut buffer: Vec<u8> = Vec::new();
|
||||||
|
@ -269,16 +264,9 @@ impl<'a> Config<'a> {
|
||||||
let mut out_file = fs::File::create(&tempfile)?;
|
let mut out_file = fs::File::create(&tempfile)?;
|
||||||
let mut writer = BufWriter::new(&mut out_file);
|
let mut writer = BufWriter::new(&mut out_file);
|
||||||
|
|
||||||
let parsed = Config::parse(&mut reader, section.as_str(), key.as_str())?;
|
let parsed = Config::parse(&mut reader, section.clone(), key.clone())?;
|
||||||
reader.seek(SeekFrom::Start(0))?;
|
reader.seek(SeekFrom::Start(0))?;
|
||||||
Config::write(
|
Config::write(&mut reader, &mut writer, parsed, key, value, section)?;
|
||||||
&mut reader,
|
|
||||||
&mut writer,
|
|
||||||
parsed,
|
|
||||||
key.as_str(),
|
|
||||||
value.as_str(),
|
|
||||||
section.as_str(),
|
|
||||||
)?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fs::rename(tempfile, self.filename.clone())?;
|
fs::rename(tempfile, self.filename.clone())?;
|
||||||
|
@ -364,7 +352,8 @@ mod tests {
|
||||||
fn parse_section_and_key_exist() {
|
fn parse_section_and_key_exist() {
|
||||||
let file = String::from("[section1]\n key1= value1\n");
|
let file = String::from("[section1]\n key1= value1\n");
|
||||||
let mut reader = BufReader::new(file.as_bytes());
|
let mut reader = BufReader::new(file.as_bytes());
|
||||||
let parsed = Config::parse(&mut reader, "key1", "section1").unwrap();
|
let parsed =
|
||||||
|
Config::parse(&mut reader, String::from("key1"), String::from("section1")).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed.section_found, true);
|
assert_eq!(parsed.section_found, true);
|
||||||
assert_eq!(parsed.key_found, true);
|
assert_eq!(parsed.key_found, true);
|
||||||
|
@ -375,7 +364,8 @@ mod tests {
|
||||||
fn parse_section_exists_key_doesnt() {
|
fn parse_section_exists_key_doesnt() {
|
||||||
let file = String::from("[section1]\nkey1 = value1\nkey2 = value2\n");
|
let file = String::from("[section1]\nkey1 = value1\nkey2 = value2\n");
|
||||||
let mut reader = BufReader::new(file.as_bytes());
|
let mut reader = BufReader::new(file.as_bytes());
|
||||||
let parsed = Config::parse(&mut reader, "key3", "section1").unwrap();
|
let parsed =
|
||||||
|
Config::parse(&mut reader, String::from("key3"), String::from("section1")).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed.section_found, true);
|
assert_eq!(parsed.section_found, true);
|
||||||
assert_eq!(parsed.key_found, false);
|
assert_eq!(parsed.key_found, false);
|
||||||
|
@ -386,7 +376,8 @@ mod tests {
|
||||||
fn parse_section_doesnt_exists_key_does() {
|
fn parse_section_doesnt_exists_key_does() {
|
||||||
let file = String::from("[section2]\nkey1 = value1\nkey2 = value2\n");
|
let file = String::from("[section2]\nkey1 = value1\nkey2 = value2\n");
|
||||||
let mut reader = BufReader::new(file.as_bytes());
|
let mut reader = BufReader::new(file.as_bytes());
|
||||||
let parsed = Config::parse(&mut reader, "key1", "section1").unwrap();
|
let parsed =
|
||||||
|
Config::parse(&mut reader, String::from("key1"), String::from("section1")).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed.section_found, false);
|
assert_eq!(parsed.section_found, false);
|
||||||
assert_eq!(parsed.key_found, false);
|
assert_eq!(parsed.key_found, false);
|
||||||
|
@ -417,7 +408,8 @@ mod tests {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let mut reader = BufReader::new(file.as_bytes());
|
let mut reader = BufReader::new(file.as_bytes());
|
||||||
let parsed = Config::parse(&mut reader, "key3", "section1").unwrap();
|
let parsed =
|
||||||
|
Config::parse(&mut reader, String::from("key3"), String::from("section1")).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed.section_found, true);
|
assert_eq!(parsed.section_found, true);
|
||||||
assert_eq!(parsed.key_found, true);
|
assert_eq!(parsed.key_found, true);
|
||||||
|
@ -444,7 +436,8 @@ mod tests {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let mut reader = BufReader::new(file.as_bytes());
|
let mut reader = BufReader::new(file.as_bytes());
|
||||||
let parsed = Config::parse(&mut reader, "key2", "section1").unwrap();
|
let parsed =
|
||||||
|
Config::parse(&mut reader, String::from("key2"), String::from("section1")).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed.section_found, true);
|
assert_eq!(parsed.section_found, true);
|
||||||
assert_eq!(parsed.key_found, true);
|
assert_eq!(parsed.key_found, true);
|
||||||
|
@ -472,7 +465,8 @@ mod tests {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let mut reader = BufReader::new(file.as_bytes());
|
let mut reader = BufReader::new(file.as_bytes());
|
||||||
let parsed = Config::parse(&mut reader, "key3", "section1").unwrap();
|
let parsed =
|
||||||
|
Config::parse(&mut reader, String::from("key3"), String::from("section1")).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed.section_found, true);
|
assert_eq!(parsed.section_found, true);
|
||||||
assert_eq!(parsed.key_found, false);
|
assert_eq!(parsed.key_found, false);
|
||||||
|
@ -495,9 +489,9 @@ mod tests {
|
||||||
&mut reader,
|
&mut reader,
|
||||||
&mut writer,
|
&mut writer,
|
||||||
parsed,
|
parsed,
|
||||||
"key1",
|
String::from("key1"),
|
||||||
"value1",
|
String::from("value1"),
|
||||||
"section1",
|
String::from("section1"),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(writer, after.as_bytes());
|
assert_eq!(writer, after.as_bytes());
|
||||||
|
@ -519,9 +513,9 @@ mod tests {
|
||||||
&mut reader,
|
&mut reader,
|
||||||
&mut writer,
|
&mut writer,
|
||||||
parsed,
|
parsed,
|
||||||
"key1",
|
String::from("key1"),
|
||||||
"value1",
|
String::from("value1"),
|
||||||
"section1",
|
String::from("section1"),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(writer, after.as_bytes());
|
assert_eq!(writer, after.as_bytes());
|
||||||
|
@ -543,9 +537,9 @@ mod tests {
|
||||||
&mut reader,
|
&mut reader,
|
||||||
&mut writer,
|
&mut writer,
|
||||||
parsed,
|
parsed,
|
||||||
"key1",
|
String::from("key1"),
|
||||||
"value1",
|
String::from("value1"),
|
||||||
"section1",
|
String::from("section1"),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(writer, after.as_bytes());
|
assert_eq!(writer, after.as_bytes());
|
||||||
|
@ -567,9 +561,9 @@ mod tests {
|
||||||
&mut reader,
|
&mut reader,
|
||||||
&mut writer,
|
&mut writer,
|
||||||
parsed,
|
parsed,
|
||||||
"key1",
|
String::from("key1"),
|
||||||
"value1",
|
String::from("value1"),
|
||||||
"section1",
|
String::from("section1"),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(writer, after.as_bytes());
|
assert_eq!(writer, after.as_bytes());
|
||||||
|
|
Loading…
Reference in a new issue