Reduce nesting in externalfiles implementation

Utilize `?` instead of and_then/map operators
This commit is contained in:
Mark Rousskov 2019-08-10 18:39:50 -04:00
parent 1aa0964b54
commit 3b8a24d193

View file

@ -25,34 +25,20 @@ impl ExternalHtml {
id_map: &mut IdMap, edition: Edition, playground: &Option<Playground>) id_map: &mut IdMap, edition: Edition, playground: &Option<Playground>)
-> Option<ExternalHtml> { -> Option<ExternalHtml> {
let codes = ErrorCodes::from(UnstableFeatures::from_environment().is_nightly_build()); let codes = ErrorCodes::from(UnstableFeatures::from_environment().is_nightly_build());
load_external_files(in_header, diag) let ih = load_external_files(in_header, diag)?;
.and_then(|ih| let bc = load_external_files(before_content, diag)?;
load_external_files(before_content, diag) let m_bc = load_external_files(md_before_content, diag)?;
.map(|bc| (ih, bc)) let bc = format!("{}{}", bc, Markdown(&m_bc, &[], id_map,
) codes, edition, playground).to_string());
.and_then(|(ih, bc)| let ac = load_external_files(after_content, diag)?;
load_external_files(md_before_content, diag) let m_ac = load_external_files(md_after_content, diag)?;
.map(|m_bc| (ih, let ac = format!("{}{}", ac, Markdown(&m_ac, &[], id_map,
format!("{}{}", bc, Markdown(&m_bc, &[], id_map, codes, edition, playground).to_string());
codes, edition, playground).to_string()))) Some(ExternalHtml {
) in_header: ih,
.and_then(|(ih, bc)| before_content: bc,
load_external_files(after_content, diag) after_content: ac,
.map(|ac| (ih, bc, ac)) })
)
.and_then(|(ih, bc, ac)|
load_external_files(md_after_content, diag)
.map(|m_ac| (ih, bc,
format!("{}{}", ac, Markdown(&m_ac, &[], id_map,
codes, edition, playground).to_string())))
)
.map(|(ih, bc, ac)|
ExternalHtml {
in_header: ih,
before_content: bc,
after_content: ac,
}
)
} }
} }