From 37601684c90587abe2cc29fecc71e6cb252632d8 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 17 Feb 2012 15:51:58 -0800 Subject: [PATCH] rustdoc: Add an item fold --- src/rustdoc/fold.rs | 63 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 14 deletions(-) diff --git a/src/rustdoc/fold.rs b/src/rustdoc/fold.rs index dc9849028d73..9a7f73960843 100644 --- a/src/rustdoc/fold.rs +++ b/src/rustdoc/fold.rs @@ -2,6 +2,7 @@ export fold; export fold_crate, fold_mod, fold_fn; export default_seq_fold; export default_seq_fold_crate; +export default_seq_fold_item; export default_seq_fold_mod; export default_seq_fold_fn; export default_seq_fold_const; @@ -14,6 +15,7 @@ export default_seq_fold_type; enum fold = t; type fold_crate = fn~(fold: fold, doc: doc::cratedoc) -> doc::cratedoc; +type fold_item = fn~(fold: fold, doc: doc::itemdoc) -> doc::itemdoc; type fold_mod = fn~(fold: fold, doc: doc::moddoc) -> doc::moddoc; type fold_fn = fn~(fold: fold, doc: doc::fndoc) -> doc::fndoc; type fold_const = fn~(fold: fold, doc: doc::constdoc) -> doc::constdoc; @@ -26,6 +28,7 @@ type fold_type = fn~(fold: fold, doc: doc::tydoc) -> doc::tydoc; type t = { ctxt: T, fold_crate: fold_crate, + fold_item: fold_item, fold_mod: fold_mod, fold_fn: fold_fn, fold_const: fold_const, @@ -42,6 +45,7 @@ type t = { fn mk_fold( ctxt: T, fold_crate: fold_crate, + fold_item: fold_item, fold_mod: fold_mod, fold_fn: fold_fn, fold_const: fold_const, @@ -54,6 +58,7 @@ fn mk_fold( fold({ ctxt: ctxt, fold_crate: fold_crate, + fold_item: fold_item, fold_mod: fold_mod, fold_fn: fold_fn, fold_const: fold_const, @@ -69,6 +74,7 @@ fn default_seq_fold(ctxt: T) -> fold { mk_fold( ctxt, {|f, d| default_seq_fold_crate(f, d)}, + {|f, d| default_seq_fold_item(f, d)}, {|f, d| default_seq_fold_mod(f, d)}, {|f, d| default_seq_fold_fn(f, d)}, {|f, d| default_seq_fold_const(f, d)}, @@ -89,11 +95,19 @@ fn default_seq_fold_crate( } } +fn default_seq_fold_item( + _fold: fold, + doc: doc::itemdoc +) -> doc::itemdoc { + doc +} + fn default_seq_fold_mod( fold: fold, doc: doc::moddoc ) -> doc::moddoc { { + item: fold.fold_item(fold, doc.item), items: ~vec::map(*doc.items) {|itemtag| alt itemtag { doc::modtag(moddoc) { @@ -127,52 +141,73 @@ fn default_seq_fold_mod( } fn default_seq_fold_fn( - _fold: fold, + fold: fold, doc: doc::fndoc ) -> doc::fndoc { - doc + { + item: fold.fold_item(fold, doc.item) + with doc + } } fn default_seq_fold_const( - _fold: fold, + fold: fold, doc: doc::constdoc ) -> doc::constdoc { - doc + { + item: fold.fold_item(fold, doc.item) + with doc + } } fn default_seq_fold_enum( - _fold: fold, + fold: fold, doc: doc::enumdoc ) -> doc::enumdoc { - doc + { + item: fold.fold_item(fold, doc.item) + with doc + } } fn default_seq_fold_res( - _fold: fold, + fold: fold, doc: doc::resdoc ) -> doc::resdoc { - doc + { + item: fold.fold_item(fold, doc.item) + with doc + } } fn default_seq_fold_iface( - _fold: fold, + fold: fold, doc: doc::ifacedoc ) -> doc::ifacedoc { - doc + { + item: fold.fold_item(fold, doc.item) + with doc + } } fn default_seq_fold_impl( - _fold: fold, + fold: fold, doc: doc::impldoc ) -> doc::impldoc { - doc + { + item: fold.fold_item(fold, doc.item) + with doc + } } fn default_seq_fold_type( - _fold: fold, + fold: fold, doc: doc::tydoc ) -> doc::tydoc { - doc + { + item: fold.fold_item(fold, doc.item) + with doc + } } #[test]