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 = {
|
type nmoddoc = {
|
||||||
item: itemdoc,
|
item: itemdoc,
|
||||||
fns: [fndoc]
|
fns: [fndoc],
|
||||||
|
index: option<index>
|
||||||
};
|
};
|
||||||
|
|
||||||
type constdoc = simpleitemdoc;
|
type constdoc = simpleitemdoc;
|
||||||
|
|
|
@ -125,7 +125,8 @@ fn nmoddoc_from_mod(
|
||||||
fndoc_from_fn(itemdoc)
|
fndoc_from_fn(itemdoc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
index: none
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,9 @@ fn run(
|
||||||
config: config::config
|
config: config::config
|
||||||
) -> doc::doc {
|
) -> doc::doc {
|
||||||
let fold = fold::fold({
|
let fold = fold::fold({
|
||||||
fold_mod: fold_mod
|
fold_mod: fold_mod,
|
||||||
with *fold::default_any_fold(config)
|
fold_nmod: fold_nmod
|
||||||
|
with *fold::default_any_fold(config)
|
||||||
});
|
});
|
||||||
fold.fold_doc(fold, doc)
|
fold.fold_doc(fold, doc)
|
||||||
}
|
}
|
||||||
|
@ -31,18 +32,42 @@ fn fold_mod(
|
||||||
let doc = fold::default_any_fold_mod(fold, doc);
|
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
|
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,
|
doc: doc::moddoc,
|
||||||
config: config::config
|
config: config::config
|
||||||
) -> doc::index {
|
) -> doc::index {
|
||||||
{
|
{
|
||||||
entries: par::anymap(doc.items) {|item|
|
entries: par::anymap(doc.items) {|doc|
|
||||||
item_to_entry(item, config)
|
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");
|
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)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
fn mk_doc(output_style: config::output_style, source: str) -> doc::doc {
|
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");
|
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) {
|
fn write_nmod(ctxt: ctxt, doc: doc::nmoddoc) {
|
||||||
write_common(ctxt, doc.desc(), doc.sections());
|
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 {
|
for fndoc in doc.fns {
|
||||||
write_item_header(ctxt, doc::fntag(fndoc));
|
write_item_header(ctxt, doc::fntag(fndoc));
|
||||||
|
|
Loading…
Reference in New Issue