mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-10 05:53:10 +00:00
rustdoc: Add indexes to native mods. Closes #1963
This commit is contained in:
parent
cb1efb0092
commit
8f071bb841
@ -63,7 +63,8 @@ type moddoc = {
|
||||
|
||||
type nmoddoc = {
|
||||
item: itemdoc,
|
||||
fns: [fndoc]
|
||||
fns: [fndoc],
|
||||
index: option<index>
|
||||
};
|
||||
|
||||
type constdoc = simpleitemdoc;
|
||||
|
@ -125,7 +125,8 @@ fn nmoddoc_from_mod(
|
||||
fndoc_from_fn(itemdoc)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
index: none
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,9 @@ fn run(
|
||||
config: config::config
|
||||
) -> doc::doc {
|
||||
let fold = fold::fold({
|
||||
fold_mod: fold_mod
|
||||
with *fold::default_any_fold(config)
|
||||
fold_mod: fold_mod,
|
||||
fold_nmod: fold_nmod
|
||||
with *fold::default_any_fold(config)
|
||||
});
|
||||
fold.fold_doc(fold, doc)
|
||||
}
|
||||
@ -31,18 +32,42 @@ fn fold_mod(
|
||||
let doc = fold::default_any_fold_mod(fold, doc);
|
||||
|
||||
{
|
||||
index: some(build_index(doc, fold.ctxt))
|
||||
index: some(build_mod_index(doc, fold.ctxt))
|
||||
with doc
|
||||
}
|
||||
}
|
||||
|
||||
fn build_index(
|
||||
fn fold_nmod(
|
||||
fold: fold::fold<config::config>,
|
||||
doc: doc::nmoddoc
|
||||
) -> doc::nmoddoc {
|
||||
|
||||
let doc = fold::default_any_fold_nmod(fold, doc);
|
||||
|
||||
{
|
||||
index: some(build_nmod_index(doc, fold.ctxt))
|
||||
with doc
|
||||
}
|
||||
}
|
||||
|
||||
fn build_mod_index(
|
||||
doc: doc::moddoc,
|
||||
config: config::config
|
||||
) -> doc::index {
|
||||
{
|
||||
entries: par::anymap(doc.items) {|item|
|
||||
item_to_entry(item, config)
|
||||
entries: par::anymap(doc.items) {|doc|
|
||||
item_to_entry(doc, config)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn build_nmod_index(
|
||||
doc: doc::nmoddoc,
|
||||
config: config::config
|
||||
) -> doc::index {
|
||||
{
|
||||
entries: par::anymap(doc.fns) {|doc|
|
||||
item_to_entry(doc::fntag(doc), config)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -172,6 +197,20 @@ fn should_add_brief_desc_to_index() {
|
||||
assert option::get(doc.cratemod().index).entries[0].brief == some("test");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_index_native_mod_contents() {
|
||||
let doc = test::mk_doc(
|
||||
config::doc_per_crate,
|
||||
"native mod a { fn b(); }"
|
||||
);
|
||||
assert option::get(doc.cratemod().nmods()[0].index).entries[0] == {
|
||||
kind: "Function",
|
||||
name: "b",
|
||||
brief: none,
|
||||
link: "#function-b"
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
fn mk_doc(output_style: config::output_style, source: str) -> doc::doc {
|
||||
|
@ -416,8 +416,20 @@ fn should_not_write_index_if_no_entries() {
|
||||
assert !str::contains(markdown, "\n\n\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_write_index_for_native_mods() {
|
||||
let markdown = test::render("native mod a { fn a(); }");
|
||||
assert str::contains(
|
||||
markdown,
|
||||
"\n\n* [Function `a`](#function-a)\n\n"
|
||||
);
|
||||
}
|
||||
|
||||
fn write_nmod(ctxt: ctxt, doc: doc::nmoddoc) {
|
||||
write_common(ctxt, doc.desc(), doc.sections());
|
||||
if option::is_some(doc.index) {
|
||||
write_index(ctxt, option::get(doc.index));
|
||||
}
|
||||
|
||||
for fndoc in doc.fns {
|
||||
write_item_header(ctxt, doc::fntag(fndoc));
|
||||
|
Loading…
Reference in New Issue
Block a user