rustdoc: Get the crate brief description from the 'desc' attr
This commit is contained in:
parent
7857dcb88c
commit
521e58a3c4
|
@ -13,7 +13,8 @@ export crate_attrs, mod_attrs, fn_attrs, arg_attrs;
|
||||||
export parse_crate, parse_mod, parse_fn;
|
export parse_crate, parse_mod, parse_fn;
|
||||||
|
|
||||||
type crate_attrs = {
|
type crate_attrs = {
|
||||||
name: option<str>
|
name: option<str>,
|
||||||
|
desc: option<str>
|
||||||
};
|
};
|
||||||
|
|
||||||
type mod_attrs = {
|
type mod_attrs = {
|
||||||
|
@ -55,9 +56,11 @@ fn doc_meta(
|
||||||
|
|
||||||
fn parse_crate(attrs: [ast::attribute]) -> crate_attrs {
|
fn parse_crate(attrs: [ast::attribute]) -> crate_attrs {
|
||||||
let link_metas = attr::find_linkage_metas(attrs);
|
let link_metas = attr::find_linkage_metas(attrs);
|
||||||
|
let attr_metas = attr::attr_metas(attrs);
|
||||||
|
|
||||||
{
|
{
|
||||||
name: attr::meta_item_value_from_list(link_metas, "name")
|
name: attr::meta_item_value_from_list(link_metas, "name"),
|
||||||
|
desc: attr::meta_item_value_from_list(attr_metas, "desc")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,6 +88,14 @@ fn should_not_extract_crate_name_if_no_name_value_in_link_attribute() {
|
||||||
assert attrs.name == none;
|
assert attrs.name == none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_extract_crate_desc() {
|
||||||
|
let source = "#[desc = \"Teddybears\"]";
|
||||||
|
let attrs = test::parse_attributes(source);
|
||||||
|
let attrs = parse_crate(attrs);
|
||||||
|
assert attrs.desc == some("Teddybears");
|
||||||
|
}
|
||||||
|
|
||||||
fn parse_mod(attrs: [ast::attribute]) -> mod_attrs {
|
fn parse_mod(attrs: [ast::attribute]) -> mod_attrs {
|
||||||
parse_short_doc_or(
|
parse_short_doc_or(
|
||||||
attrs,
|
attrs,
|
||||||
|
|
|
@ -36,14 +36,25 @@ fn fold_crate(
|
||||||
let srv = fold.ctxt;
|
let srv = fold.ctxt;
|
||||||
let doc = fold::default_seq_fold_crate(fold, doc);
|
let doc = fold::default_seq_fold_crate(fold, doc);
|
||||||
|
|
||||||
|
// Use various crate attributes to set documentation on the top mod
|
||||||
|
|
||||||
let attrs = astsrv::exec(srv) {|ctxt|
|
let attrs = astsrv::exec(srv) {|ctxt|
|
||||||
let attrs = ctxt.ast.node.attrs;
|
let attrs = ctxt.ast.node.attrs;
|
||||||
attr_parser::parse_crate(attrs)
|
attr_parser::parse_crate(attrs)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let brief = option::maybe(doc.topmod.brief, attrs.desc) {|desc|
|
||||||
|
if option::is_some(doc.topmod.brief) {
|
||||||
|
#warn("overriding crate brief doc attribute \
|
||||||
|
with crate description");
|
||||||
|
}
|
||||||
|
some(desc)
|
||||||
|
};
|
||||||
|
|
||||||
~{
|
~{
|
||||||
topmod: ~{
|
topmod: ~{
|
||||||
name: option::from_maybe(doc.topmod.name, attrs.name)
|
name: option::from_maybe(doc.topmod.name, attrs.name),
|
||||||
|
brief: brief
|
||||||
with *doc.topmod
|
with *doc.topmod
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,6 +70,16 @@ fn should_replace_top_module_name_with_crate_name() {
|
||||||
assert doc.topmod.name == "bond";
|
assert doc.topmod.name == "bond";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_replace_top_module_brief_with_crate_desc() {
|
||||||
|
let source = "#[desc = \"The Rust compiler\"];";
|
||||||
|
let srv = astsrv::mk_srv_from_str(source);
|
||||||
|
let doc = extract::from_srv(srv, "");
|
||||||
|
let fold = fold::default_seq_fold(srv);
|
||||||
|
let doc = fold_crate(fold, doc);
|
||||||
|
assert doc.topmod.brief == some("The Rust compiler");
|
||||||
|
}
|
||||||
|
|
||||||
fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
|
fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
|
||||||
let srv = fold.ctxt;
|
let srv = fold.ctxt;
|
||||||
let attrs = if doc.id == ast::crate_node_id {
|
let attrs = if doc.id == ast::crate_node_id {
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
#[doc = "Rustdoc - The Rust documentation generator"];
|
|
||||||
|
|
||||||
#[link(name = "rustdoc",
|
#[link(name = "rustdoc",
|
||||||
vers = "0.1",
|
vers = "0.1",
|
||||||
uuid = "f8abd014-b281-484d-a0c3-26e3de8e2412",
|
uuid = "f8abd014-b281-484d-a0c3-26e3de8e2412",
|
||||||
|
|
Loading…
Reference in New Issue