rst_parser/transforms/
visit.rs

1use document_tree::HasChildren as _;
2use document_tree::element_categories as c;
3use document_tree::elements as e;
4
5pub trait Visit<'tree> {
6    /// Visit a document tree.
7    fn visit(&mut self, e: &'tree e::Document) {
8        for c in e.children() {
9            self.visit_structural_sub_element(c);
10        }
11    }
12
13    ////////////////
14    // categories //
15    ////////////////
16
17    fn visit_structural_sub_element(&mut self, c: &'tree c::StructuralSubElement) {
18        use c::StructuralSubElement as S;
19        match c {
20            S::Title(e) => self.visit_title(e),
21            S::Subtitle(e) => self.visit_subtitle(e),
22            S::Decoration(e) => self.visit_decoration(e),
23            S::Docinfo(e) => self.visit_docinfo(e),
24            S::SubStructure(e) => self.visit_substructure(e),
25        }
26    }
27    fn visit_substructure(&mut self, c: &'tree c::SubStructure) {
28        use c::SubStructure as S;
29        match c {
30            S::Topic(e) => self.visit_topic(e),
31            S::Sidebar(e) => self.visit_sidebar(e),
32            S::Transition(e) => self.visit_transition(e),
33            S::Section(e) => self.visit_section(e),
34            S::BodyElement(e) => self.visit_body_element(e),
35        }
36    }
37    fn visit_body_element(&mut self, c: &'tree c::BodyElement) {
38        use c::BodyElement as B;
39        match c {
40            B::Paragraph(e) => self.visit_paragraph(e),
41            B::LiteralBlock(e) => self.visit_literal_block(e),
42            B::DoctestBlock(e) => self.visit_doctest_block(e),
43            B::MathBlock(e) => self.visit_math_block(e),
44            B::Rubric(e) => self.visit_rubric(e),
45            B::SubstitutionDefinition(e) => self.visit_substitution_definition(e),
46            B::Comment(e) => self.visit_comment(e),
47            B::Pending(e) => self.visit_pending(e),
48            B::Target(e) => self.visit_target(e),
49            B::Raw(e) => self.visit_raw(e),
50            B::Image(e) => self.visit_image(e),
51            B::Compound(e) => self.visit_compound(e),
52            B::Container(e) => self.visit_container(e),
53            B::BulletList(e) => self.visit_bullet_list(e),
54            B::EnumeratedList(e) => self.visit_enumerated_list(e),
55            B::DefinitionList(e) => self.visit_definition_list(e),
56            B::FieldList(e) => self.visit_field_list(e),
57            B::OptionList(e) => self.visit_option_list(e),
58            B::LineBlock(e) => self.visit_line_block(e),
59            B::BlockQuote(e) => self.visit_block_quote(e),
60            B::Admonition(e) => self.visit_admonition(e),
61            B::Attention(e) => self.visit_attention(e),
62            B::Hint(e) => self.visit_hint(e),
63            B::Note(e) => self.visit_note(e),
64            B::Caution(e) => self.visit_caution(e),
65            B::Danger(e) => self.visit_danger(e),
66            B::Error(e) => self.visit_error(e),
67            B::Important(e) => self.visit_important(e),
68            B::Tip(e) => self.visit_tip(e),
69            B::Warning(e) => self.visit_warning(e),
70            B::Footnote(e) => self.visit_footnote(e),
71            B::Citation(e) => self.visit_citation(e),
72            B::SystemMessage(e) => self.visit_system_message(e),
73            B::Figure(e) => self.visit_figure(e),
74            B::Table(e) => self.visit_table(e),
75        }
76    }
77    fn visit_bibliographic_element(&mut self, c: &'tree c::BibliographicElement) {
78        use c::BibliographicElement as B;
79        match c {
80            B::Authors(e) => self.visit_authors(e),
81            B::Author(e) => self.visit_author(e),
82            B::Organization(e) => self.visit_organization(e),
83            B::Address(e) => self.visit_address(e),
84            B::Contact(e) => self.visit_contact(e),
85            B::Version(e) => self.visit_version(e),
86            B::Revision(e) => self.visit_revision(e),
87            B::Status(e) => self.visit_status(e),
88            B::Date(e) => self.visit_date(e),
89            B::Copyright(e) => self.visit_copyright(e),
90            B::Field(e) => self.visit_field(e),
91        }
92    }
93    fn visit_text_or_inline_element(&mut self, c: &'tree c::TextOrInlineElement) {
94        use c::TextOrInlineElement as T;
95        match c {
96            T::String(e) => self.visit_string(e),
97            T::Emphasis(e) => self.visit_emphasis(e),
98            T::Strong(e) => self.visit_strong(e),
99            T::Literal(e) => self.visit_literal(e),
100            T::Reference(e) => self.visit_reference(e),
101            T::FootnoteReference(e) => self.visit_footnote_reference(e),
102            T::CitationReference(e) => self.visit_citation_reference(e),
103            T::SubstitutionReference(e) => self.visit_substitution_reference(e),
104            T::TitleReference(e) => self.visit_title_reference(e),
105            T::Abbreviation(e) => self.visit_abbreviation(e),
106            T::Acronym(e) => self.visit_acronym(e),
107            T::Superscript(e) => self.visit_superscript(e),
108            T::Subscript(e) => self.visit_subscript(e),
109            T::Inline(e) => self.visit_inline(e),
110            T::Problematic(e) => self.visit_problematic(e),
111            T::Generated(e) => self.visit_generated(e),
112            T::Math(e) => self.visit_math(e),
113            T::TargetInline(e) => self.visit_target_inline(e),
114            T::RawInline(e) => self.visit_raw_inline(e),
115            T::ImageInline(e) => self.visit_image_inline(e),
116        }
117    }
118    fn visit_author_info(&mut self, c: &'tree c::AuthorInfo) {
119        use c::AuthorInfo as A;
120        match c {
121            A::Author(e) => self.visit_author(e),
122            A::Organization(e) => self.visit_organization(e),
123            A::Address(e) => self.visit_address(e),
124            A::Contact(e) => self.visit_contact(e),
125        }
126    }
127    fn visit_decoration_element(&mut self, c: &'tree c::DecorationElement) {
128        use c::DecorationElement as D;
129        match c {
130            D::Header(e) => self.visit_header(e),
131            D::Footer(e) => self.visit_footer(e),
132        }
133    }
134    fn visit_sub_topic(&mut self, c: &'tree c::SubTopic) {
135        use c::SubTopic as S;
136        match c {
137            S::Title(e) => self.visit_title(e),
138            S::BodyElement(e) => self.visit_body_element(e),
139        }
140    }
141    fn visit_sub_sidebar(&mut self, c: &'tree c::SubSidebar) {
142        use c::SubSidebar as S;
143        match c {
144            S::Topic(e) => self.visit_topic(e),
145            S::Title(e) => self.visit_title(e),
146            S::Subtitle(e) => self.visit_subtitle(e),
147            S::BodyElement(e) => self.visit_body_element(e),
148        }
149    }
150    fn visit_sub_dl_item(&mut self, c: &'tree c::SubDLItem) {
151        use c::SubDLItem as S;
152        match c {
153            S::Term(e) => self.visit_term(e),
154            S::Classifier(e) => self.visit_classifier(e),
155            S::Definition(e) => self.visit_definition(e),
156        }
157    }
158    fn visit_sub_field(&mut self, c: &'tree c::SubField) {
159        use c::SubField as S;
160        match c {
161            S::FieldName(e) => self.visit_field_name(e),
162            S::FieldBody(e) => self.visit_field_body(e),
163        }
164    }
165    fn visit_sub_option_list_item(&mut self, c: &'tree c::SubOptionListItem) {
166        use c::SubOptionListItem as S;
167        match c {
168            S::OptionGroup(e) => self.visit_option_group(e),
169            S::Description(e) => self.visit_description(e),
170        }
171    }
172    fn visit_sub_option(&mut self, c: &'tree c::SubOption) {
173        use c::SubOption as S;
174        match c {
175            S::OptionString(e) => self.visit_option_string(e),
176            S::OptionArgument(e) => self.visit_option_argument(e),
177        }
178    }
179    fn visit_sub_line_block(&mut self, c: &'tree c::SubLineBlock) {
180        use c::SubLineBlock as S;
181        match c {
182            S::LineBlock(e) => self.visit_line_block(e),
183            S::Line(e) => self.visit_line(e),
184        }
185    }
186    fn visit_sub_block_quote(&mut self, c: &'tree c::SubBlockQuote) {
187        use c::SubBlockQuote as S;
188        match c {
189            S::Attribution(e) => self.visit_attribution(e),
190            S::BodyElement(e) => self.visit_body_element(e),
191        }
192    }
193    fn visit_sub_footnote(&mut self, c: &'tree c::SubFootnote) {
194        use c::SubFootnote as S;
195        match c {
196            S::Label(e) => self.visit_label(e),
197            S::BodyElement(e) => self.visit_body_element(e),
198        }
199    }
200    fn visit_sub_figure(&mut self, c: &'tree c::SubFigure) {
201        use c::SubFigure as S;
202        match c {
203            S::Caption(e) => self.visit_caption(e),
204            S::Legend(e) => self.visit_legend(e),
205            S::BodyElement(e) => self.visit_body_element(e),
206        }
207    }
208    fn visit_sub_table(&mut self, c: &'tree c::SubTable) {
209        use c::SubTable as S;
210        match c {
211            S::Title(e) => self.visit_title(e),
212            S::TableGroup(e) => self.visit_table_group(e),
213        }
214    }
215    fn visit_sub_table_group(&mut self, c: &'tree c::SubTableGroup) {
216        use c::SubTableGroup as S;
217        match c {
218            S::TableColspec(e) => self.visit_table_colspec(e),
219            S::TableHead(e) => self.visit_table_head(e),
220            S::TableBody(e) => self.visit_table_body(e),
221        }
222    }
223
224    //////////////
225    // elements //
226    //////////////
227
228    //structual elements
229    fn visit_section(&mut self, e: &'tree e::Section) {
230        for c in e.children() {
231            self.visit_structural_sub_element(c);
232        }
233    }
234    fn visit_topic(&mut self, e: &'tree e::Topic) {
235        for c in e.children() {
236            self.visit_sub_topic(c);
237        }
238    }
239    fn visit_sidebar(&mut self, e: &'tree e::Sidebar) {
240        for c in e.children() {
241            self.visit_sub_sidebar(c);
242        }
243    }
244
245    //structural subelements
246    fn visit_title(&mut self, e: &'tree e::Title) {
247        for c in e.children() {
248            self.visit_text_or_inline_element(c);
249        }
250    }
251    fn visit_subtitle(&mut self, e: &'tree e::Subtitle) {
252        for c in e.children() {
253            self.visit_text_or_inline_element(c);
254        }
255    }
256    fn visit_decoration(&mut self, e: &'tree e::Decoration) {
257        for c in e.children() {
258            self.visit_decoration_element(c);
259        }
260    }
261    fn visit_docinfo(&mut self, e: &'tree e::Docinfo) {
262        for c in e.children() {
263            self.visit_bibliographic_element(c);
264        }
265    }
266    fn visit_transition(&mut self, _: &'tree e::Transition) {}
267
268    //bibliographic elements
269    fn visit_author(&mut self, e: &'tree e::Author) {
270        for c in e.children() {
271            self.visit_text_or_inline_element(c);
272        }
273    }
274    fn visit_authors(&mut self, e: &'tree e::Authors) {
275        for c in e.children() {
276            self.visit_author_info(c);
277        }
278    }
279    fn visit_organization(&mut self, e: &'tree e::Organization) {
280        for c in e.children() {
281            self.visit_text_or_inline_element(c);
282        }
283    }
284    fn visit_address(&mut self, e: &'tree e::Address) {
285        for c in e.children() {
286            self.visit_text_or_inline_element(c);
287        }
288    }
289    fn visit_contact(&mut self, e: &'tree e::Contact) {
290        for c in e.children() {
291            self.visit_text_or_inline_element(c);
292        }
293    }
294    fn visit_version(&mut self, e: &'tree e::Version) {
295        for c in e.children() {
296            self.visit_text_or_inline_element(c);
297        }
298    }
299    fn visit_revision(&mut self, e: &'tree e::Revision) {
300        for c in e.children() {
301            self.visit_text_or_inline_element(c);
302        }
303    }
304    fn visit_status(&mut self, e: &'tree e::Status) {
305        for c in e.children() {
306            self.visit_text_or_inline_element(c);
307        }
308    }
309    fn visit_date(&mut self, e: &'tree e::Date) {
310        for c in e.children() {
311            self.visit_text_or_inline_element(c);
312        }
313    }
314    fn visit_copyright(&mut self, e: &'tree e::Copyright) {
315        for c in e.children() {
316            self.visit_text_or_inline_element(c);
317        }
318    }
319    fn visit_field(&mut self, e: &'tree e::Field) {
320        for c in e.children() {
321            self.visit_sub_field(c);
322        }
323    }
324
325    //decoration elements
326    fn visit_header(&mut self, e: &'tree e::Header) {
327        for c in e.children() {
328            self.visit_body_element(c);
329        }
330    }
331    fn visit_footer(&mut self, e: &'tree e::Footer) {
332        for c in e.children() {
333            self.visit_body_element(c);
334        }
335    }
336
337    //simple body elements
338    fn visit_paragraph(&mut self, e: &'tree e::Paragraph) {
339        for c in e.children() {
340            self.visit_text_or_inline_element(c);
341        }
342    }
343    fn visit_literal_block(&mut self, e: &'tree e::LiteralBlock) {
344        for c in e.children() {
345            self.visit_text_or_inline_element(c);
346        }
347    }
348    fn visit_doctest_block(&mut self, e: &'tree e::DoctestBlock) {
349        for c in e.children() {
350            self.visit_text_or_inline_element(c);
351        }
352    }
353    fn visit_math_block(&mut self, e: &'tree e::MathBlock) {
354        for c in e.children() {
355            self.visit_string(c);
356        }
357    }
358    fn visit_rubric(&mut self, e: &'tree e::Rubric) {
359        for c in e.children() {
360            self.visit_text_or_inline_element(c);
361        }
362    }
363    fn visit_substitution_definition(&mut self, e: &'tree e::SubstitutionDefinition) {
364        for c in e.children() {
365            self.visit_text_or_inline_element(c);
366        }
367    }
368    fn visit_comment(&mut self, e: &'tree e::Comment) {
369        for c in e.children() {
370            self.visit_text_or_inline_element(c);
371        }
372    }
373    fn visit_pending(&mut self, _: &'tree e::Pending) {}
374    fn visit_target(&mut self, _: &'tree e::Target) {}
375    fn visit_raw(&mut self, e: &'tree e::Raw) {
376        for c in e.children() {
377            self.visit_string(c);
378        }
379    }
380    fn visit_image(&mut self, _: &'tree e::Image) {}
381
382    //compound body elements
383    fn visit_compound(&mut self, e: &'tree e::Compound) {
384        for c in e.children() {
385            self.visit_body_element(c);
386        }
387    }
388    fn visit_container(&mut self, e: &'tree e::Container) {
389        for c in e.children() {
390            self.visit_body_element(c);
391        }
392    }
393    fn visit_bullet_list(&mut self, e: &'tree e::BulletList) {
394        for c in e.children() {
395            self.visit_list_item(c);
396        }
397    }
398    fn visit_enumerated_list(&mut self, e: &'tree e::EnumeratedList) {
399        for c in e.children() {
400            self.visit_list_item(c);
401        }
402    }
403    fn visit_definition_list(&mut self, e: &'tree e::DefinitionList) {
404        for c in e.children() {
405            self.visit_definition_list_item(c);
406        }
407    }
408    fn visit_field_list(&mut self, e: &'tree e::FieldList) {
409        for c in e.children() {
410            self.visit_field(c);
411        }
412    }
413    fn visit_option_list(&mut self, e: &'tree e::OptionList) {
414        for c in e.children() {
415            self.visit_option_list_item(c);
416        }
417    }
418    fn visit_line_block(&mut self, e: &'tree e::LineBlock) {
419        for c in e.children() {
420            self.visit_sub_line_block(c);
421        }
422    }
423    fn visit_block_quote(&mut self, e: &'tree e::BlockQuote) {
424        for c in e.children() {
425            self.visit_sub_block_quote(c);
426        }
427    }
428    fn visit_admonition(&mut self, e: &'tree e::Admonition) {
429        for c in e.children() {
430            self.visit_sub_topic(c);
431        }
432    }
433    fn visit_attention(&mut self, e: &'tree e::Attention) {
434        for c in e.children() {
435            self.visit_body_element(c);
436        }
437    }
438    fn visit_hint(&mut self, e: &'tree e::Hint) {
439        for c in e.children() {
440            self.visit_body_element(c);
441        }
442    }
443    fn visit_note(&mut self, e: &'tree e::Note) {
444        for c in e.children() {
445            self.visit_body_element(c);
446        }
447    }
448    fn visit_caution(&mut self, e: &'tree e::Caution) {
449        for c in e.children() {
450            self.visit_body_element(c);
451        }
452    }
453    fn visit_danger(&mut self, e: &'tree e::Danger) {
454        for c in e.children() {
455            self.visit_body_element(c);
456        }
457    }
458    fn visit_error(&mut self, e: &'tree e::Error) {
459        for c in e.children() {
460            self.visit_body_element(c);
461        }
462    }
463    fn visit_important(&mut self, e: &'tree e::Important) {
464        for c in e.children() {
465            self.visit_body_element(c);
466        }
467    }
468    fn visit_tip(&mut self, e: &'tree e::Tip) {
469        for c in e.children() {
470            self.visit_body_element(c);
471        }
472    }
473    fn visit_warning(&mut self, e: &'tree e::Warning) {
474        for c in e.children() {
475            self.visit_body_element(c);
476        }
477    }
478    fn visit_footnote(&mut self, e: &'tree e::Footnote) {
479        for c in e.children() {
480            self.visit_sub_footnote(c);
481        }
482    }
483    fn visit_citation(&mut self, e: &'tree e::Citation) {
484        for c in e.children() {
485            self.visit_sub_footnote(c);
486        }
487    }
488    fn visit_system_message(&mut self, e: &'tree e::SystemMessage) {
489        for c in e.children() {
490            self.visit_body_element(c);
491        }
492    }
493    fn visit_figure(&mut self, e: &'tree e::Figure) {
494        for c in e.children() {
495            self.visit_sub_figure(c);
496        }
497    }
498    fn visit_table(&mut self, e: &'tree e::Table) {
499        for c in e.children() {
500            self.visit_sub_table(c);
501        }
502    }
503
504    //table elements
505    fn visit_table_group(&mut self, e: &'tree e::TableGroup) {
506        for c in e.children() {
507            self.visit_sub_table_group(c);
508        }
509    }
510    fn visit_table_head(&mut self, e: &'tree e::TableHead) {
511        for c in e.children() {
512            self.visit_table_row(c);
513        }
514    }
515    fn visit_table_body(&mut self, e: &'tree e::TableBody) {
516        for c in e.children() {
517            self.visit_table_row(c);
518        }
519    }
520    fn visit_table_row(&mut self, e: &'tree e::TableRow) {
521        for c in e.children() {
522            self.visit_table_entry(c);
523        }
524    }
525    fn visit_table_entry(&mut self, e: &'tree e::TableEntry) {
526        for c in e.children() {
527            self.visit_body_element(c);
528        }
529    }
530    fn visit_table_colspec(&mut self, _: &'tree e::TableColspec) {}
531
532    //body sub elements
533    fn visit_list_item(&mut self, e: &'tree e::ListItem) {
534        for c in e.children() {
535            self.visit_body_element(c);
536        }
537    }
538    fn visit_definition_list_item(&mut self, e: &'tree e::DefinitionListItem) {
539        for c in e.children() {
540            self.visit_sub_dl_item(c);
541        }
542    }
543    fn visit_term(&mut self, e: &'tree e::Term) {
544        for c in e.children() {
545            self.visit_text_or_inline_element(c);
546        }
547    }
548    fn visit_classifier(&mut self, e: &'tree e::Classifier) {
549        for c in e.children() {
550            self.visit_text_or_inline_element(c);
551        }
552    }
553    fn visit_definition(&mut self, e: &'tree e::Definition) {
554        for c in e.children() {
555            self.visit_body_element(c);
556        }
557    }
558    fn visit_field_name(&mut self, e: &'tree e::FieldName) {
559        for c in e.children() {
560            self.visit_text_or_inline_element(c);
561        }
562    }
563    fn visit_field_body(&mut self, e: &'tree e::FieldBody) {
564        for c in e.children() {
565            self.visit_body_element(c);
566        }
567    }
568    fn visit_option_list_item(&mut self, e: &'tree e::OptionListItem) {
569        for c in e.children() {
570            self.visit_sub_option_list_item(c);
571        }
572    }
573    fn visit_option_group(&mut self, e: &'tree e::OptionGroup) {
574        for c in e.children() {
575            self.visit_option(c);
576        }
577    }
578    fn visit_description(&mut self, e: &'tree e::Description) {
579        for c in e.children() {
580            self.visit_body_element(c);
581        }
582    }
583    fn visit_option(&mut self, e: &'tree e::Option_) {
584        for c in e.children() {
585            self.visit_sub_option(c);
586        }
587    }
588    fn visit_option_string(&mut self, e: &'tree e::OptionString) {
589        for c in e.children() {
590            self.visit_string(c);
591        }
592    }
593    fn visit_option_argument(&mut self, e: &'tree e::OptionArgument) {
594        for c in e.children() {
595            self.visit_string(c);
596        }
597    }
598    fn visit_line(&mut self, e: &'tree e::Line) {
599        for c in e.children() {
600            self.visit_text_or_inline_element(c);
601        }
602    }
603    fn visit_attribution(&mut self, e: &'tree e::Attribution) {
604        for c in e.children() {
605            self.visit_text_or_inline_element(c);
606        }
607    }
608    fn visit_label(&mut self, e: &'tree e::Label) {
609        for c in e.children() {
610            self.visit_text_or_inline_element(c);
611        }
612    }
613    fn visit_caption(&mut self, e: &'tree e::Caption) {
614        for c in e.children() {
615            self.visit_text_or_inline_element(c);
616        }
617    }
618    fn visit_legend(&mut self, e: &'tree e::Legend) {
619        for c in e.children() {
620            self.visit_body_element(c);
621        }
622    }
623
624    //inline elements
625    fn visit_string(&mut self, _: &'tree str) {}
626    fn visit_emphasis(&mut self, e: &'tree e::Emphasis) {
627        for c in e.children() {
628            self.visit_text_or_inline_element(c);
629        }
630    }
631    fn visit_literal(&mut self, e: &'tree e::Literal) {
632        for c in e.children() {
633            self.visit_string(c);
634        }
635    }
636    fn visit_reference(&mut self, e: &'tree e::Reference) {
637        for c in e.children() {
638            self.visit_text_or_inline_element(c);
639        }
640    }
641    fn visit_strong(&mut self, e: &'tree e::Strong) {
642        for c in e.children() {
643            self.visit_text_or_inline_element(c);
644        }
645    }
646    fn visit_footnote_reference(&mut self, e: &'tree e::FootnoteReference) {
647        for c in e.children() {
648            self.visit_text_or_inline_element(c);
649        }
650    }
651    fn visit_citation_reference(&mut self, e: &'tree e::CitationReference) {
652        for c in e.children() {
653            self.visit_text_or_inline_element(c);
654        }
655    }
656    fn visit_substitution_reference(&mut self, e: &'tree e::SubstitutionReference) {
657        for c in e.children() {
658            self.visit_text_or_inline_element(c);
659        }
660    }
661    fn visit_title_reference(&mut self, e: &'tree e::TitleReference) {
662        for c in e.children() {
663            self.visit_text_or_inline_element(c);
664        }
665    }
666    fn visit_abbreviation(&mut self, e: &'tree e::Abbreviation) {
667        for c in e.children() {
668            self.visit_text_or_inline_element(c);
669        }
670    }
671    fn visit_acronym(&mut self, e: &'tree e::Acronym) {
672        for c in e.children() {
673            self.visit_text_or_inline_element(c);
674        }
675    }
676    fn visit_superscript(&mut self, e: &'tree e::Superscript) {
677        for c in e.children() {
678            self.visit_text_or_inline_element(c);
679        }
680    }
681    fn visit_subscript(&mut self, e: &'tree e::Subscript) {
682        for c in e.children() {
683            self.visit_text_or_inline_element(c);
684        }
685    }
686    fn visit_inline(&mut self, e: &'tree e::Inline) {
687        for c in e.children() {
688            self.visit_text_or_inline_element(c);
689        }
690    }
691    fn visit_problematic(&mut self, e: &'tree e::Problematic) {
692        for c in e.children() {
693            self.visit_text_or_inline_element(c);
694        }
695    }
696    fn visit_generated(&mut self, e: &'tree e::Generated) {
697        for c in e.children() {
698            self.visit_text_or_inline_element(c);
699        }
700    }
701    fn visit_math(&mut self, e: &'tree e::Math) {
702        for c in e.children() {
703            self.visit_string(c);
704        }
705    }
706
707    //non-inline versions of inline elements
708    fn visit_target_inline(&mut self, e: &'tree e::TargetInline) {
709        for c in e.children() {
710            self.visit_string(c);
711        }
712    }
713    fn visit_raw_inline(&mut self, e: &'tree e::RawInline) {
714        for c in e.children() {
715            self.visit_string(c);
716        }
717    }
718    fn visit_image_inline(&mut self, _: &'tree e::ImageInline) {}
719}