use std::path::Path;
use std::str;
use errors;
-use crate::syntax::feature_gate::UnstableFeatures;
+use rustc_feature::UnstableFeatures;
use crate::syntax::edition::Edition;
-use crate::html::markdown::{IdMap, ErrorCodes, Markdown};
-
-use std::cell::RefCell;
+use crate::html::markdown::{IdMap, ErrorCodes, Markdown, Playground};
#[derive(Clone, Debug)]
pub struct ExternalHtml {
impl ExternalHtml {
pub fn load(in_header: &[String], before_content: &[String], after_content: &[String],
md_before_content: &[String], md_after_content: &[String], diag: &errors::Handler,
- id_map: &mut IdMap, edition: Edition)
+ 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, &[], RefCell::new(id_map),
- codes, edition))))
- )
- .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, &[], RefCell::new(id_map),
- codes, edition))))
- )
- .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,
+ })
}
}