@@ -95,28 +95,13 @@ def visit_image(self, image, context):
95
95
return []
96
96
97
97
def visit_document (self , document , context ):
98
+ headers = self .visit_headers (document .headers , context )
98
99
nodes = self ._visit_all (document .children , context )
100
+ notes_list = self .visit_notes (document .notes , context )
101
+ comments = self .visit_comments (context )
102
+ footers = self .visit_footers (document .footers , context )
99
103
100
- headers = []
101
- footers = []
102
-
103
- if self ._include_headers_and_footers :
104
- headers = self .visit_headers (document .headers , context )
105
- footers = self .visit_footers (document .footers , context )
106
-
107
- notes = [
108
- document .notes .resolve (reference )
109
- for reference in self ._note_references
110
- ]
111
- notes_list = html .element ("ol" , {}, self ._visit_all (notes , context ))
112
-
113
- comments = html .element ("dl" , {}, [
114
- html_node
115
- for referenced_comment in self ._referenced_comments
116
- for html_node in self .visit_comment (referenced_comment , context )
117
- ])
118
-
119
- return headers + nodes + [notes_list , comments ] + footers
104
+ return headers + nodes + [notes_list , comments ] + footers
120
105
121
106
122
107
def visit_paragraph (self , paragraph , context ):
@@ -282,6 +267,12 @@ def visit_note(self, note, context):
282
267
html .element ("li" , {"id" : self ._note_html_id (note )}, note_body )
283
268
]
284
269
270
+ def visit_notes (self , notes , context ):
271
+ resolved_notes = [
272
+ notes .resolve (reference )
273
+ for reference in self ._note_references
274
+ ]
275
+ return html .element ("ol" , {}, self ._visit_all (resolved_notes , context ))
285
276
286
277
def visit_comment_reference (self , reference , context ):
287
278
def nodes ():
@@ -325,18 +316,31 @@ def visit_comment(self, referenced_comment, context):
325
316
html .element ("dd" , {}, body ),
326
317
]
327
318
319
+ def visit_comments (self , context ):
320
+ return html .element ("dl" , {}, [
321
+ html_node
322
+ for referenced_comment in self ._referenced_comments
323
+ for html_node in self .visit_comment (referenced_comment , context )
324
+ ])
325
+
328
326
def visit_header (self , header , context ):
329
327
return self ._visit_all (header .children , context )
330
328
331
329
def visit_headers (self , headers , context ):
330
+ if not self ._include_headers_and_footers :
331
+ return []
332
+
332
333
all_headers = [
333
334
html_node
334
335
for h in headers
335
336
for html_node in self .visit_header (h , context )
336
337
]
337
338
338
339
if not self ._deduplicate_headers_and_footers :
339
- return all_headers
340
+ return [
341
+ html .element ("header" , {}, [h ])
342
+ for h in headers
343
+ ]
340
344
341
345
header_values = set ()
342
346
filtered_headers = []
@@ -345,29 +349,41 @@ def visit_headers(self, headers, context):
345
349
filtered_headers .append (h )
346
350
header_values .add (h .to_text ())
347
351
348
- return filtered_headers
352
+ return [
353
+ html .element ("header" , {}, [f ])
354
+ for f in filtered_headers
355
+ ]
349
356
350
357
def visit_footer (self , footer , context ):
351
358
return self ._visit_all (footer .children , context )
352
359
353
360
def visit_footers (self , footers , context ):
361
+ if not self ._include_headers_and_footers :
362
+ return []
363
+
354
364
all_footers = [
355
365
html_node
356
366
for f in footers
357
367
for html_node in self .visit_footer (f , context )
358
368
]
359
369
360
370
if not self ._deduplicate_headers_and_footers :
361
- return all_footers
371
+ return [
372
+ html .element ("footer" , {}, [f ])
373
+ for f in all_footers
374
+ ]
362
375
363
376
footer_values = set ()
364
377
filtered_footers = []
365
378
for h in all_footers :
366
379
if not h .to_text () in footer_values :
367
380
filtered_footers .append (h )
368
381
footer_values .add (h .to_text ())
369
-
370
- return filtered_footers
382
+
383
+ return [
384
+ html .element ("footer" , {}, [f ])
385
+ for f in filtered_footers
386
+ ]
371
387
372
388
def _visit_all (self , elements , context ):
373
389
return [
0 commit comments