// option. This file may not be copied, modified, or distributed
// except according to those terms.
-#![crate_id = "rustdoc#0.11.0-pre"]
+#![crate_name = "rustdoc"]
#![experimental]
#![desc = "rustdoc, the Rust documentation extractor"]
#![license = "MIT/ASL2"]
use std::str;
use std::gc::Gc;
use serialize::{json, Decodable, Encodable};
+use externalfiles::ExternalHtml;
// reexported from `clean` so it can be easily updated with the mod itself
pub use clean::SCHEMA_VERSION;
pub mod clean;
pub mod core;
pub mod doctree;
+#[macro_escape]
+pub mod externalfiles;
pub mod fold;
pub mod html {
pub mod highlight;
pub mod markdown;
pub mod passes;
pub mod plugins;
+pub mod stability_summary;
pub mod visit_ast;
pub mod test;
mod flock;
"ARGS"),
optmulti("", "markdown-css", "CSS files to include via <link> in a rendered Markdown file",
"FILES"),
- optmulti("", "markdown-in-header",
- "files to include inline in the <head> section of a rendered Markdown file",
+ optmulti("", "html-in-header",
+ "files to include inline in the <head> section of a rendered Markdown file \
+ or generated documentation",
"FILES"),
- optmulti("", "markdown-before-content",
+ optmulti("", "html-before-content",
"files to include inline between <body> and the content of a rendered \
- Markdown file",
+ Markdown file or generated documentation",
"FILES"),
- optmulti("", "markdown-after-content",
+ optmulti("", "html-after-content",
"files to include inline between the content and </body> of a rendered \
- Markdown file",
+ Markdown file or generated documentation",
"FILES"),
optopt("", "markdown-playground-url",
"URL to send code snippets to", "URL")
let output = matches.opt_str("o").map(|s| Path::new(s));
let cfgs = matches.opt_strs("cfg");
+ let external_html = match ExternalHtml::load(
+ matches.opt_strs("html-in-header").as_slice(),
+ matches.opt_strs("html-before-content").as_slice(),
+ matches.opt_strs("html-after-content").as_slice()) {
+ Some(eh) => eh,
+ None => return 3
+ };
+
match (should_test, markdown_input) {
(true, true) => {
return markdown::test(input, libs, test_args)
return test::run(input, cfgs, libs, test_args)
}
(false, true) => return markdown::render(input, output.unwrap_or(Path::new("doc")),
- &matches),
+ &matches, &external_html),
(false, false) => {}
}
let started = time::precise_time_ns();
match matches.opt_str("w").as_ref().map(|s| s.as_slice()) {
Some("html") | None => {
- match html::render::run(krate, output.unwrap_or(Path::new("doc"))) {
+ match html::render::run(krate, &external_html, output.unwrap_or(Path::new("doc"))) {
Ok(()) => {}
Err(e) => fail!("failed to generate documentation: {}", e),
}
}
};
match json::from_reader(&mut input) {
- Err(s) => Err(s.to_str()),
+ Err(s) => Err(s.to_string()),
Ok(json::Object(obj)) => {
let mut obj = obj;
// Make sure the schema is what we expect
// "crate": { parsed crate ... },
// "plugins": { output of plugins ... }
// }
- let mut json = box std::collections::TreeMap::new();
- json.insert("schema".to_string(),
- json::String(SCHEMA_VERSION.to_string()));
- let plugins_json = box res.move_iter()
- .filter_map(|opt| {
- match opt {
- None => None,
- Some((string, json)) => {
- Some((string.to_string(), json))
- }
+ let mut json = std::collections::TreeMap::new();
+ json.insert("schema".to_string(), json::String(SCHEMA_VERSION.to_string()));
+ let plugins_json = res.move_iter()
+ .filter_map(|opt| {
+ match opt {
+ None => None,
+ Some((string, json)) => {
+ Some((string.to_string(), json))
}
- }).collect();
+ }
+ }).collect();
// FIXME #8335: yuck, Rust -> str -> JSON round trip! No way to .encode
// straight to the Rust JSON representation.
let mut encoder = json::Encoder::new(&mut w as &mut io::Writer);
krate.encode(&mut encoder).unwrap();
}
- str::from_utf8(w.unwrap().as_slice()).unwrap().to_string()
+ str::from_utf8_owned(w.unwrap()).unwrap()
};
let crate_json = match json::from_str(crate_json_str.as_slice()) {
Ok(j) => j,
json.insert("plugins".to_string(), json::Object(plugins_json));
let mut file = try!(File::create(&dst));
- try!(json::Object(json).to_writer(&mut file));
- Ok(())
+ json::Object(json).to_writer(&mut file)
}