about summary refs log tree commit diff
path: root/src/rustdoc
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-17 15:51:58 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-17 16:00:39 -0800
commit37601684c90587abe2cc29fecc71e6cb252632d8 (patch)
tree6bb91a2dd61b16beff9bf8578ac152a6e86f751d /src/rustdoc
parent5e376b78cf22222091fd050af81fba6a634c6482 (diff)
downloadrust-37601684c90587abe2cc29fecc71e6cb252632d8.tar.gz
rust-37601684c90587abe2cc29fecc71e6cb252632d8.zip
rustdoc: Add an item fold
Diffstat (limited to 'src/rustdoc')
-rw-r--r--src/rustdoc/fold.rs63
1 files changed, 49 insertions, 14 deletions
diff --git a/src/rustdoc/fold.rs b/src/rustdoc/fold.rs
index dc9849028d7..9a7f7396084 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> = t<T>;
 
 type fold_crate<T> = fn~(fold: fold<T>, doc: doc::cratedoc) -> doc::cratedoc;
+type fold_item<T> = fn~(fold: fold<T>, doc: doc::itemdoc) -> doc::itemdoc;
 type fold_mod<T> = fn~(fold: fold<T>, doc: doc::moddoc) -> doc::moddoc;
 type fold_fn<T> = fn~(fold: fold<T>, doc: doc::fndoc) -> doc::fndoc;
 type fold_const<T> = fn~(fold: fold<T>, doc: doc::constdoc) -> doc::constdoc;
@@ -26,6 +28,7 @@ type fold_type<T> = fn~(fold: fold<T>, doc: doc::tydoc) -> doc::tydoc;
 type t<T> = {
     ctxt: T,
     fold_crate: fold_crate<T>,
+    fold_item: fold_item<T>,
     fold_mod: fold_mod<T>,
     fold_fn: fold_fn<T>,
     fold_const: fold_const<T>,
@@ -42,6 +45,7 @@ type t<T> = {
 fn mk_fold<T:copy>(
     ctxt: T,
     fold_crate: fold_crate<T>,
+    fold_item: fold_item<T>,
     fold_mod: fold_mod<T>,
     fold_fn: fold_fn<T>,
     fold_const: fold_const<T>,
@@ -54,6 +58,7 @@ fn mk_fold<T:copy>(
     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<T:copy>(ctxt: T) -> fold<T> {
     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<T>(
     }
 }
 
+fn default_seq_fold_item<T>(
+    _fold: fold<T>,
+    doc: doc::itemdoc
+) -> doc::itemdoc {
+    doc
+}
+
 fn default_seq_fold_mod<T>(
     fold: fold<T>,
     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<T>(
 }
 
 fn default_seq_fold_fn<T>(
-    _fold: fold<T>,
+    fold: fold<T>,
     doc: doc::fndoc
 ) -> doc::fndoc {
-    doc
+    {
+        item: fold.fold_item(fold, doc.item)
+        with doc
+    }
 }
 
 fn default_seq_fold_const<T>(
-    _fold: fold<T>,
+    fold: fold<T>,
     doc: doc::constdoc
 ) -> doc::constdoc {
-    doc
+    {
+        item: fold.fold_item(fold, doc.item)
+        with doc
+    }
 }
 
 fn default_seq_fold_enum<T>(
-    _fold: fold<T>,
+    fold: fold<T>,
     doc: doc::enumdoc
 ) -> doc::enumdoc {
-    doc
+    {
+        item: fold.fold_item(fold, doc.item)
+        with doc
+    }
 }
 
 fn default_seq_fold_res<T>(
-    _fold: fold<T>,
+    fold: fold<T>,
     doc: doc::resdoc
 ) -> doc::resdoc {
-    doc
+    {
+        item: fold.fold_item(fold, doc.item)
+        with doc
+    }
 }
 
 fn default_seq_fold_iface<T>(
-    _fold: fold<T>,
+    fold: fold<T>,
     doc: doc::ifacedoc
 ) -> doc::ifacedoc {
-    doc
+    {
+        item: fold.fold_item(fold, doc.item)
+        with doc
+    }
 }
 
 fn default_seq_fold_impl<T>(
-    _fold: fold<T>,
+    fold: fold<T>,
     doc: doc::impldoc
 ) -> doc::impldoc {
-    doc
+    {
+        item: fold.fold_item(fold, doc.item)
+        with doc
+    }
 }
 
 fn default_seq_fold_type<T>(
-    _fold: fold<T>,
+    fold: fold<T>,
     doc: doc::tydoc
 ) -> doc::tydoc {
-    doc
+    {
+        item: fold.fold_item(fold, doc.item)
+        with doc
+    }
 }
 
 #[test]