diff options
| author | QuietMisdreavus <grey@quietmisdreavus.net> | 2017-10-02 18:29:03 -0500 |
|---|---|---|
| committer | QuietMisdreavus <grey@quietmisdreavus.net> | 2017-10-09 09:56:17 -0500 |
| commit | fcee9506602829a2ed8505c0ba657d12b972e7ae (patch) | |
| tree | cce6c27579e57527d3597fc8f5253afa0aec3ec4 | |
| parent | 1db1144277abbf1ffc14d4e9a143cf87d1ef6d41 (diff) | |
| download | rust-fcee9506602829a2ed8505c0ba657d12b972e7ae.tar.gz rust-fcee9506602829a2ed8505c0ba657d12b972e7ae.zip | |
let rustdoc print the crate version into docs
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/render.rs | 14 | ||||
| -rw-r--r-- | src/librustdoc/html/static/rustdoc.css | 9 | ||||
| -rw-r--r-- | src/librustdoc/lib.rs | 6 | ||||
| -rw-r--r-- | src/test/rustdoc/crate-version.rs | 13 |
5 files changed, 44 insertions, 0 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index c9afa3646b2..6cf8ea3c57d 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -112,6 +112,7 @@ impl<T: Clean<U>, U> Clean<Vec<U>> for P<[T]> { #[derive(Clone, Debug)] pub struct Crate { pub name: String, + pub version: Option<String>, pub src: PathBuf, pub module: Option<Item>, pub externs: Vec<(CrateNum, ExternalCrate)>, @@ -183,6 +184,7 @@ impl<'a, 'tcx> Clean<Crate> for visit_ast::RustdocVisitor<'a, 'tcx> { Crate { name, + version: None, src, module: Some(module), externs, diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index a3f446885f9..9bc94eff142 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -256,6 +256,9 @@ pub struct Cache { // the access levels from crateanalysis. pub access_levels: Arc<AccessLevels<DefId>>, + /// The version of the crate being documented, if given fron the `--crate-version` flag. + pub crate_version: Option<String>, + // Private fields only used when initially crawling a crate to build a cache stack: Vec<String>, @@ -534,6 +537,7 @@ pub fn run(mut krate: clean::Crate, primitive_locations: FxHashMap(), stripped_mod: false, access_levels: krate.access_levels.clone(), + crate_version: krate.version.take(), orphan_impl_items: Vec::new(), traits: mem::replace(&mut krate.external_traits, FxHashMap()), deref_trait_did, @@ -3422,6 +3426,16 @@ impl<'a> fmt::Display for Sidebar<'a> { write!(fmt, "{}", it.name.as_ref().unwrap())?; write!(fmt, "</p>")?; + if it.is_crate() { + if let Some(ref version) = cache().crate_version { + write!(fmt, + "<div class='block version'>\ + <p>Version {}</p>\ + </div>", + version)?; + } + } + match it.inner { clean::StructItem(ref s) => sidebar_struct(fmt, it, s)?, clean::TraitItem(ref t) => sidebar_trait(fmt, it, t)?, diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css index 27574e67bc8..61a3902098f 100644 --- a/src/librustdoc/html/static/rustdoc.css +++ b/src/librustdoc/html/static/rustdoc.css @@ -203,6 +203,15 @@ nav.sub { word-wrap: break-word; } +.sidebar .version { + font-size: 15px; + text-align: center; + border-bottom: #DDDDDD 1px solid; + overflow-wrap: break-word; + word-wrap: break-word; /* deprecated */ + word-break: break-word; /* Chrome, non-standard */ +} + .location:empty { border: none; } diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 9563ccfcc65..f8bf00ad73f 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -243,6 +243,9 @@ pub fn opts() -> Vec<RustcOptGroup> { unstable("display-warnings", |o| { o.optflag("", "display-warnings", "to print code warnings when testing doc") }), + unstable("crate-version", |o| { + o.optopt("", "crate-version", "crate version to print into documentation", "VERSION") + }), ] } @@ -460,6 +463,7 @@ where R: 'static + Send, F: 'static + Send + FnOnce(Output) -> R { let triple = matches.opt_str("target"); let maybe_sysroot = matches.opt_str("sysroot").map(PathBuf::from); let crate_name = matches.opt_str("crate-name"); + let crate_version = matches.opt_str("crate-version"); let plugin_path = matches.opt_str("plugin-path"); let cr = PathBuf::from(cratefile); @@ -484,6 +488,8 @@ where R: 'static + Send, F: 'static + Send + FnOnce(Output) -> R { krate.name = name } + krate.version = crate_version; + // Process all of the crate attributes, extracting plugin metadata along // with the passes which we are supposed to run. for attr in krate.module.as_ref().unwrap().attrs.lists("doc") { diff --git a/src/test/rustdoc/crate-version.rs b/src/test/rustdoc/crate-version.rs new file mode 100644 index 00000000000..07ab5ceedfa --- /dev/null +++ b/src/test/rustdoc/crate-version.rs @@ -0,0 +1,13 @@ +// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// compile-flags: --crate-version=1.3.37 -Z unstable-options + +// @has 'crate_version/index.html' '//div[@class="block version"]/p' 'Version 1.3.37' |
