fix coalition assigning

This commit is contained in:
132nd-Professor
2022-08-12 17:47:48 +02:00
parent c1ef22f3a3
commit cda33692cf
4 changed files with 25 additions and 6 deletions
+4
View File
@@ -24,6 +24,10 @@ fn main_inner() -> Result<(), Box<dyn std::error::Error>> {
let coalition_per_line = processor::divide_body_by_coalition(body)?; let coalition_per_line = processor::divide_body_by_coalition(body)?;
// for c in &coalition_per_line {
// println!("{c}");
// }
let mut blue_writer = writer::create_writer(is_zip, &input_filename, &Coalition::Blue)?; let mut blue_writer = writer::create_writer(is_zip, &input_filename, &Coalition::Blue)?;
blue_writer.write_strings(header)?; blue_writer.write_strings(header)?;
blue_writer.write_for_coalition(body, &coalition_per_line, Coalition::Blue)?; blue_writer.write_for_coalition(body, &coalition_per_line, Coalition::Blue)?;
+6 -4
View File
@@ -78,7 +78,9 @@ impl Line {
) -> Result<Self, ProcessingError> { ) -> Result<Self, ProcessingError> {
let id = Self::get_id_from_line(current_line, &line_type)?; let id = Self::get_id_from_line(current_line, &line_type)?;
let continued = Self::will_line_continue(current_line); let continued = Self::will_line_continue(current_line);
let coalition = Self::assign_id_to_coalitions(coalition_ids, current_line, id); let coalition = Self::assign_id_to_coalitions(coalition_ids, current_line, id)
.unwrap_or(Coalition::Unknown); // happens for the authentication line at the end of
// a file that has verification enabled
Ok(Line::new(line_type, continued, coalition)) Ok(Line::new(line_type, continued, coalition))
} }
@@ -86,13 +88,13 @@ impl Line {
coalition_ids: &mut CoalitionIDs<'a>, coalition_ids: &mut CoalitionIDs<'a>,
line: &S, line: &S,
id: &'a str, id: &'a str,
) -> Coalition { ) -> Option<Coalition> {
if Coalition::line_contains_coalition(line) { if Coalition::line_contains_coalition(line) {
let coalition = Coalition::from_line(line); let coalition = Coalition::from_line(line);
coalition_ids.insert(id, &coalition); coalition_ids.insert(id, &coalition);
coalition Some(coalition)
} else { } else {
Coalition::Unknown coalition_ids.get(id)
} }
} }
+14 -1
View File
@@ -38,7 +38,8 @@ impl Display for Coalition {
Self::Blue => "blue".to_string(), Self::Blue => "blue".to_string(),
Self::Red => "red".to_string(), Self::Red => "red".to_string(),
Self::Purple => "purple".to_string(), Self::Purple => "purple".to_string(),
_ => unreachable!("We never need these variants"), Self::All => "all".to_string(),
Self::Unknown => "unknown".to_string(),
} }
) )
} }
@@ -64,4 +65,16 @@ impl<'a> CoalitionIDs<'a> {
Coalition::All | Coalition::Unknown => false, Coalition::All | Coalition::Unknown => false,
}; };
} }
pub fn get(&self, id: &'a str) -> Option<Coalition> {
if self.blue.contains(id) {
Some(Coalition::Blue)
} else if self.red.contains(id) {
Some(Coalition::Red)
} else if self.purple.contains(id) {
Some(Coalition::Purple)
} else {
None
}
}
} }
+1 -1
View File
@@ -12,6 +12,7 @@ pub fn create_writer(
coalition: &Coalition, coalition: &Coalition,
) -> Result<Box<dyn Write>, Box<dyn ErrTrait>> { ) -> Result<Box<dyn Write>, Box<dyn ErrTrait>> {
let base_name = remove_extension(filename, is_zip); let base_name = remove_extension(filename, is_zip);
println!("writing {coalition}");
if is_zip { if is_zip {
Ok(Box::new(create_zipwriter( Ok(Box::new(create_zipwriter(
&format!("{base_name}_{coalition}{EXTENSION_ZIP}"), &format!("{base_name}_{coalition}{EXTENSION_ZIP}"),
@@ -35,7 +36,6 @@ fn create_textwriter(filename: &str) -> Result<File, Error> {
} }
fn create_zipwriter(outer_name: &str, inner_name: &str) -> Result<ZipWriter<File>, Error> { fn create_zipwriter(outer_name: &str, inner_name: &str) -> Result<ZipWriter<File>, Error> {
println!("{outer_name} {inner_name}");
let mut writer = ZipWriter::new(create_textwriter(outer_name)?); let mut writer = ZipWriter::new(create_textwriter(outer_name)?);
writer.start_file( writer.start_file(
inner_name, inner_name,