diff --git a/src/main.rs b/src/main.rs index 7c32128..f6f33c7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -566,118 +566,118 @@ fn handle_relative_connection( ); }; - if let Ok(pk_file) = File::open(file_paths.pk) { - let lines = BufReader::new(pk_file).lines(); + let Ok(pk_file) = File::open(file_paths.pk) else { + unreachable!(); + }; - if let Some(i) = partial { - let mut last_empty = true; - let mut block = 0; - let lines: Vec<_> = lines.map(Result::unwrap_or_default).collect(); - let mut lines = lines.into_iter(); - if i > 0 { - for line in lines.by_ref() { - let empty = line.trim().is_empty(); - if empty == last_empty { - continue; - } - if empty { - block += 1; - if block == i { - break; - } - } - last_empty = empty; - } - } + let lines = BufReader::new(pk_file).lines(); - for line in lines.clone() { + if let Some(i) = partial { + let mut last_empty = true; + let mut block = 0; + let lines: Vec<_> = lines.map(Result::unwrap_or_default).collect(); + let mut lines = lines.into_iter(); + if i > 0 { + for line in lines.by_ref() { let empty = line.trim().is_empty(); if empty == last_empty { continue; } if empty { block += 1; + if block == i { + break; + } } last_empty = empty; } - - let _ = writeln!(stream, "

{title} ({}/{})

", i + 1, block); - - let _ = writeln!( - stream, - "< Stop >

" - ); - if i > 0 { - let prev = i - 1; - let _ = writeln!(stream, "< Prev"); - } else { - let _ = writeln!(stream, "< Prev"); - } - - if i + 1 < block { - let next = i + 1; - let _ = writeln!(stream, "Next >"); - } else { - let _ = writeln!(stream, "Next >"); - } - - let _ = writeln!(stream, "
"); - - let mut has_text = false; - convert_extended( - lines.take_while(|line| { - let empty = line.trim().is_empty(); - if !empty { - has_text = true; - } - !empty || !has_text - }), - &mut stream, - Settings::default() - .with_handler(handle_entry) - .with_start_level(start_level) - .with_use_textboxes(true), - ); - } else { - if !title.is_empty() { - let _ = writeln!(stream, "

{title}

"); - } - let _ = writeln!(stream, "< Play >"); - convert_extended( - lines.map(Result::unwrap_or_default), - &mut stream, - Settings::default() - .with_handler(handle_entry) - .with_start_level(start_level) - .with_use_textboxes(true), - ); } + + for line in lines.clone() { + let empty = line.trim().is_empty(); + if empty == last_empty { + continue; + } + if empty { + block += 1; + } + last_empty = empty; + } + + let _ = writeln!(stream, "

{title} ({}/{})

", i + 1, block); + + let _ = writeln!( + stream, + "< Stop >

" + ); + if i > 0 { + let prev = i - 1; + let _ = writeln!(stream, "< Prev"); + } else { + let _ = writeln!(stream, "< Prev"); + } + + if i + 1 < block { + let next = i + 1; + let _ = writeln!(stream, "Next >"); + } else { + let _ = writeln!(stream, "Next >"); + } + + let _ = writeln!(stream, "
"); + + let mut has_text = false; + convert_extended( + lines.take_while(|line| { + let empty = line.trim().is_empty(); + if !empty { + has_text = true; + } + !empty || !has_text + }), + &mut stream, + Settings::default() + .with_handler(handle_entry) + .with_start_level(start_level) + .with_use_textboxes(true), + ); } else { - unreachable!(); + if !title.is_empty() { + let _ = writeln!(stream, "

{title}

"); + } + let _ = writeln!(stream, "< Play >"); + convert_extended( + lines.map(Result::unwrap_or_default), + &mut stream, + Settings::default() + .with_handler(handle_entry) + .with_start_level(start_level) + .with_use_textboxes(true), + ); } section(&mut stream); if let Some(pki_path) = file_paths.pki { - if let Ok(pki_file) = File::open(pki_path) { - let _ = writeln!(stream, "

Description

"); - - if let Some(audio_path) = &file_paths.audio { - if Path::is_file(audio_path) { - let _ = writeln!( - stream, - "

" - ); - } - } - - let lines = BufReader::new(pki_file).lines(); - convert_subheader(lines.map(Result::unwrap_or_default), &mut stream, 1); - - section(&mut stream); - } else { + let Ok(pki_file) = File::open(pki_path) else { unreachable!(); + }; + + let _ = writeln!(stream, "

Description

"); + + if let Some(audio_path) = &file_paths.audio { + if Path::is_file(audio_path) { + let _ = writeln!( + stream, + "

" + ); + } } + + let lines = BufReader::new(pki_file).lines(); + convert_subheader(lines.map(Result::unwrap_or_default), &mut stream, 1); + + section(&mut stream); } let html = html! {