Put render novel into separate function

This commit is contained in:
p11 2025-04-18 20:31:48 +02:00
parent 8b2d44d574
commit 7a4b5b9908
3 changed files with 19 additions and 5 deletions

1
Cargo.lock generated
View File

@ -170,6 +170,7 @@ dependencies = [
"data-stream", "data-stream",
"dialogi", "dialogi",
"header-config", "header-config",
"indexmap",
"maud", "maud",
"percent-encoding", "percent-encoding",
"pukram2html", "pukram2html",

View File

@ -12,3 +12,4 @@ dialogi = "0.3.1"
vn-settings = "0.1.0" vn-settings = "0.1.0"
threadpool = "1.8.1" threadpool = "1.8.1"
header-config = "0.1.5" header-config = "0.1.5"
indexmap = "2.9.0"

View File

@ -21,6 +21,7 @@ use data_stream::{
use dialog::parse_map; use dialog::parse_map;
use dialogi::DialogParameter; use dialogi::DialogParameter;
use header_config::parse_config; use header_config::parse_config;
use indexmap::IndexMap;
use maud::html; use maud::html;
use percent_encoding::percent_decode_str; use percent_encoding::percent_decode_str;
use pukram2html::{Settings, convert, convert_extended, convert_subheader}; use pukram2html::{Settings, convert, convert_extended, convert_subheader};
@ -604,7 +605,12 @@ fn handle_relative_connection(
.map(|parent| parse_config(&parent.with_extension("vng")).ok()) .map(|parent| parse_config(&parent.with_extension("vng")).ok())
.unwrap_or_default(); .unwrap_or_default();
if let Some(mut config_map) = config_map { fn render_novel(
mut config_map: IndexMap<Box<str>, Box<str>>,
pk_path: &Path,
stream: &mut TcpStream,
start_level: usize,
) -> std::result::Result<(), dialogi::ParsingError> {
let mut player_settings = PlayerSettings { let mut player_settings = PlayerSettings {
colors: ColorSettings::common(), colors: ColorSettings::common(),
timing: TimingSettings::common(), timing: TimingSettings::common(),
@ -646,10 +652,7 @@ fn handle_relative_connection(
} }
} }
let Ok(dialogs) = parse_map(file_paths.pk, &mut settings_context) else { let dialogs = parse_map(pk_path, &mut settings_context)?;
fail(stream);
return;
};
let mut sections = Vec::new(); let mut sections = Vec::new();
@ -885,6 +888,15 @@ fn handle_relative_connection(
}; };
let _ = write!(stream, "{}", html.into_string()); let _ = write!(stream, "{}", html.into_string());
Ok(())
}
if let Some(config_map) = config_map {
if render_novel(config_map, file_paths.pk, &mut stream, start_level).is_err() {
fail(stream);
return;
}
} else { } else {
let Ok(pk_file) = File::open(file_paths.pk) else { let Ok(pk_file) = File::open(file_paths.pk) else {
unreachable!(); unreachable!();