@@ -82,14 +82,41 @@ fn write_markdown(
82
82
doc : doc:: doc ,
83
83
writer_factory : writer_factory
84
84
) {
85
- let ctxt = {
86
- w: writer_factory ( doc:: cratepage ( doc. cratedoc ( ) ) )
87
- } ;
85
+ for page in doc. pages {
86
+ let ctxt = {
87
+ w: writer_factory ( page)
88
+ } ;
89
+ write_page ( ctxt, page) ;
90
+ }
91
+ }
88
92
89
- write_crate ( ctxt, doc. cratedoc ( ) ) ;
93
+ fn write_page ( ctxt : ctxt , page : doc:: page ) {
94
+ alt page {
95
+ doc : : cratepage ( doc) {
96
+ write_crate ( ctxt, doc) ;
97
+ }
98
+ doc:: itempage ( doc) {
99
+ write_item ( ctxt, doc) ;
100
+ }
101
+ }
90
102
ctxt. w . write_done ( ) ;
91
103
}
92
104
105
+ #[ test]
106
+ fn should_request_new_writer_for_each_page ( ) {
107
+ // This port will send us a (page, str) pair for every writer
108
+ // that was created
109
+ let ( writer_factory, po) = markdown_writer:: future_writer_factory ( ) ;
110
+ let ( srv, doc) = test:: create_doc_srv ( "mod a { }" ) ;
111
+ // Split the document up into pages
112
+ let doc = page_pass:: mk_pass ( config:: doc_per_mod) . f ( srv, doc) ;
113
+ write_markdown ( doc, writer_factory) ;
114
+ // We expect two pages to have been written
115
+ iter:: repeat ( 2 u) { ||
116
+ comm:: recv ( po) ;
117
+ }
118
+ }
119
+
93
120
enum hlvl {
94
121
h1 = 1 ,
95
122
h2 = 2 ,
@@ -218,17 +245,21 @@ fn write_mod_contents(
218
245
}
219
246
220
247
for itemtag in doc. items {
221
- alt itemtag {
222
- doc : : modtag ( moddoc) { write_mod ( ctxt, moddoc) }
223
- doc:: nmodtag ( nmoddoc) { write_nmod ( ctxt, nmoddoc) }
224
- doc:: fntag ( fndoc) { write_fn ( ctxt, fndoc) }
225
- doc:: consttag ( constdoc) { write_const ( ctxt, constdoc) }
226
- doc:: enumtag ( enumdoc) { write_enum ( ctxt, enumdoc) }
227
- doc:: restag ( resdoc) { write_res ( ctxt, resdoc) }
228
- doc:: ifacetag ( ifacedoc) { write_iface ( ctxt, ifacedoc) }
229
- doc:: impltag ( impldoc) { write_impl ( ctxt, impldoc) }
230
- doc:: tytag ( tydoc) { write_type ( ctxt, tydoc) }
231
- }
248
+ write_item ( ctxt, itemtag) ;
249
+ }
250
+ }
251
+
252
+ fn write_item ( ctxt : ctxt , doc : doc:: itemtag ) {
253
+ alt doc {
254
+ doc : : modtag ( moddoc) { write_mod ( ctxt, moddoc) }
255
+ doc:: nmodtag ( nmoddoc) { write_nmod ( ctxt, nmoddoc) }
256
+ doc:: fntag ( fndoc) { write_fn ( ctxt, fndoc) }
257
+ doc:: consttag ( constdoc) { write_const ( ctxt, constdoc) }
258
+ doc:: enumtag ( enumdoc) { write_enum ( ctxt, enumdoc) }
259
+ doc:: restag ( resdoc) { write_res ( ctxt, resdoc) }
260
+ doc:: ifacetag ( ifacedoc) { write_iface ( ctxt, ifacedoc) }
261
+ doc:: impltag ( impldoc) { write_impl ( ctxt, impldoc) }
262
+ doc:: tytag ( tydoc) { write_type ( ctxt, tydoc) }
232
263
}
233
264
}
234
265
0 commit comments