rustdoc: Add prune_private_pass. Off for now
This commit is contained in:
parent
c32cde16ab
commit
60443d4888
65
src/rustdoc/prune_private_pass.rs
Normal file
65
src/rustdoc/prune_private_pass.rs
Normal file
@ -0,0 +1,65 @@
|
||||
//! Prune things that are private
|
||||
|
||||
export mk_pass;
|
||||
|
||||
fn mk_pass() -> Pass {
|
||||
{
|
||||
name: ~"prune_private",
|
||||
f: run
|
||||
}
|
||||
}
|
||||
|
||||
fn run(srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
|
||||
let fold = fold::Fold({
|
||||
fold_mod: fold_mod,
|
||||
.. *fold::default_any_fold(srv)
|
||||
});
|
||||
fold.fold_doc(fold, doc)
|
||||
}
|
||||
|
||||
fn fold_mod(
|
||||
fold: fold::Fold<astsrv::Srv>,
|
||||
doc: doc::ModDoc
|
||||
) -> doc::ModDoc {
|
||||
let doc = fold::default_any_fold_mod(fold, doc);
|
||||
|
||||
doc::ModDoc_({
|
||||
items: do doc.items.filter |ItemTag| {
|
||||
is_visible(fold.ctxt, ItemTag.item())
|
||||
},
|
||||
.. *doc
|
||||
})
|
||||
}
|
||||
|
||||
fn is_visible(srv: astsrv::Srv, doc: doc::ItemDoc) -> bool {
|
||||
use syntax::ast_map;
|
||||
use syntax::ast;
|
||||
|
||||
let id = doc.id;
|
||||
|
||||
do astsrv::exec(srv) |ctxt| {
|
||||
match ctxt.ast_map.get(id) {
|
||||
ast_map::node_item(item, _) => {
|
||||
item.vis == ast::public
|
||||
}
|
||||
_ => util::unreachable()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_prune_items_without_pub_modifier() {
|
||||
let doc = test::mk_doc(~"mod a { }");
|
||||
assert vec::is_empty(doc.cratemod().mods());
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
fn mk_doc(source: ~str) -> doc::Doc {
|
||||
do astsrv::from_str(source) |srv| {
|
||||
let doc = extract::from_srv(srv, ~"");
|
||||
run(srv, doc)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -49,3 +49,4 @@ mod sort_item_type_pass;
|
||||
mod page_pass;
|
||||
mod sectionalize_pass;
|
||||
mod escape_pass;
|
||||
mod prune_private_pass;
|
@ -53,6 +53,9 @@ fn run(config: Config) {
|
||||
escape_pass::mk_pass(),
|
||||
// Remove things marked doc(hidden)
|
||||
prune_hidden_pass::mk_pass(),
|
||||
// Remove things that are private
|
||||
// XXX enable this after 'export' is removed in favor of 'pub'
|
||||
// prune_private_pass::mk_pass(),
|
||||
// Extract brief documentation from the full descriptions
|
||||
desc_to_brief_pass::mk_pass(),
|
||||
// Massage the text to remove extra indentation
|
||||
|
Loading…
Reference in New Issue
Block a user