#[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)>,
Crate {
name,
+ version: None,
src,
module: Some(module),
externs,
// 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>,
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,
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)?,
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;
}
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")
+ }),
]
}
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);
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") {
--- /dev/null
+// 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'