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>)
-> Option<ExternalHtml> {
let codes = ErrorCodes::from(UnstableFeatures::from_environment().is_nightly_build());
load_external_files(in_header, diag)
.and_then(|ih|
load_external_files(before_content, diag)
.map(|bc| (ih, bc))
)
.and_then(|(ih, bc)|
load_external_files(md_before_content, diag)
.map(|m_bc| (ih,
format!("{}{}", bc, Markdown(&m_bc, &[], id_map,
codes, edition, playground).to_string())))
)
.and_then(|(ih, bc)|
load_external_files(after_content, diag)
.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,
}
)
let ih = load_external_files(in_header, diag)?;
let bc = load_external_files(before_content, diag)?;
let m_bc = load_external_files(md_before_content, diag)?;
let bc = format!("{}{}", bc, Markdown(&m_bc, &[], id_map,
codes, edition, playground).to_string());
let ac = load_external_files(after_content, diag)?;
let m_ac = load_external_files(md_after_content, diag)?;
let ac = format!("{}{}", ac, Markdown(&m_ac, &[], id_map,
codes, edition, playground).to_string());
Some(ExternalHtml {
in_header: ih,
before_content: bc,
after_content: ac,
})
}
}